You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Radarr/src/NzbDrone.Core.Test/MovieTests/MovieFolderPathBuilderFixtu...

95 lines
3.1 KiB

using System.IO;
using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Organizer;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MovieTests
{
[TestFixture]
public class MovieFolderPathBuilderFixture : CoreTest<MoviePathBuilder>
{
private Movie _movie;
[SetUp]
public void Setup()
{
_movie = Builder<Movie>.CreateNew()
.With(s => s.Title = "Movie Title")
.With(s => s.Path = @"C:\Test\Movies\Movie.Title".AsOsAgnostic())
.With(s => s.RootFolderPath = null)
.Build();
}
public void GivenMovieFolderName(string name)
{
Mocker.GetMock<IBuildFileNames>()
.Setup(s => s.GetMovieFolder(_movie, null))
.Returns(name);
}
public void GivenExistingRootFolder(string rootFolder)
{
Mocker.GetMock<IRootFolderService>()
.Setup(s => s.GetBestRootFolderPath(It.IsAny<string>()))
.Returns(rootFolder);
}
[Test]
public void should_create_new_movie_path()
{
var rootFolder = @"C:\Test\Movies2".AsOsAgnostic();
GivenMovieFolderName(_movie.Title);
_movie.RootFolderPath = rootFolder;
Subject.BuildPath(_movie, false).Should().Be(Path.Combine(rootFolder, _movie.Title));
}
[Test]
public void should_reuse_existing_relative_folder_name()
{
var folderName = Path.GetFileName(_movie.Path);
var rootFolder = @"C:\Test\Movies2".AsOsAgnostic();
GivenExistingRootFolder(Path.GetDirectoryName(_movie.Path));
GivenMovieFolderName(_movie.Title);
_movie.RootFolderPath = rootFolder;
Subject.BuildPath(_movie, true).Should().Be(Path.Combine(rootFolder, folderName));
}
[Test]
public void should_reuse_existing_relative_folder_structure()
{
var existingRootFolder = @"C:\Test\Movies".AsOsAgnostic();
var existingRelativePath = @"M\Movie.Title";
var rootFolder = @"C:\Test\Movies2".AsOsAgnostic();
GivenExistingRootFolder(existingRootFolder);
GivenMovieFolderName(_movie.Title);
_movie.RootFolderPath = rootFolder;
_movie.Path = Path.Combine(existingRootFolder, existingRelativePath);
Subject.BuildPath(_movie, true).Should().Be(Path.Combine(rootFolder, existingRelativePath));
}
[Test]
public void should_use_built_path_for_new_movie()
{
var rootFolder = @"C:\Test\Movies2".AsOsAgnostic();
GivenMovieFolderName(_movie.Title);
_movie.RootFolderPath = rootFolder;
_movie.Path = null;
Subject.BuildPath(_movie, true).Should().Be(Path.Combine(rootFolder, _movie.Title));
}
}
}