Organize TrackImport Directory and Fix Tests (#72)

* Organize TrackImport Folder and Fix Tests

* Remove Commented Out Line

* Remove Old Code
This commit is contained in:
Qstick
2017-08-30 22:42:40 -04:00
committed by GitHub
parent ffc2fb5f60
commit bcd72367d9
31 changed files with 177 additions and 371 deletions
@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using FizzWare.NBuilder;
@@ -7,7 +7,7 @@ using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.EpisodeImport;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Music;
using NzbDrone.Test.Common;
@@ -360,4 +360,4 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
.Verify(v => v.GetImportDecisions(It.Is<List<string>>(l => l.Count == 1), _artist), Times.Once());
}
}
}
}
@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using FizzWare.NBuilder;
@@ -7,7 +7,6 @@ using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.MediaFiles.EpisodeImport;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Qualities;
@@ -376,4 +375,4 @@ namespace NzbDrone.Core.Test.MediaFiles
Times.Once());
}
}
}
}
@@ -1,11 +1,11 @@
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.EpisodeImport;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles;
@@ -15,7 +15,7 @@ using NzbDrone.Core.Music;
using NzbDrone.Test.Common;
using FizzWare.NBuilder;
namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport
namespace NzbDrone.Core.Test.MediaFiles.TrackImport
{
[TestFixture]
public class ImportDecisionMakerFixture : CoreTest<ImportDecisionMaker>
@@ -318,33 +318,6 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport
.Verify(c => c.GetLocalTrack(It.IsAny<string>(), It.IsAny<Artist>(), null), Times.Never());
}
//[Test]
//public void should_use_folder_when_only_one_video_file_and_a_sample() /// WE DONT HAVE SAMPLES IN MUSIC
//{
// var audioFiles = new[]
// {
// @"C:\Test\Unsorted\Artist.Name.S01E01\S01E01.mkv".AsOsAgnostic(),
// @"C:\Test\Unsorted\Artist.Name.S01E01\S01E01.sample.mkv".AsOsAgnostic()
// };
// GivenSpecifications(_pass1);
// GivenVideoFiles(audioFiles.ToList());
// Mocker.GetMock<IDetectSample>()
// .Setup(s => s.IsSample(_artist, It.IsAny<QualityModel>(), It.Is<string>(c => c.Contains("sample")), It.IsAny<long>(), It.IsAny<bool>()))
// .Returns(true);
// var folderInfo = Parser.Parser.ParseMusicTitle("Artist.Name.S01E01");
// Subject.GetImportDecisions(_audioFiles, _artist, folderInfo);
// Mocker.GetMock<IParsingService>()
// .Verify(c => c.GetLocalTrack(It.IsAny<string>(), It.IsAny<Artist>(), It.IsAny<ParsedTrackInfo>()), Times.Exactly(2));
// Mocker.GetMock<IParsingService>()
// .Verify(c => c.GetLocalTrack(It.IsAny<string>(), It.IsAny<Artist>(), null), Times.Never());
//}
[Test]
public void should_not_use_folder_name_if_file_name_is_scene_name()
{
@@ -1,17 +1,17 @@
using System;
using System;
using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.MediaFiles.EpisodeImport;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.MediaFiles.MediaInfo;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Tv;
namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport
namespace NzbDrone.Core.Test.MediaFiles.TrackImport
{
[TestFixture]
public class SampleServiceFixture : CoreTest<DetectSample>
@@ -1,4 +1,4 @@
using System.IO;
using System.IO;
using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
@@ -6,48 +6,46 @@ using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.MediaFiles.EpisodeImport.Specifications;
using NzbDrone.Core.MediaFiles.TrackImport.Specifications;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Music;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
{
[TestFixture]
public class FreeSpaceSpecificationFixture : CoreTest<FreeSpaceSpecification>
{
private Series _series;
private LocalEpisode _localEpisode;
private Artist _artist;
private LocalTrack _localTrack;
private string _rootFolder;
[SetUp]
public void Setup()
{
_rootFolder = @"C:\Test\TV".AsOsAgnostic();
_rootFolder = @"C:\Test\Music".AsOsAgnostic();
_series = Builder<Series>.CreateNew()
.With(s => s.SeriesType = SeriesTypes.Standard)
.With(s => s.Path = Path.Combine(_rootFolder, "30 Rock"))
_artist = Builder<Artist>.CreateNew()
.With(s => s.Path = Path.Combine(_rootFolder, "Alice in Chains"))
.Build();
var episodes = Builder<Episode>.CreateListOfSize(1)
var tracks = Builder<Track>.CreateListOfSize(1)
.All()
.With(e => e.SeasonNumber = 1)
.Build()
.ToList();
_localEpisode = new LocalEpisode
_localTrack = new LocalTrack
{
Path = @"C:\Test\Unsorted\30 Rock\30.rock.s01e01.avi".AsOsAgnostic(),
Episodes = episodes,
Series = _series
Path = @"C:\Test\Unsorted\Alice in Chains\Alice in Chains - track1.mp3".AsOsAgnostic(),
Tracks = tracks,
Artist = _artist
};
}
private void GivenFileSize(long size)
{
_localEpisode.Size = size;
_localTrack.Size = size;
}
private void GivenFreeSpace(long? size)
@@ -63,7 +61,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
GivenFileSize(100.Megabytes());
GivenFreeSpace(80.Megabytes());
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse();
ExceptionVerification.ExpectedWarns(1);
}
@@ -73,7 +71,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
GivenFileSize(100.Megabytes());
GivenFreeSpace(150.Megabytes());
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse();
ExceptionVerification.ExpectedWarns(1);
}
@@ -83,16 +81,16 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
GivenFileSize(100.Megabytes());
GivenFreeSpace(1.Gigabytes());
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
public void should_use_series_paths_parent_for_free_space_check()
public void should_use_artist_paths_parent_for_free_space_check()
{
GivenFileSize(100.Megabytes());
GivenFreeSpace(1.Gigabytes());
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
Mocker.GetMock<IDiskProvider>()
.Verify(v => v.GetAvailableSpace(_rootFolder), Times.Once());
@@ -104,7 +102,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
GivenFileSize(100.Megabytes());
GivenFreeSpace(null);
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
@@ -116,16 +114,16 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
.Setup(s => s.GetAvailableSpace(It.IsAny<string>()))
.Throws(new TestException());
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
ExceptionVerification.ExpectedErrors(1);
}
[Test]
public void should_skip_check_for_files_under_series_folder()
public void should_skip_check_for_files_under_artist_folder()
{
_localEpisode.ExistingFile = true;
_localTrack.ExistingFile = true;
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
Mocker.GetMock<IDiskProvider>()
.Verify(s => s.GetAvailableSpace(It.IsAny<string>()), Times.Never());
@@ -140,7 +138,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
.Setup(s => s.GetAvailableSpace(It.IsAny<string>()))
.Returns(freeSpace);
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
@@ -150,7 +148,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
.Setup(s => s.SkipFreeSpaceCheckWhenImporting)
.Returns(true);
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
}
}
@@ -1,22 +1,22 @@
using System;
using System;
using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.MediaFiles.EpisodeImport.Specifications;
using NzbDrone.Core.MediaFiles.TrackImport.Specifications;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Music;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
{
[TestFixture]
public class NotUnpackingSpecificationFixture : CoreTest<NotUnpackingSpecification>
{
private LocalEpisode _localEpisode;
private LocalTrack _localTrack;
[SetUp]
public void Setup()
@@ -25,17 +25,17 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
.SetupGet(s => s.DownloadClientWorkingFolders)
.Returns("_UNPACK_|_FAILED_");
_localEpisode = new LocalEpisode
_localTrack = new LocalTrack
{
Path = @"C:\Test\Unsorted TV\30.rock\30.rock.s01e01.avi".AsOsAgnostic(),
Path = @"C:\Test\Unsorted Music\Kid.Rock\Kid.Rock.Cowboy.mp3".AsOsAgnostic(),
Size = 100,
Series = Builder<Series>.CreateNew().Build()
Artist = Builder<Artist>.CreateNew().Build()
};
}
private void GivenInWorkingFolder()
{
_localEpisode.Path = @"C:\Test\Unsorted TV\_UNPACK_30.rock\someSubFolder\30.rock.s01e01.avi".AsOsAgnostic();
_localTrack.Path = @"C:\Test\Unsorted Music\_UNPACK_Kid.Rock\someSubFolder\Kid.Rock.Cowboy.mp3".AsOsAgnostic();
}
private void GivenLastWriteTimeUtc(DateTime time)
@@ -48,7 +48,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
[Test]
public void should_return_true_if_not_in_working_folder()
{
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
@@ -59,7 +59,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
GivenInWorkingFolder();
GivenLastWriteTimeUtc(DateTime.UtcNow.AddHours(-1));
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
@@ -68,7 +68,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
GivenInWorkingFolder();
GivenLastWriteTimeUtc(DateTime.UtcNow);
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse();
}
[Test]
@@ -79,7 +79,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
GivenInWorkingFolder();
GivenLastWriteTimeUtc(DateTime.UtcNow.AddDays(-5));
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse();
}
}
}
@@ -1,156 +1,155 @@
using System.Linq;
using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using Marr.Data;
using NUnit.Framework;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.EpisodeImport.Specifications;
using NzbDrone.Core.MediaFiles.TrackImport.Specifications;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Music;
namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
{
[TestFixture]
public class UpgradeSpecificationFixture : CoreTest<UpgradeSpecification>
{
private Series _series;
private LocalEpisode _localEpisode;
private Artist _artist;
private LocalTrack _localTrack;
[SetUp]
public void Setup()
{
_series = Builder<Series>.CreateNew()
.With(s => s.SeriesType = SeriesTypes.Standard)
_artist = Builder<Artist>.CreateNew()
.With(e => e.Profile = new Profile { Items = Qualities.QualityFixture.GetDefaultQualities() })
.Build();
_localEpisode = new LocalEpisode
_localTrack = new LocalTrack
{
Path = @"C:\Test\30 Rock\30.rock.s01e01.avi",
Path = @"C:\Test\Imagine Dragons\Imagine.Dragons.Song.1.mp3",
Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1)),
Series = _series
Artist = _artist
};
}
[Test]
public void should_return_true_if_no_existing_episodeFile()
public void should_return_true_if_no_existing_trackFile()
{
_localEpisode.Episodes = Builder<Episode>.CreateListOfSize(1)
_localTrack.Tracks = Builder<Track>.CreateListOfSize(1)
.All()
.With(e => e.EpisodeFileId = 0)
.With(e => e.EpisodeFile = null)
.With(e => e.TrackFileId = 0)
.With(e => e.TrackFile = null)
.Build()
.ToList();
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_no_existing_episodeFile_for_multi_episodes()
public void should_return_true_if_no_existing_trackFile_for_multi_tracks()
{
_localEpisode.Episodes = Builder<Episode>.CreateListOfSize(2)
_localTrack.Tracks = Builder<Track>.CreateListOfSize(2)
.All()
.With(e => e.EpisodeFileId = 0)
.With(e => e.EpisodeFile = null)
.With(e => e.TrackFileId = 0)
.With(e => e.TrackFile = null)
.Build()
.ToList();
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_upgrade_for_existing_episodeFile()
public void should_return_true_if_upgrade_for_existing_trackFile()
{
_localEpisode.Episodes = Builder<Episode>.CreateListOfSize(1)
_localTrack.Tracks = Builder<Track>.CreateListOfSize(1)
.All()
.With(e => e.EpisodeFileId = 1)
.With(e => e.EpisodeFile = new LazyLoaded<EpisodeFile>(
new EpisodeFile
.With(e => e.TrackFileId = 1)
.With(e => e.TrackFile = new LazyLoaded<TrackFile>(
new TrackFile
{
Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1))
Quality = new QualityModel(Quality.MP3_192, new Revision(version: 1))
}))
.Build()
.ToList();
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_upgrade_for_existing_episodeFile_for_multi_episodes()
public void should_return_true_if_upgrade_for_existing_trackFile_for_multi_tracks()
{
_localEpisode.Episodes = Builder<Episode>.CreateListOfSize(2)
_localTrack.Tracks = Builder<Track>.CreateListOfSize(2)
.All()
.With(e => e.EpisodeFileId = 1)
.With(e => e.EpisodeFile = new LazyLoaded<EpisodeFile>(
new EpisodeFile
.With(e => e.TrackFileId = 1)
.With(e => e.TrackFile = new LazyLoaded<TrackFile>(
new TrackFile
{
Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1))
Quality = new QualityModel(Quality.MP3_192, new Revision(version: 1))
}))
.Build()
.ToList();
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue();
}
[Test]
public void should_return_false_if_not_an_upgrade_for_existing_episodeFile()
public void should_return_false_if_not_an_upgrade_for_existing_trackFile()
{
_localEpisode.Episodes = Builder<Episode>.CreateListOfSize(1)
_localTrack.Tracks = Builder<Track>.CreateListOfSize(1)
.All()
.With(e => e.EpisodeFileId = 1)
.With(e => e.EpisodeFile = new LazyLoaded<EpisodeFile>(
new EpisodeFile
.With(e => e.TrackFileId = 1)
.With(e => e.TrackFile = new LazyLoaded<TrackFile>(
new TrackFile
{
Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1))
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1))
}))
.Build()
.ToList();
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_not_an_upgrade_for_existing_episodeFile_for_multi_episodes()
public void should_return_false_if_not_an_upgrade_for_existing_trackFile_for_multi_tracks()
{
_localEpisode.Episodes = Builder<Episode>.CreateListOfSize(2)
_localTrack.Tracks = Builder<Track>.CreateListOfSize(2)
.All()
.With(e => e.EpisodeFileId = 1)
.With(e => e.EpisodeFile = new LazyLoaded<EpisodeFile>(
new EpisodeFile
.With(e => e.TrackFileId = 1)
.With(e => e.TrackFile = new LazyLoaded<TrackFile>(
new TrackFile
{
Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1))
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1))
}))
.Build()
.ToList();
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_not_an_upgrade_for_one_existing_episodeFile_for_multi_episode()
public void should_return_false_if_not_an_upgrade_for_one_existing_trackFile_for_multi_track()
{
_localEpisode.Episodes = Builder<Episode>.CreateListOfSize(2)
_localTrack.Tracks = Builder<Track>.CreateListOfSize(2)
.TheFirst(1)
.With(e => e.EpisodeFileId = 1)
.With(e => e.EpisodeFile = new LazyLoaded<EpisodeFile>(
new EpisodeFile
.With(e => e.TrackFileId = 1)
.With(e => e.TrackFile = new LazyLoaded<TrackFile>(
new TrackFile
{
Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1))
Quality = new QualityModel(Quality.MP3_192, new Revision(version: 1))
}))
.TheNext(1)
.With(e => e.EpisodeFileId = 2)
.With(e => e.EpisodeFile = new LazyLoaded<EpisodeFile>(
new EpisodeFile
.With(e => e.TrackFileId = 2)
.With(e => e.TrackFile = new LazyLoaded<TrackFile>(
new TrackFile
{
Quality = new QualityModel(Quality.MP3_256, new Revision(version: 1))
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1))
}))
.Build()
.ToList();
Subject.IsSatisfiedBy(_localEpisode).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse();
}
}
}