using System.Linq; using FizzWare.NBuilder; using FluentAssertions; using Marr.Data; using Moq; using NUnit.Framework; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles.EpisodeImport.Specifications; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Tv; using NzbDrone.Test.Common; namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests { [TestFixture] public class NotExistingFileSpecificationFixture : CoreTest { private LocalEpisode _localEpisode; [SetUp] public void Setup() { _localEpisode = new LocalEpisode { Path = @"C:\Test\30 Rock\30.rock.s01e01.avi".AsOsAgnostic(), Size = 100 }; } [Test] public void should_return_false_if_path_and_size_are_the_same() { _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Path = @"C:\Test\30 Rock\30.rock.s01e01.avi".AsOsAgnostic(), Size = 100 })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeFalse(); } [Test] public void should_return_false_if_filename_and_size_are_the_same() { _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Path = @"C:\Test\30 Rock\Season 01\30.rock.s01e01.avi".AsOsAgnostic(), Size = 100 })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeFalse(); } [Test] public void should_return_true_if_no_existing_file() { _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 0) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); } [Test] public void should_return_true_if_size_is_different() { _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Path = @"C:\Test\30 Rock\Season 01\30.rock.s01e01.avi".AsOsAgnostic(), Size = 50 })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); } [Test] public void should_return_true_if_file_names_are_different() { _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Path = @"C:\Test\30 Rock\Season 01\30.rock.s01e01.pilot.avi".AsOsAgnostic(), Size = 100 })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); } [Test] public void should_return_false_if_exact_path_exists_in_db() { Mocker.GetMock() .Setup(s => s.Exists(It.IsAny())) .Returns(true); _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Path = @"C:\Test\30 Rock\Season 01\30.rock.s01e01.pilot.avi".AsOsAgnostic(), Size = 100 })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeFalse(); } } }