New: Readarr 0.1

This commit is contained in:
ta264
2020-05-06 21:14:11 +01:00
parent 476f2d6047
commit 08496c82af
911 changed files with 14837 additions and 24442 deletions
@@ -1,212 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.DecisionEngineTests
{
[TestFixture]
public class AcceptableSizeSpecificationFixture : CoreTest<AcceptableSizeSpecification>
{
private const int HIGH_KBPS_BITRATE = 1600;
private const int TWENTY_MINUTE_EP_MILLIS = 20 * 60 * 1000;
private const int FORTY_FIVE_MINUTE_LP_MILLIS = 45 * 60 * 1000;
private RemoteAlbum _parseResultMultiSet;
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private Artist _artist;
private QualityDefinition _qualityType;
private Album AlbumBuilder(int id = 0)
{
return new Album
{
Id = id,
AlbumReleases = new List<AlbumRelease>
{
new AlbumRelease
{
Duration = 0,
Monitored = true
}
}
};
}
[SetUp]
public void Setup()
{
_artist = Builder<Artist>.CreateNew()
.Build();
_parseResultMultiSet = new RemoteAlbum
{
Artist = _artist,
Release = new ReleaseInfo(),
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)) },
Albums = new List<Album> { AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder() }
};
_parseResultMulti = new RemoteAlbum
{
Artist = _artist,
Release = new ReleaseInfo(),
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)) },
Albums = new List<Album> { AlbumBuilder(), AlbumBuilder() }
};
_parseResultSingle = new RemoteAlbum
{
Artist = _artist,
Release = new ReleaseInfo(),
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)) },
Albums = new List<Album> { AlbumBuilder(2) }
};
Mocker.GetMock<IQualityDefinitionService>()
.Setup(v => v.Get(It.IsAny<Quality>()))
.Returns<Quality>(v => Quality.DefaultQualityDefinitions.First(c => c.Quality == v));
_qualityType = Builder<QualityDefinition>.CreateNew()
.With(q => q.MinSize = 150)
.With(q => q.MaxSize = 210)
.With(q => q.Quality = Quality.MP3_192)
.Build();
Mocker.GetMock<IQualityDefinitionService>().Setup(s => s.Get(Quality.MP3_192)).Returns(_qualityType);
Mocker.GetMock<IAlbumService>().Setup(
s => s.GetAlbumsByArtist(It.IsAny<int>()))
.Returns(new List<Album>()
{
AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(),
AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(2), AlbumBuilder()
});
}
private void GivenLastAlbum()
{
Mocker.GetMock<IAlbumService>().Setup(
s => s.GetAlbumsByArtist(It.IsAny<int>()))
.Returns(new List<Album>
{
AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(),
AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(), AlbumBuilder(2)
});
}
[TestCase(TWENTY_MINUTE_EP_MILLIS, 20, false)]
[TestCase(TWENTY_MINUTE_EP_MILLIS, 25, true)]
[TestCase(TWENTY_MINUTE_EP_MILLIS, 35, false)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 45, false)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 55, true)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 75, false)]
public void single_album(int runtime, int sizeInMegaBytes, bool expectedResult)
{
_parseResultSingle.Albums.Select(c =>
{
c.AlbumReleases.Value[0].Duration = runtime;
return c;
}).ToList();
_parseResultSingle.Artist = _artist;
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
}
[TestCase(TWENTY_MINUTE_EP_MILLIS, 20 * 2, false)]
[TestCase(TWENTY_MINUTE_EP_MILLIS, 25 * 2, true)]
[TestCase(TWENTY_MINUTE_EP_MILLIS, 35 * 2, false)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 45 * 2, false)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 55 * 2, true)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 75 * 2, false)]
public void multi_album(int runtime, int sizeInMegaBytes, bool expectedResult)
{
_parseResultMulti.Albums.Select(c =>
{
c.AlbumReleases.Value[0].Duration = runtime;
return c;
}).ToList();
_parseResultMulti.Artist = _artist;
_parseResultMulti.Release.Size = sizeInMegaBytes.Megabytes();
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(expectedResult);
}
[TestCase(TWENTY_MINUTE_EP_MILLIS, 20 * 6, false)]
[TestCase(TWENTY_MINUTE_EP_MILLIS, 25 * 6, true)]
[TestCase(TWENTY_MINUTE_EP_MILLIS, 35 * 6, false)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 45 * 6, false)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 55 * 6, true)]
[TestCase(FORTY_FIVE_MINUTE_LP_MILLIS, 75 * 6, false)]
public void multiset_album(int runtime, int sizeInMegaBytes, bool expectedResult)
{
_parseResultMultiSet.Albums.Select(c =>
{
c.AlbumReleases.Value[0].Duration = runtime;
return c;
}).ToList();
_parseResultMultiSet.Artist = _artist;
_parseResultMultiSet.Release.Size = sizeInMegaBytes.Megabytes();
Subject.IsSatisfiedBy(_parseResultMultiSet, null).Accepted.Should().Be(expectedResult);
}
[Test]
public void should_return_true_if_size_is_zero()
{
GivenLastAlbum();
_parseResultSingle.Albums.Select(c =>
{
c.AlbumReleases.Value[0].Duration = TWENTY_MINUTE_EP_MILLIS;
return c;
}).ToList();
_parseResultSingle.Artist = _artist;
_parseResultSingle.Release.Size = 0;
_qualityType.MinSize = 150;
_qualityType.MaxSize = 210;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_unlimited_20_minute()
{
GivenLastAlbum();
_parseResultSingle.Albums.Select(c =>
{
c.AlbumReleases.Value[0].Duration = TWENTY_MINUTE_EP_MILLIS;
return c;
}).ToList();
_parseResultSingle.Artist = _artist;
_parseResultSingle.Release.Size = (HIGH_KBPS_BITRATE * 128) * (TWENTY_MINUTE_EP_MILLIS / 1000);
_qualityType.MaxSize = null;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_unlimited_45_minute()
{
GivenLastAlbum();
_parseResultSingle.Albums.Select(c =>
{
c.AlbumReleases.Value[0].Duration = FORTY_FIVE_MINUTE_LP_MILLIS;
return c;
}).ToList();
_parseResultSingle.Artist = _artist;
_parseResultSingle.Release.Size = (HIGH_KBPS_BITRATE * 128) * (FORTY_FIVE_MINUTE_LP_MILLIS / 1000);
_qualityType.MaxSize = null;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
}
}
@@ -22,29 +22,29 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private const int FIRST_ALBUM_ID = 1;
private const string TITLE = "Some.Artist-Some.Album-2018-320kbps-CD-Readarr";
private Artist _artist;
private Author _artist;
private QualityModel _mp3;
private QualityModel _flac;
private RemoteAlbum _remoteAlbum;
private List<History.History> _history;
private TrackFile _firstFile;
private BookFile _firstFile;
[SetUp]
public void Setup()
{
var singleAlbumList = new List<Album>
var singleAlbumList = new List<Book>
{
new Album
new Book
{
Id = FIRST_ALBUM_ID,
Title = "Some Album"
}
};
_artist = Builder<Artist>.CreateNew()
_artist = Builder<Author>.CreateNew()
.Build();
_firstFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
_mp3 = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_flac = new QualityModel(Quality.FLAC, new Revision(version: 1));
@@ -70,7 +70,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Returns(new List<TrackFile> { _firstFile });
.Returns(new List<BookFile> { _firstFile });
}
private void GivenCdhDisabled()
@@ -105,7 +105,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Returns(new List<TrackFile> { });
.Returns(new List<BookFile> { });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
@@ -19,10 +19,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.CutoffNotMet(
new QualityProfile
{
Cutoff = Quality.MP3_256.Id,
Cutoff = Quality.MP3_320.Id,
Items = Qualities.QualityFixture.GetDefaultQualities()
},
new List<QualityModel> { new QualityModel(Quality.MP3_192, new Revision(version: 2)) },
new List<QualityModel> { new QualityModel(Quality.Unknown, new Revision(version: 2)) },
NoPreferredWordScore).Should().BeTrue();
}
@@ -32,10 +32,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.CutoffNotMet(
new QualityProfile
{
Cutoff = Quality.MP3_256.Id,
Cutoff = Quality.MP3_320.Id,
Items = Qualities.QualityFixture.GetDefaultQualities()
},
new List<QualityModel> { new QualityModel(Quality.MP3_256, new Revision(version: 2)) },
new List<QualityModel> { new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
NoPreferredWordScore).Should().BeFalse();
}
@@ -45,7 +45,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.CutoffNotMet(
new QualityProfile
{
Cutoff = Quality.MP3_256.Id,
Cutoff = Quality.AZW3.Id,
Items = Qualities.QualityFixture.GetDefaultQualities()
},
new List<QualityModel> { new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
@@ -20,17 +20,17 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[SetUp]
public void Setup()
{
var artist = Builder<Artist>.CreateNew().With(s => s.Id = 1234).Build();
var artist = Builder<Author>.CreateNew().With(s => s.Id = 1234).Build();
_remoteAlbum = new RemoteAlbum
{
ParsedAlbumInfo = new ParsedAlbumInfo
{
Discography = true
},
Albums = Builder<Album>.CreateListOfSize(3)
Albums = Builder<Book>.CreateListOfSize(3)
.All()
.With(e => e.ReleaseDate = DateTime.UtcNow.AddDays(-8))
.With(s => s.ArtistId = artist.Id)
.With(s => s.AuthorId = artist.Id)
.BuildList(),
Artist = artist,
Release = new ReleaseInfo
@@ -40,7 +40,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
};
Mocker.GetMock<IAlbumService>().Setup(s => s.AlbumsBetweenDates(It.IsAny<DateTime>(), It.IsAny<DateTime>(), false))
.Returns(new List<Album>());
.Returns(new List<Book>());
}
[Test]
@@ -59,8 +59,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_reports = new List<ReleaseInfo> { new ReleaseInfo { Title = "Coldplay-A Head Full Of Dreams-CD-FLAC-2015-PERFECT" } };
_remoteAlbum = new RemoteAlbum
{
Artist = new Artist(),
Albums = new List<Album> { new Album() }
Artist = new Author(),
Albums = new List<Book> { new Book() }
};
Mocker.GetMock<IParsingService>()
@@ -231,12 +231,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_only_include_reports_for_requested_albums()
{
var artist = Builder<Artist>.CreateNew().Build();
var artist = Builder<Author>.CreateNew().Build();
var albums = Builder<Album>.CreateListOfSize(2)
var albums = Builder<Book>.CreateListOfSize(2)
.All()
.With(v => v.ArtistId, artist.Id)
.With(v => v.Artist, new LazyLoaded<Artist>(artist))
.With(v => v.AuthorId, artist.Id)
.With(v => v.Author, new LazyLoaded<Author>(artist))
.BuildList();
var criteria = new ArtistSearchCriteria { Albums = albums.Take(1).ToList() };
@@ -289,7 +289,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Albums = new List<Album>();
_remoteAlbum.Albums = new List<Book>();
var result = Subject.GetRssDecision(_reports);
@@ -17,23 +17,23 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class EarlyReleaseSpecificationFixture : TestBase<EarlyReleaseSpecification>
{
private Artist _artist;
private Album _album1;
private Album _album2;
private Author _artist;
private Book _album1;
private Book _album2;
private RemoteAlbum _remoteAlbum;
private IndexerDefinition _indexerDefinition;
[SetUp]
public void Setup()
{
_artist = Builder<Artist>.CreateNew().With(s => s.Id = 1).Build();
_album1 = Builder<Album>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
_album2 = Builder<Album>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
_artist = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
_album1 = Builder<Book>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
_album2 = Builder<Book>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
_remoteAlbum = new RemoteAlbum
{
Artist = _artist,
Albums = new List<Album> { _album1 },
Albums = new List<Book> { _album1 },
Release = new TorrentInfo
{
IndexerId = 1,
@@ -29,7 +29,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private RemoteAlbum _parseResultSingle;
private QualityModel _upgradableQuality;
private QualityModel _notupgradableQuality;
private Artist _fakeArtist;
private Author _fakeArtist;
[SetUp]
public void Setup()
@@ -37,15 +37,15 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Mocker.Resolve<UpgradableSpecification>();
_upgradeHistory = Mocker.Resolve<HistorySpecification>();
var singleAlbumList = new List<Album> { new Album { Id = FIRST_ALBUM_ID } };
var doubleAlbumList = new List<Album>
var singleAlbumList = new List<Book> { new Book { Id = FIRST_ALBUM_ID } };
var doubleAlbumList = new List<Book>
{
new Album { Id = FIRST_ALBUM_ID },
new Album { Id = SECOND_ALBUM_ID },
new Album { Id = 3 }
new Book { Id = FIRST_ALBUM_ID },
new Book { Id = SECOND_ALBUM_ID },
new Book { Id = 3 }
};
_fakeArtist = Builder<Artist>.CreateNew()
_fakeArtist = Builder<Author>.CreateNew()
.With(c => c.QualityProfile = new QualityProfile
{
UpgradeAllowed = true,
@@ -57,18 +57,18 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultMulti = new RemoteAlbum
{
Artist = _fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
{
Artist = _fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = singleAlbumList
};
_upgradableQuality = new QualityModel(Quality.MP3_192, new Revision(version: 1));
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_notupgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
Mocker.GetMock<IConfigService>()
@@ -76,9 +76,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Returns(true);
}
private void GivenMostRecentForAlbum(int albumId, string downloadId, QualityModel quality, DateTime date, HistoryEventType eventType)
private void GivenMostRecentForAlbum(int bookId, string downloadId, QualityModel quality, DateTime date, HistoryEventType eventType)
{
Mocker.GetMock<IHistoryService>().Setup(s => s.MostRecentForAlbum(albumId))
Mocker.GetMock<IHistoryService>().Setup(s => s.MostRecentForAlbum(bookId))
.Returns(new History.History { DownloadId = downloadId, Quality = quality, Date = date, EventType = eventType });
}
@@ -18,24 +18,24 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private Artist _fakeArtist;
private Album _firstAlbum;
private Album _secondAlbum;
private Author _fakeArtist;
private Book _firstAlbum;
private Book _secondAlbum;
[SetUp]
public void Setup()
{
_monitoredAlbumSpecification = Mocker.Resolve<MonitoredAlbumSpecification>();
_fakeArtist = Builder<Artist>.CreateNew()
_fakeArtist = Builder<Author>.CreateNew()
.With(c => c.Monitored = true)
.Build();
_firstAlbum = new Album { Monitored = true };
_secondAlbum = new Album { Monitored = true };
_firstAlbum = new Book { Monitored = true };
_secondAlbum = new Book { Monitored = true };
var singleAlbumList = new List<Album> { _firstAlbum };
var doubleAlbumList = new List<Album> { _firstAlbum, _secondAlbum };
var singleAlbumList = new List<Book> { _firstAlbum };
var doubleAlbumList = new List<Book> { _firstAlbum, _secondAlbum };
_parseResultMulti = new RemoteAlbum
{
@@ -27,20 +27,20 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenPreferredDownloadProtocol(DownloadProtocol.Usenet);
}
private Album GivenAlbum(int id)
private Book GivenAlbum(int id)
{
return Builder<Album>.CreateNew()
return Builder<Book>.CreateNew()
.With(e => e.Id = id)
.Build();
}
private RemoteAlbum GivenRemoteAlbum(List<Album> albums, QualityModel quality, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
private RemoteAlbum GivenRemoteAlbum(List<Book> albums, QualityModel quality, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
{
var remoteAlbum = new RemoteAlbum();
remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo();
remoteAlbum.ParsedAlbumInfo.Quality = quality;
remoteAlbum.Albums = new List<Album>();
remoteAlbum.Albums = new List<Book>();
remoteAlbum.Albums.AddRange(albums);
remoteAlbum.Release = new ReleaseInfo();
@@ -48,7 +48,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
remoteAlbum.Release.Size = size;
remoteAlbum.Release.DownloadProtocol = downloadProtocol;
remoteAlbum.Artist = Builder<Artist>.CreateNew()
remoteAlbum.Artist = Builder<Author>.CreateNew()
.With(e => e.QualityProfile = new QualityProfile
{
Items = Qualities.QualityFixture.GetDefaultQualities()
@@ -72,8 +72,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_put_propers_before_non_propers()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256, new Revision(version: 1)));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256, new Revision(version: 2)));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 1)));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 2)));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
@@ -86,24 +86,24 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_put_higher_quality_before_lower()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_192));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Quality.Should().Be(Quality.MP3_256);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Quality.Should().Be(Quality.MP3_320);
}
[Test]
public void should_order_by_age_then_largest_rounded_to_200mb()
{
var remoteAlbumSd = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_192), size: 100.Megabytes(), age: 1);
var remoteAlbumHdSmallOld = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 1200.Megabytes(), age: 1000);
var remoteAlbumSmallYoung = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 1250.Megabytes(), age: 10);
var remoteAlbumHdLargeYoung = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 3000.Megabytes(), age: 1);
var remoteAlbumSd = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 100.Megabytes(), age: 1);
var remoteAlbumHdSmallOld = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 1200.Megabytes(), age: 1000);
var remoteAlbumSmallYoung = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 1250.Megabytes(), age: 10);
var remoteAlbumHdLargeYoung = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 3000.Megabytes(), age: 1);
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbumSd));
@@ -118,8 +118,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_order_by_youngest()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), age: 10);
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), age: 5);
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), age: 10);
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), age: 5);
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
@@ -132,10 +132,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_not_throw_if_no_albums_are_found()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 500.Megabytes());
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), size: 500.Megabytes());
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
remoteAlbum1.Albums = new List<Album>();
remoteAlbum1.Albums = new List<Book>();
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
@@ -149,8 +149,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenPreferredDownloadProtocol(DownloadProtocol.Usenet);
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), downloadProtocol: DownloadProtocol.Torrent);
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), downloadProtocol: DownloadProtocol.Usenet);
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Torrent);
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Usenet);
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
@@ -165,8 +165,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenPreferredDownloadProtocol(DownloadProtocol.Torrent);
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), downloadProtocol: DownloadProtocol.Torrent);
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256), downloadProtocol: DownloadProtocol.Usenet);
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Torrent);
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Usenet);
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
@@ -179,8 +179,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_discography_pack_above_single_album()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.FLAC));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.FLAC));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
remoteAlbum1.ParsedAlbumInfo.Discography = true;
@@ -195,8 +195,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_quality_over_discography_pack()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
remoteAlbum1.ParsedAlbumInfo.Discography = true;
@@ -211,8 +211,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_single_album_over_multi_album()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_256));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
@@ -225,8 +225,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_releases_with_more_seeders()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@@ -251,8 +251,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_releases_with_more_peers_given_equal_number_of_seeds()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@@ -278,8 +278,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_releases_with_more_peers_no_seeds()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@@ -306,8 +306,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_first_release_if_peers_and_size_are_too_similar()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@@ -335,8 +335,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_first_release_if_age_and_size_are_too_similar()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
remoteAlbum1.Release.PublishDate = DateTime.UtcNow.AddDays(-100);
remoteAlbum1.Release.Size = 200.Megabytes();
@@ -355,8 +355,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_quality_over_the_number_of_peers()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_192));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.AZW3));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@@ -384,8 +384,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_put_higher_quality_before_lower_always()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
@@ -398,8 +398,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_higher_score_over_lower_score()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
remoteAlbum1.PreferredWordScore = 10;
remoteAlbum2.PreferredWordScore = 0;
@@ -419,8 +419,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.PreferAndUpgrade);
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
remoteAlbum1.PreferredWordScore = 10;
remoteAlbum2.PreferredWordScore = 0;
@@ -440,8 +440,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.DoNotUpgrade);
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
remoteAlbum1.PreferredWordScore = 10;
remoteAlbum2.PreferredWordScore = 0;
@@ -461,8 +461,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.DoNotPrefer);
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
remoteAlbum1.PreferredWordScore = 10;
remoteAlbum2.PreferredWordScore = 0;
@@ -22,7 +22,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_remoteAlbum = new RemoteAlbum();
_remoteAlbum.Release = new ReleaseInfo();
_remoteAlbum.Artist = new Artist();
_remoteAlbum.Artist = new Author();
_delayProfile = new DelayProfile();
@@ -18,14 +18,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public static object[] AllowedTestCases =
{
new object[] { Quality.MP3_192 },
new object[] { Quality.MP3_256 },
new object[] { Quality.MP3_320 },
new object[] { Quality.MP3_320 },
new object[] { Quality.MP3_320 }
};
public static object[] DeniedTestCases =
{
new object[] { Quality.MP3_VBR },
new object[] { Quality.FLAC },
new object[] { Quality.Unknown }
};
@@ -33,14 +32,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[SetUp]
public void Setup()
{
var fakeArtist = Builder<Artist>.CreateNew()
var fakeArtist = Builder<Author>.CreateNew()
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id })
.Build();
_remoteAlbum = new RemoteAlbum
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_192, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
};
}
@@ -49,7 +48,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_allow_if_quality_is_defined_in_profile(Quality qualityType)
{
_remoteAlbum.ParsedAlbumInfo.Quality.Quality = qualityType;
_remoteAlbum.Artist.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_192, Quality.MP3_256, Quality.MP3_320);
_remoteAlbum.Artist.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
@@ -59,7 +58,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_not_allow_if_quality_is_not_defined_in_profile(Quality qualityType)
{
_remoteAlbum.ParsedAlbumInfo.Quality.Quality = qualityType;
_remoteAlbum.Artist.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_192, Quality.MP3_256, Quality.MP3_320);
_remoteAlbum.Artist.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
@@ -17,12 +17,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class QueueSpecificationFixture : CoreTest<QueueSpecification>
{
private Artist _artist;
private Album _album;
private Author _artist;
private Book _album;
private RemoteAlbum _remoteAlbum;
private Artist _otherArtist;
private Album _otherAlbum;
private Author _otherArtist;
private Book _otherAlbum;
private ReleaseInfo _releaseInfo;
@@ -31,7 +31,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
Mocker.Resolve<UpgradableSpecification>();
_artist = Builder<Artist>.CreateNew()
_artist = Builder<Author>.CreateNew()
.With(e => e.QualityProfile = new QualityProfile
{
UpgradeAllowed = true,
@@ -39,16 +39,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
})
.Build();
_album = Builder<Album>.CreateNew()
.With(e => e.ArtistId = _artist.Id)
_album = Builder<Book>.CreateNew()
.With(e => e.AuthorId = _artist.Id)
.Build();
_otherArtist = Builder<Artist>.CreateNew()
_otherArtist = Builder<Author>.CreateNew()
.With(s => s.Id = 2)
.Build();
_otherAlbum = Builder<Album>.CreateNew()
.With(e => e.ArtistId = _otherArtist.Id)
_otherAlbum = Builder<Book>.CreateNew()
.With(e => e.AuthorId = _otherArtist.Id)
.With(e => e.Id = 2)
.Build();
@@ -57,8 +57,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256) })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320) })
.With(r => r.PreferredWordScore = 0)
.Build();
}
@@ -95,7 +95,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _otherArtist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.Release = _releaseInfo)
.Build();
@@ -110,10 +110,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_256)
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.Build();
@@ -130,10 +130,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_192)
Quality = new QualityModel(Quality.AZW3)
})
.With(r => r.Release = _releaseInfo)
.Build();
@@ -147,10 +147,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _otherAlbum })
.With(r => r.Albums = new List<Book> { _otherAlbum })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_192)
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.Build();
@@ -166,10 +166,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_256)
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.Build();
@@ -183,10 +183,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_192)
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.Build();
@@ -202,7 +202,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_320)
@@ -219,7 +219,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album, _otherAlbum })
.With(r => r.Albums = new List<Book> { _album, _otherAlbum })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_320)
@@ -236,7 +236,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_320)
@@ -255,7 +255,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album, _otherAlbum })
.With(r => r.Albums = new List<Book> { _album, _otherAlbum })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_320)
@@ -281,9 +281,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
})
.With(r => r.Release = _releaseInfo)
.TheFirst(1)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.TheNext(1)
.With(r => r.Albums = new List<Album> { _otherAlbum })
.With(r => r.Albums = new List<Book> { _otherAlbum })
.Build();
_remoteAlbum.Albums.Add(_otherAlbum);
@@ -299,7 +299,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.FLAC)
@@ -318,10 +318,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Album> { _album })
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
{
Quality = new QualityModel(Quality.MP3_008)
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.Build();
@@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_remoteAlbum = new RemoteAlbum
{
Artist = new Artist
Artist = new Author
{
Tags = new HashSet<int>()
},
@@ -17,8 +17,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class RepackSpecificationFixture : CoreTest<RepackSpecification>
{
private ParsedAlbumInfo _parsedAlbumInfo;
private List<Album> _albums;
private List<TrackFile> _trackFiles;
private List<Book> _albums;
private List<BookFile> _trackFiles;
[SetUp]
public void Setup()
@@ -31,13 +31,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(p => p.ReleaseGroup = "Readarr")
.Build();
_albums = Builder<Album>.CreateListOfSize(1)
_albums = Builder<Book>.CreateListOfSize(1)
.All()
.BuildList();
_trackFiles = Builder<TrackFile>.CreateListOfSize(3)
_trackFiles = Builder<BookFile>.CreateListOfSize(3)
.All()
.With(t => t.AlbumId = _albums.First().Id)
.With(t => t.BookId = _albums.First().Id)
.BuildList();
Mocker.GetMock<IMediaFileService>()
@@ -64,7 +64,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Returns(new List<TrackFile>());
.Returns(new List<BookFile>());
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
@@ -91,7 +91,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
}).ToList();
_trackFiles.Select(c =>
{
c.Quality = new QualityModel(Quality.MP3_256);
c.Quality = new QualityModel(Quality.MP3_320);
return c;
}).ToList();
@@ -37,7 +37,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.With(d => d.PreferredProtocol = DownloadProtocol.Usenet)
.Build();
var artist = Builder<Artist>.CreateNew()
var artist = Builder<Author>.CreateNew()
.With(s => s.QualityProfile = _profile)
.Build();
@@ -46,21 +46,21 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.Build();
_profile.Items = new List<QualityProfileQualityItem>();
_profile.Items.Add(new QualityProfileQualityItem { Allowed = true, Quality = Quality.MP3_256 });
_profile.Items.Add(new QualityProfileQualityItem { Allowed = true, Quality = Quality.MP3_320 });
_profile.Items.Add(new QualityProfileQualityItem { Allowed = true, Quality = Quality.PDF });
_profile.Items.Add(new QualityProfileQualityItem { Allowed = true, Quality = Quality.AZW3 });
_profile.Items.Add(new QualityProfileQualityItem { Allowed = true, Quality = Quality.MP3_320 });
_profile.Cutoff = Quality.MP3_320.Id;
_profile.Cutoff = Quality.AZW3.Id;
_remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo();
_remoteAlbum.Release = new ReleaseInfo();
_remoteAlbum.Release.DownloadProtocol = DownloadProtocol.Usenet;
_remoteAlbum.Albums = Builder<Album>.CreateListOfSize(1).Build().ToList();
_remoteAlbum.Albums = Builder<Book>.CreateListOfSize(1).Build().ToList();
Mocker.GetMock<IMediaFileService>()
.Setup(s => s.GetFilesByAlbum(It.IsAny<int>()))
.Returns(new List<TrackFile> { });
.Returns(new List<BookFile> { });
Mocker.GetMock<IDelayProfileService>()
.Setup(s => s.BestForTags(It.IsAny<HashSet<int>>()))
@@ -75,12 +75,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
{
Mocker.GetMock<IMediaFileService>()
.Setup(s => s.GetFilesByAlbum(It.IsAny<int>()))
.Returns(new List<TrackFile>
.Returns(new List<BookFile>
{
new TrackFile
{
Quality = quality
}
new BookFile
{
Quality = quality
}
});
}
@@ -100,7 +100,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_false_when_system_invoked_search_and_release_is_younger_than_delay()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_192);
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_delayProfile.UsenetDelay = 720;
@@ -127,7 +127,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_true_when_release_is_older_than_delay()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_256);
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow.AddHours(-10);
_delayProfile.UsenetDelay = 60;
@@ -138,7 +138,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_false_when_release_is_younger_than_delay()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_192);
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_delayProfile.UsenetDelay = 720;
@@ -149,10 +149,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_true_when_release_is_a_proper_for_existing_album()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2));
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.MP3_256));
GivenExistingFile(new QualityModel(Quality.MP3_320));
GivenUpgradeForExistingFile();
Mocker.GetMock<IUpgradableSpecification>()
@@ -167,10 +167,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_true_when_release_is_a_real_for_existing_album()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_256, new Revision(real: 1));
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(real: 1));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.MP3_256));
GivenExistingFile(new QualityModel(Quality.MP3_320));
GivenUpgradeForExistingFile();
Mocker.GetMock<IUpgradableSpecification>()
@@ -185,10 +185,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_false_when_release_is_proper_for_existing_album_of_different_quality()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2));
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.AZW3, new Revision(version: 2));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.MP3_192));
GivenExistingFile(new QualityModel(Quality.PDF));
_delayProfile.UsenetDelay = 720;
@@ -23,42 +23,39 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
{
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private TrackFile _firstFile;
private TrackFile _secondFile;
private BookFile _firstFile;
private BookFile _secondFile;
[SetUp]
public void Setup()
{
_firstFile =
new TrackFile
new BookFile
{
Id = 1,
Path = "/My.Artist.S01E01.mp3",
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)),
DateAdded = DateTime.Now,
AlbumId = 1
BookId = 1
};
_secondFile =
new TrackFile
new BookFile
{
Id = 2,
Path = "/My.Artist.S01E02.mp3",
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)),
DateAdded = DateTime.Now,
AlbumId = 2
BookId = 2
};
var singleAlbumList = new List<Album> { new Album { Id = 1 } };
var doubleAlbumList = new List<Album>
var singleAlbumList = new List<Book> { new Book { Id = 1 } };
var doubleAlbumList = new List<Book>
{
new Album { Id = 1 },
new Album { Id = 2 }
new Book { Id = 1 },
new Book { Id = 2 }
};
var firstTrack = new Track { TrackFile = _firstFile, TrackFileId = 1, AlbumId = 1 };
var secondTrack = new Track { TrackFile = _secondFile, TrackFileId = 2, AlbumId = 2 };
var fakeArtist = Builder<Artist>.CreateNew()
var fakeArtist = Builder<Author>.CreateNew()
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.FLAC.Id })
.With(c => c.Path = @"C:\Music\My.Artist".AsOsAgnostic())
.Build();
@@ -66,14 +63,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
_parseResultMulti = new RemoteAlbum
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = singleAlbumList
};
@@ -87,14 +84,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.Returns(enabled);
}
private void SetupMediaFile(List<TrackFile> files)
private void SetupMediaFile(List<BookFile> files)
{
Mocker.GetMock<IMediaFileService>()
.Setup(v => v.GetFilesByAlbum(It.IsAny<int>()))
.Returns(files);
}
private void WithExistingFile(TrackFile trackFile)
private void WithExistingFile(BookFile trackFile)
{
var path = trackFile.Path;
@@ -121,7 +118,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
public void should_return_true_if_file_exists()
{
WithExistingFile(_firstFile);
SetupMediaFile(new List<TrackFile> { _firstFile });
SetupMediaFile(new List<BookFile> { _firstFile });
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
@@ -129,7 +126,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_return_false_if_file_is_missing()
{
SetupMediaFile(new List<TrackFile> { _firstFile });
SetupMediaFile(new List<BookFile> { _firstFile });
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
}
@@ -138,7 +135,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
{
WithExistingFile(_firstFile);
WithExistingFile(_secondFile);
SetupMediaFile(new List<TrackFile> { _firstFile, _secondFile });
SetupMediaFile(new List<BookFile> { _firstFile, _secondFile });
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
}
@@ -147,7 +144,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
public void should_return_false_if_one_of_multiple_episode_is_missing()
{
WithExistingFile(_firstFile);
SetupMediaFile(new List<TrackFile> { _firstFile, _secondFile });
SetupMediaFile(new List<BookFile> { _firstFile, _secondFile });
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
}
@@ -23,52 +23,52 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
{
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private TrackFile _firstFile;
private TrackFile _secondFile;
private BookFile _firstFile;
private BookFile _secondFile;
[SetUp]
public void Setup()
{
Mocker.Resolve<UpgradableSpecification>();
_firstFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), DateAdded = DateTime.Now };
_secondFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), DateAdded = DateTime.Now };
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), DateAdded = DateTime.Now };
_secondFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), DateAdded = DateTime.Now };
var singleAlbumList = new List<Album> { new Album { }, new Album { } };
var doubleAlbumList = new List<Album> { new Album { }, new Album { }, new Album { } };
var singleAlbumList = new List<Book> { new Book { }, new Book { } };
var doubleAlbumList = new List<Book> { new Book { }, new Book { }, new Book { } };
var fakeArtist = Builder<Artist>.CreateNew()
var fakeArtist = Builder<Author>.CreateNew()
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.FLAC.Id })
.Build();
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Returns(new List<TrackFile> { _firstFile, _secondFile });
.Returns(new List<BookFile> { _firstFile, _secondFile });
_parseResultMulti = new RemoteAlbum
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
Albums = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
Albums = singleAlbumList
};
}
private void WithFirstFileUpgradable()
{
_firstFile.Quality = new QualityModel(Quality.MP3_192);
_firstFile.Quality = new QualityModel(Quality.PDF);
}
[Test]
public void should_return_false_when_trackFile_was_added_more_than_7_days_ago()
{
_firstFile.Quality.Quality = Quality.MP3_256;
_firstFile.Quality.Quality = Quality.MOBI;
_firstFile.DateAdded = DateTime.Today.AddDays(-30);
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
@@ -77,8 +77,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_return_false_when_first_trackFile_was_added_more_than_7_days_ago()
{
_firstFile.Quality.Quality = Quality.MP3_256;
_secondFile.Quality.Quality = Quality.MP3_256;
_firstFile.Quality.Quality = Quality.MOBI;
_secondFile.Quality.Quality = Quality.MOBI;
_firstFile.DateAdded = DateTime.Today.AddDays(-30);
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
@@ -87,8 +87,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_return_false_when_second_trackFile_was_added_more_than_7_days_ago()
{
_firstFile.Quality.Quality = Quality.MP3_256;
_secondFile.Quality.Quality = Quality.MP3_256;
_firstFile.Quality.Quality = Quality.MOBI;
_secondFile.Quality.Quality = Quality.MOBI;
_secondFile.DateAdded = DateTime.Today.AddDays(-30);
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
@@ -119,7 +119,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.DoNotUpgrade);
_firstFile.Quality.Quality = Quality.MP3_256;
_firstFile.Quality.Quality = Quality.MOBI;
_firstFile.DateAdded = DateTime.Today;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
@@ -132,7 +132,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.PreferAndUpgrade);
_firstFile.Quality.Quality = Quality.MP3_256;
_firstFile.Quality.Quality = Quality.MOBI;
_firstFile.DateAdded = DateTime.Today;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
@@ -145,7 +145,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.DoNotPrefer);
_firstFile.Quality.Quality = Quality.MP3_256;
_firstFile.Quality.Quality = Quality.MOBI;
_firstFile.DateAdded = DateTime.Today;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
@@ -12,16 +12,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
[TestFixture]
public class ArtistSpecificationFixture : TestBase<ArtistSpecification>
{
private Artist _artist1;
private Artist _artist2;
private Author _artist1;
private Author _artist2;
private RemoteAlbum _remoteAlbum = new RemoteAlbum();
private SearchCriteriaBase _searchCriteria = new AlbumSearchCriteria();
[SetUp]
public void Setup()
{
_artist1 = Builder<Artist>.CreateNew().With(s => s.Id = 1).Build();
_artist2 = Builder<Artist>.CreateNew().With(s => s.Id = 2).Build();
_artist1 = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
_artist2 = Builder<Author>.CreateNew().With(s => s.Id = 2).Build();
_remoteAlbum.Artist = _artist1;
}
@@ -15,14 +15,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
[TestFixture]
public class TorrentSeedingSpecificationFixture : TestBase<TorrentSeedingSpecification>
{
private Artist _artist;
private Author _artist;
private RemoteAlbum _remoteAlbum;
private IndexerDefinition _indexerDefinition;
[SetUp]
public void Setup()
{
_artist = Builder<Artist>.CreateNew().With(s => s.Id = 1).Build();
_artist = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
_remoteAlbum = new RemoteAlbum
{
@@ -82,7 +82,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
UpgradeAllowed = true
},
new List<QualityModel> { new QualityModel(Quality.MP3_320) },
new QualityModel(Quality.MP3_256))
new QualityModel(Quality.MP3_320))
.Should().BeTrue();
}
@@ -97,7 +97,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
UpgradeAllowed = false
},
new List<QualityModel> { new QualityModel(Quality.MP3_320) },
new QualityModel(Quality.MP3_256))
new QualityModel(Quality.MP3_320))
.Should().BeTrue();
}
}
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
@@ -15,26 +16,26 @@ using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.DecisionEngineTests
{
[TestFixture]
[Ignore("Pending Readarr fixes")]
public class UpgradeDiskSpecificationFixture : CoreTest<UpgradeDiskSpecification>
{
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private TrackFile _firstFile;
private TrackFile _secondFile;
private BookFile _firstFile;
private BookFile _secondFile;
[SetUp]
public void Setup()
{
Mocker.Resolve<UpgradableSpecification>();
_firstFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
_secondFile = new TrackFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
_secondFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
var singleAlbumList = new List<Album> { new Album { } };
var doubleAlbumList = new List<Album> { new Album { }, new Album { }, new Album { } };
var singleAlbumList = new List<Book> { new Book { BookFiles = new List<BookFile>() } };
var doubleAlbumList = new List<Book> { new Book { BookFiles = new List<BookFile>() }, new Book { BookFiles = new List<BookFile>() }, new Book { BookFiles = new List<BookFile>() } };
var fakeArtist = Builder<Artist>.CreateNew()
var fakeArtist = Builder<Author>.CreateNew()
.With(c => c.QualityProfile = new QualityProfile
{
UpgradeAllowed = true,
@@ -43,45 +44,39 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
})
.Build();
Mocker.GetMock<ITrackService>()
.Setup(c => c.TracksWithoutFiles(It.IsAny<int>()))
.Returns(new List<Track>());
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Returns(new List<TrackFile> { _firstFile, _secondFile });
.Returns(new List<BookFile> { _firstFile, _secondFile });
_parseResultMulti = new RemoteAlbum
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_256, new Revision(version: 2)) },
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = singleAlbumList
};
}
private void WithFirstFileUpgradable()
{
_firstFile.Quality = new QualityModel(Quality.MP3_192);
_firstFile.Quality = new QualityModel(Quality.MP3_320);
}
private void WithSecondFileUpgradable()
{
_secondFile.Quality = new QualityModel(Quality.MP3_192);
_secondFile.Quality = new QualityModel(Quality.MP3_320);
}
[Test]
public void should_return_true_if_album_has_no_existing_file()
{
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Returns(new List<TrackFile> { });
_parseResultSingle.Albums.First().BookFiles = new List<BookFile>();
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
@@ -89,10 +84,6 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_track_is_missing()
{
Mocker.GetMock<ITrackService>()
.Setup(c => c.TracksWithoutFiles(It.IsAny<int>()))
.Returns(new List<Track> { new Track() });
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
@@ -101,15 +92,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
Mocker.GetMock<ITrackService>()
.Verify(c => c.TracksWithoutFiles(It.IsAny<int>()), Times.Once());
}
[Test]
public void should_return_true_if_single_album_doesnt_exist_on_disk()
{
_parseResultSingle.Albums = new List<Album>();
_parseResultSingle.Albums = new List<Book>();
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
@@ -15,11 +15,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
public static object[] IsUpgradeTestCases =
{
new object[] { Quality.MP3_192, 1, Quality.MP3_192, 2, Quality.MP3_192, true },
new object[] { Quality.AZW3, 1, Quality.AZW3, 2, Quality.AZW3, true },
new object[] { Quality.MP3_320, 1, Quality.MP3_320, 2, Quality.MP3_320, true },
new object[] { Quality.MP3_192, 1, Quality.MP3_192, 1, Quality.MP3_192, false },
new object[] { Quality.MP3_320, 1, Quality.MP3_256, 2, Quality.MP3_320, false },
new object[] { Quality.MP3_320, 1, Quality.MP3_256, 2, Quality.MP3_320, false },
new object[] { Quality.MP3_320, 1, Quality.MP3_320, 1, Quality.MP3_320, false },
new object[] { Quality.MP3_320, 1, Quality.AZW3, 2, Quality.MP3_320, false },
new object[] { Quality.MP3_320, 1, Quality.AZW3, 2, Quality.MP3_320, false },
new object[] { Quality.MP3_320, 1, Quality.MP3_320, 1, Quality.MP3_320, false }
};
@@ -65,9 +65,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.IsUpgradable(
profile,
new List<QualityModel> { new QualityModel(Quality.MP3_256, new Revision(version: 1)) },
new List<QualityModel> { new QualityModel(Quality.MP3_320, new Revision(version: 1)) },
NoPreferredWordScore,
new QualityModel(Quality.MP3_256, new Revision(version: 2)),
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
NoPreferredWordScore)
.Should().BeTrue();
}
@@ -84,9 +84,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.IsUpgradable(
profile,
new List<QualityModel> { new QualityModel(Quality.MP3_256, new Revision(version: 1)) },
new List<QualityModel> { new QualityModel(Quality.MP3_320, new Revision(version: 1)) },
NoPreferredWordScore,
new QualityModel(Quality.MP3_256, new Revision(version: 2)),
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
NoPreferredWordScore)
.Should().BeFalse();
}