More Fun in Core with Naming

pull/33/head
Qstick 4 years ago committed by ta264
parent b0e966418e
commit 307989aab7

@ -25,7 +25,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private Author _artist;
private QualityModel _mp3;
private QualityModel _flac;
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
private List<History.History> _history;
private BookFile _firstFile;
@ -49,7 +49,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_mp3 = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_flac = new QualityModel(Quality.FLAC, new Revision(version: 1));
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Author = _artist,
ParsedBookInfo = new ParsedBookInfo { Quality = _mp3 },
@ -97,7 +97,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenCdhDisabled();
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -107,13 +107,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile> { });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_accepted_if_album_does_not_have_grabbed_event()
{
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -121,7 +121,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenHistoryItem(Guid.NewGuid().ToString().ToUpper(), TITLE, _mp3, HistoryEventType.Grabbed);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -132,7 +132,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenHistoryItem(downloadId, TITLE, _mp3, HistoryEventType.Grabbed);
GivenHistoryItem(downloadId, TITLE, _mp3, HistoryEventType.DownloadImported);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -143,12 +143,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenHistoryItem(downloadId, TITLE, _mp3, HistoryEventType.Grabbed);
GivenHistoryItem(downloadId, TITLE, _flac, HistoryEventType.DownloadImported);
_remoteAlbum.Release = Builder<TorrentInfo>.CreateNew()
_remoteBook.Release = Builder<TorrentInfo>.CreateNew()
.With(t => t.DownloadProtocol = DownloadProtocol.Torrent)
.With(t => t.InfoHash = downloadId)
.Build();
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
@ -159,12 +159,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenHistoryItem(downloadId, TITLE, _mp3, HistoryEventType.Grabbed);
GivenHistoryItem(downloadId, TITLE, _flac, HistoryEventType.DownloadImported);
_remoteAlbum.Release = Builder<TorrentInfo>.CreateNew()
_remoteBook.Release = Builder<TorrentInfo>.CreateNew()
.With(t => t.DownloadProtocol = DownloadProtocol.Torrent)
.With(t => t.InfoHash = null)
.Build();
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -173,12 +173,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenHistoryItem(null, TITLE, _mp3, HistoryEventType.Grabbed);
GivenHistoryItem(null, TITLE, _flac, HistoryEventType.DownloadImported);
_remoteAlbum.Release = Builder<TorrentInfo>.CreateNew()
_remoteBook.Release = Builder<TorrentInfo>.CreateNew()
.With(t => t.DownloadProtocol = DownloadProtocol.Torrent)
.With(t => t.InfoHash = null)
.Build();
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -189,12 +189,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenHistoryItem(downloadId, TITLE, _mp3, HistoryEventType.Grabbed);
GivenHistoryItem(downloadId, TITLE, _flac, HistoryEventType.DownloadImported);
_remoteAlbum.Release = Builder<TorrentInfo>.CreateNew()
_remoteBook.Release = Builder<TorrentInfo>.CreateNew()
.With(t => t.DownloadProtocol = DownloadProtocol.Torrent)
.With(t => t.InfoHash = downloadId)
.Build();
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
}
}

@ -14,12 +14,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class BlockedIndexerSpecificationFixture : CoreTest<BlockedIndexerSpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Release = new ReleaseInfo { IndexerId = 1 }
};
@ -39,7 +39,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_no_blocked_indexer()
{
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -47,7 +47,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
WithBlockedIndexer();
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
Subject.Type.Should().Be(RejectionType.Temporary);
}
}

@ -15,13 +15,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class DiscographySpecificationFixture : CoreTest<DiscographySpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
{
var artist = Builder<Author>.CreateNew().With(s => s.Id = 1234).Build();
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
ParsedBookInfo = new ParsedBookInfo
{
@ -46,29 +46,29 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_is_not_a_discography()
{
_remoteAlbum.ParsedBookInfo.Discography = false;
_remoteAlbum.Books.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
_remoteBook.ParsedBookInfo.Discography = false;
_remoteBook.Books.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_all_albums_have_released()
{
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_false_if_one_album_has_not_released()
{
_remoteAlbum.Books.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
_remoteBook.Books.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_an_album_does_not_have_an_release_date()
{
_remoteAlbum.Books.Last().ReleaseDate = null;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
_remoteBook.Books.Last().ReleaseDate = null;
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
}
}

@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class DownloadDecisionMakerFixture : CoreTest<DownloadDecisionMaker>
{
private List<ReleaseInfo> _reports;
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
private Mock<IDecisionEngineSpecification> _pass1;
private Mock<IDecisionEngineSpecification> _pass2;
@ -57,7 +57,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_failDelayed1.SetupGet(c => c.Priority).Returns(SpecificationPriority.Disk);
_reports = new List<ReleaseInfo> { new ReleaseInfo { Title = "Coldplay-A Head Full Of Dreams-CD-FLAC-2015-PERFECT" } };
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Author = new Author(),
Books = new List<Book> { new Book() }
@ -65,7 +65,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Mocker.GetMock<IParsingService>()
.Setup(c => c.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()))
.Returns(_remoteAlbum);
.Returns(_remoteBook);
}
private void GivenSpecifications(params Mock<IDecisionEngineSpecification>[] mocks)
@ -80,12 +80,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.GetRssDecision(_reports).ToList();
_fail1.Verify(c => c.IsSatisfiedBy(_remoteAlbum, null), Times.Once());
_fail2.Verify(c => c.IsSatisfiedBy(_remoteAlbum, null), Times.Once());
_fail3.Verify(c => c.IsSatisfiedBy(_remoteAlbum, null), Times.Once());
_pass1.Verify(c => c.IsSatisfiedBy(_remoteAlbum, null), Times.Once());
_pass2.Verify(c => c.IsSatisfiedBy(_remoteAlbum, null), Times.Once());
_pass3.Verify(c => c.IsSatisfiedBy(_remoteAlbum, null), Times.Once());
_fail1.Verify(c => c.IsSatisfiedBy(_remoteBook, null), Times.Once());
_fail2.Verify(c => c.IsSatisfiedBy(_remoteBook, null), Times.Once());
_fail3.Verify(c => c.IsSatisfiedBy(_remoteBook, null), Times.Once());
_pass1.Verify(c => c.IsSatisfiedBy(_remoteBook, null), Times.Once());
_pass2.Verify(c => c.IsSatisfiedBy(_remoteBook, null), Times.Once());
_pass3.Verify(c => c.IsSatisfiedBy(_remoteBook, null), Times.Once());
}
[Test]
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenSpecifications(_pass1, _failDelayed1);
Subject.GetRssDecision(_reports).ToList();
_failDelayed1.Verify(c => c.IsSatisfiedBy(_remoteAlbum, null), Times.Once());
_failDelayed1.Verify(c => c.IsSatisfiedBy(_remoteBook, null), Times.Once());
}
[Test]
@ -104,7 +104,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.GetRssDecision(_reports).ToList();
_failDelayed1.Verify(c => c.IsSatisfiedBy(_remoteAlbum, null), Times.Never());
_failDelayed1.Verify(c => c.IsSatisfiedBy(_remoteBook, null), Times.Never());
}
[Test]
@ -185,7 +185,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Author = null;
_remoteBook.Author = null;
Subject.GetRssDecision(_reports);
@ -221,7 +221,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Author = null;
_remoteBook.Author = null;
var result = Subject.GetRssDecision(_reports);
@ -260,7 +260,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Mocker.SetConstant<IEnumerable<IDecisionEngineSpecification>>(new List<IDecisionEngineSpecification>
{
Mocker.Resolve<NzbDrone.Core.DecisionEngine.Specifications.Search.AlbumRequestedSpecification>()
Mocker.Resolve<NzbDrone.Core.DecisionEngine.Specifications.Search.BookRequestedSpecification>()
});
var decisions = Subject.GetSearchDecision(reports, criteria);
@ -275,7 +275,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Author = null;
_remoteBook.Author = null;
var result = Subject.GetRssDecision(_reports);
@ -289,7 +289,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Books = new List<Book>();
_remoteBook.Books = new List<Book>();
var result = Subject.GetRssDecision(_reports);

@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private Author _artist;
private Book _album1;
private Book _album2;
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
private IndexerDefinition _indexerDefinition;
[SetUp]
@ -30,7 +30,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_album1 = Builder<Book>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
_album2 = Builder<Book>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Author = _artist,
Books = new List<Book> { _album1 },
@ -54,23 +54,23 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private void GivenPublishDateFromToday(int days)
{
_remoteAlbum.Release.PublishDate = DateTime.Today.AddDays(days);
_remoteBook.Release.PublishDate = DateTime.Today.AddDays(days);
}
[Test]
public void should_return_true_if_indexer_not_specified()
{
_remoteAlbum.Release.IndexerId = 0;
_remoteBook.Release.IndexerId = 0;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_release_contains_multiple_albums()
{
_remoteAlbum.Books.Add(_album2);
_remoteBook.Books.Add(_album2);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -80,7 +80,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(v => v.Get(It.IsAny<int>()))
.Callback<int>(i => { throw new ModelNotFoundException(typeof(IndexerDefinition), i); });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[TestCase(-2)]
@ -89,7 +89,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenPublishDateFromToday(days);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[TestCase(-10)]
@ -98,7 +98,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenPublishDateFromToday(days);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[TestCase(-10)]
@ -109,7 +109,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_indexerDefinition.Settings = new TorrentRssIndexerSettings { EarlyReleaseLimit = null };
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
}
}

@ -9,12 +9,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
public class MaximumSizeSpecificationFixture : CoreTest<MaximumSizeSpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteBook() { Release = new ReleaseInfo() };
_remoteBook = new RemoteBook() { Release = new ReleaseInfo() };
}
private void WithMaximumSize(int size)
@ -24,7 +24,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private void WithSize(int size)
{
_remoteAlbum.Release.Size = size * 1024 * 1024;
_remoteBook.Release.Size = size * 1024 * 1024;
}
[Test]
@ -33,7 +33,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithMaximumSize(0);
WithSize(1000);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -42,7 +42,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithMaximumSize(2000);
WithSize(1999);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithMaximumSize(2000);
WithSize(2000);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -60,7 +60,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithMaximumSize(2000);
WithSize(2001);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
@ -69,7 +69,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithMaximumSize(2000);
WithSize(0);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
}
}

@ -13,12 +13,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class MinimumAgeSpecificationFixture : CoreTest<MinimumAgeSpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Release = new ReleaseInfo() { DownloadProtocol = DownloadProtocol.Usenet }
};
@ -31,7 +31,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private void WithAge(int minutes)
{
_remoteAlbum.Release.PublishDate = DateTime.UtcNow.AddMinutes(-minutes);
_remoteBook.Release.PublishDate = DateTime.UtcNow.AddMinutes(-minutes);
}
[Test]
@ -40,7 +40,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithMinimumAge(0);
WithAge(100);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -49,7 +49,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithMinimumAge(30);
WithAge(100);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -58,7 +58,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithMinimumAge(30);
WithAge(10);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
}
}

@ -12,9 +12,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
[TestFixture]
public class MonitoredAlbumSpecificationFixture : CoreTest<MonitoredAlbumSpecification>
public class MonitoredAlbumSpecificationFixture : CoreTest<MonitoredBookSpecification>
{
private MonitoredAlbumSpecification _monitoredAlbumSpecification;
private MonitoredBookSpecification _monitoredAlbumSpecification;
private RemoteBook _parseResultMulti;
private RemoteBook _parseResultSingle;
@ -25,7 +25,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[SetUp]
public void Setup()
{
_monitoredAlbumSpecification = Mocker.Resolve<MonitoredAlbumSpecification>();
_monitoredAlbumSpecification = Mocker.Resolve<MonitoredBookSpecification>();
_fakeArtist = Builder<Author>.CreateNew()
.With(c => c.Monitored = true)

@ -36,27 +36,27 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private RemoteBook GivenRemoteAlbum(List<Book> albums, QualityModel quality, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
{
var remoteAlbum = new RemoteBook();
remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
remoteAlbum.ParsedBookInfo.Quality = quality;
var remoteBook = new RemoteBook();
remoteBook.ParsedBookInfo = new ParsedBookInfo();
remoteBook.ParsedBookInfo.Quality = quality;
remoteAlbum.Books = new List<Book>();
remoteAlbum.Books.AddRange(albums);
remoteBook.Books = new List<Book>();
remoteBook.Books.AddRange(albums);
remoteAlbum.Release = new ReleaseInfo();
remoteAlbum.Release.PublishDate = DateTime.Now.AddDays(-age);
remoteAlbum.Release.Size = size;
remoteAlbum.Release.DownloadProtocol = downloadProtocol;
remoteBook.Release = new ReleaseInfo();
remoteBook.Release.PublishDate = DateTime.Now.AddDays(-age);
remoteBook.Release.Size = size;
remoteBook.Release.DownloadProtocol = downloadProtocol;
remoteAlbum.Author = Builder<Author>.CreateNew()
remoteBook.Author = Builder<Author>.CreateNew()
.With(e => e.QualityProfile = new QualityProfile
{
Items = Qualities.QualityFixture.GetDefaultQualities()
}).Build();
remoteAlbum.DownloadAllowed = true;
remoteBook.DownloadAllowed = true;
return remoteAlbum;
return remoteBook;
}
private void GivenPreferredDownloadProtocol(DownloadProtocol downloadProtocol)
@ -72,12 +72,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_put_propers_before_non_propers()
{
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 1)));
var remoteBook2 = 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));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Version.Should().Be(2);
@ -86,12 +86,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_put_higher_quality_before_lower()
{
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = 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));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Quality.Should().Be(Quality.MP3_320);
@ -100,46 +100,46 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_order_by_age_then_largest_rounded_to_200mb()
{
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 remoteBookSd = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 100.Megabytes(), age: 1);
var remoteBookHdSmallOld = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 1200.Megabytes(), age: 1000);
var remoteBookSmallYoung = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 1250.Megabytes(), age: 10);
var remoteBookHdLargeYoung = 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));
decisions.Add(new DownloadDecision(remoteAlbumHdSmallOld));
decisions.Add(new DownloadDecision(remoteAlbumSmallYoung));
decisions.Add(new DownloadDecision(remoteAlbumHdLargeYoung));
decisions.Add(new DownloadDecision(remoteBookSd));
decisions.Add(new DownloadDecision(remoteBookHdSmallOld));
decisions.Add(new DownloadDecision(remoteBookSmallYoung));
decisions.Add(new DownloadDecision(remoteBookHdLargeYoung));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.Should().Be(remoteAlbumHdLargeYoung);
qualifiedReports.First().RemoteBook.Should().Be(remoteBookHdLargeYoung);
}
[Test]
public void should_order_by_youngest()
{
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), age: 10);
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), age: 5);
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.Should().Be(remoteAlbum2);
qualifiedReports.First().RemoteBook.Should().Be(remoteBook2);
}
[Test]
public void should_not_throw_if_no_albums_are_found()
{
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());
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
remoteAlbum1.Books = new List<Book>();
remoteBook1.Books = new List<Book>();
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
Subject.PrioritizeDecisions(decisions);
}
@ -149,12 +149,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenPreferredDownloadProtocol(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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Torrent);
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Usenet);
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.Release.DownloadProtocol.Should().Be(DownloadProtocol.Usenet);
@ -165,12 +165,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenPreferredDownloadProtocol(DownloadProtocol.Torrent);
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Torrent);
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Usenet);
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.Release.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
@ -179,14 +179,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_discography_pack_above_single_album()
{
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));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.FLAC));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
remoteAlbum1.ParsedBookInfo.Discography = true;
remoteBook1.ParsedBookInfo.Discography = true;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Discography.Should().BeTrue();
@ -195,14 +195,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_quality_over_discography_pack()
{
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));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
remoteAlbum1.ParsedBookInfo.Discography = true;
remoteBook1.ParsedBookInfo.Discography = true;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Discography.Should().BeFalse();
@ -211,22 +211,22 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_single_album_over_multi_album()
{
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = 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));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.Books.Count.Should().Be(remoteAlbum2.Books.Count);
qualifiedReports.First().RemoteBook.Books.Count.Should().Be(remoteBook2.Books.Count);
}
[Test]
public void should_prefer_releases_with_more_seeders()
{
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@ -237,12 +237,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var torrentInfo2 = torrentInfo1.JsonClone();
torrentInfo2.Seeders = 100;
remoteAlbum1.Release = torrentInfo1;
remoteAlbum2.Release = torrentInfo2;
remoteBook1.Release = torrentInfo1;
remoteBook2.Release = torrentInfo2;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Seeders.Should().Be(torrentInfo2.Seeders);
@ -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<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@ -264,12 +264,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var torrentInfo2 = torrentInfo1.JsonClone();
torrentInfo2.Peers = 100;
remoteAlbum1.Release = torrentInfo1;
remoteAlbum2.Release = torrentInfo2;
remoteBook1.Release = torrentInfo1;
remoteBook2.Release = torrentInfo2;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Peers.Should().Be(torrentInfo2.Peers);
@ -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<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@ -292,12 +292,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
torrentInfo2.Seeders = 0;
torrentInfo2.Peers = 100;
remoteAlbum1.Release = torrentInfo1;
remoteAlbum2.Release = torrentInfo2;
remoteBook1.Release = torrentInfo1;
remoteBook2.Release = torrentInfo2;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Peers.Should().Be(torrentInfo2.Peers);
@ -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<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@ -321,12 +321,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
torrentInfo2.Peers = 10;
torrentInfo1.Size = 250.Megabytes();
remoteAlbum1.Release = torrentInfo1;
remoteAlbum2.Release = torrentInfo2;
remoteBook1.Release = torrentInfo1;
remoteBook2.Release = torrentInfo2;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Should().Be(torrentInfo1);
@ -335,28 +335,28 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_first_release_if_age_and_size_are_too_similar()
{
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
remoteAlbum1.Release.PublishDate = DateTime.UtcNow.AddDays(-100);
remoteAlbum1.Release.Size = 200.Megabytes();
remoteBook1.Release.PublishDate = DateTime.UtcNow.AddDays(-100);
remoteBook1.Release.Size = 200.Megabytes();
remoteAlbum2.Release.PublishDate = DateTime.UtcNow.AddDays(-150);
remoteAlbum2.Release.Size = 250.Megabytes();
remoteBook2.Release.PublishDate = DateTime.UtcNow.AddDays(-150);
remoteBook2.Release.Size = 250.Megabytes();
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.Release.Should().Be(remoteAlbum1.Release);
qualifiedReports.First().RemoteBook.Release.Should().Be(remoteBook1.Release);
}
[Test]
public void should_prefer_quality_over_the_number_of_peers()
{
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.AZW3));
var torrentInfo1 = new TorrentInfo();
torrentInfo1.PublishDate = DateTime.Now;
@ -370,12 +370,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
torrentInfo2.Peers = 10;
torrentInfo1.Size = 250.Megabytes();
remoteAlbum1.Release = torrentInfo1;
remoteAlbum2.Release = torrentInfo2;
remoteBook1.Release = torrentInfo1;
remoteBook2.Release = torrentInfo2;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Should().Be(torrentInfo1);
@ -384,12 +384,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_put_higher_quality_before_lower_always()
{
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 remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
var remoteBook2 = 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));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Quality.Should().Be(Quality.MP3_320);
@ -398,15 +398,15 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_prefer_higher_score_over_lower_score()
{
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
remoteAlbum1.PreferredWordScore = 10;
remoteAlbum2.PreferredWordScore = 0;
remoteBook1.PreferredWordScore = 10;
remoteBook2.PreferredWordScore = 0;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.PreferredWordScore.Should().Be(10);
@ -419,15 +419,15 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.PreferAndUpgrade);
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)));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
remoteAlbum1.PreferredWordScore = 10;
remoteAlbum2.PreferredWordScore = 0;
remoteBook1.PreferredWordScore = 10;
remoteBook2.PreferredWordScore = 0;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Version.Should().Be(2);
@ -440,15 +440,15 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.DoNotUpgrade);
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)));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
remoteAlbum1.PreferredWordScore = 10;
remoteAlbum2.PreferredWordScore = 0;
remoteBook1.PreferredWordScore = 10;
remoteBook2.PreferredWordScore = 0;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Version.Should().Be(2);
@ -461,15 +461,15 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(s => s.DownloadPropersAndRepacks)
.Returns(ProperDownloadTypes.DoNotPrefer);
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)));
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
remoteAlbum1.PreferredWordScore = 10;
remoteAlbum2.PreferredWordScore = 0;
remoteBook1.PreferredWordScore = 10;
remoteBook2.PreferredWordScore = 0;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Quality.Should().Be(Quality.FLAC);

@ -14,15 +14,15 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class ProtocolSpecificationFixture : CoreTest<ProtocolSpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
private DelayProfile _delayProfile;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteBook();
_remoteAlbum.Release = new ReleaseInfo();
_remoteAlbum.Author = new Author();
_remoteBook = new RemoteBook();
_remoteBook.Release = new ReleaseInfo();
_remoteBook.Author = new Author();
_delayProfile = new DelayProfile();
@ -33,7 +33,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private void GivenProtocol(DownloadProtocol downloadProtocol)
{
_remoteAlbum.Release.DownloadProtocol = downloadProtocol;
_remoteBook.Release.DownloadProtocol = downloadProtocol;
}
[Test]
@ -42,7 +42,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenProtocol(DownloadProtocol.Usenet);
_delayProfile.EnableUsenet = true;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().Be(true);
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().Be(true);
}
[Test]
@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenProtocol(DownloadProtocol.Torrent);
_delayProfile.EnableTorrent = true;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().Be(true);
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().Be(true);
}
[Test]
@ -60,7 +60,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenProtocol(DownloadProtocol.Usenet);
_delayProfile.EnableUsenet = false;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().Be(false);
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().Be(false);
}
[Test]
@ -69,7 +69,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
GivenProtocol(DownloadProtocol.Torrent);
_delayProfile.EnableTorrent = false;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().Be(false);
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().Be(false);
}
}
}

@ -14,7 +14,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class QualityAllowedByProfileSpecificationFixture : CoreTest<QualityAllowedByProfileSpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
public static object[] AllowedTestCases =
{
@ -36,7 +36,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id })
.Build();
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Author = fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
@ -47,20 +47,20 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestCaseSource(nameof(AllowedTestCases))]
public void should_allow_if_quality_is_defined_in_profile(Quality qualityType)
{
_remoteAlbum.ParsedBookInfo.Quality.Quality = qualityType;
_remoteAlbum.Author.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
_remoteBook.ParsedBookInfo.Quality.Quality = qualityType;
_remoteBook.Author.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
[TestCaseSource(nameof(DeniedTestCases))]
public void should_not_allow_if_quality_is_not_defined_in_profile(Quality qualityType)
{
_remoteAlbum.ParsedBookInfo.Quality.Quality = qualityType;
_remoteAlbum.Author.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
_remoteBook.ParsedBookInfo.Quality.Quality = qualityType;
_remoteBook.Author.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
}
}

@ -19,7 +19,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
private Author _artist;
private Book _album;
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
private Author _otherArtist;
private Book _otherAlbum;
@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_releaseInfo = Builder<ReleaseInfo>.CreateNew()
.Build();
_remoteAlbum = Builder<RemoteBook>.CreateNew()
_remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320) })
@ -70,11 +70,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Returns(new List<Queue.Queue>());
}
private void GivenQueue(IEnumerable<RemoteBook> remoteAlbums, TrackedDownloadState trackedDownloadState = TrackedDownloadState.Downloading)
private void GivenQueue(IEnumerable<RemoteBook> remoteBooks, TrackedDownloadState trackedDownloadState = TrackedDownloadState.Downloading)
{
var queue = remoteAlbums.Select(remoteAlbum => new Queue.Queue
var queue = remoteBooks.Select(remoteBook => new Queue.Queue
{
RemoteBook = remoteAlbum,
RemoteBook = remoteBook,
TrackedDownloadState = trackedDownloadState
});
@ -87,20 +87,20 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_true_when_queue_is_empty()
{
GivenEmptyQueue();
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_when_artist_doesnt_match()
{
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _otherArtist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -108,7 +108,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -118,9 +118,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
@ -128,7 +128,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_artist.QualityProfile.Value.Cutoff = Quality.MP3_320.Id;
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -138,14 +138,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_when_album_doesnt_match()
{
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _otherAlbum })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -155,16 +155,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_when_qualities_are_the_same_with_higher_preferred_word_score()
{
_remoteAlbum.PreferredWordScore = 1;
_remoteBook.PreferredWordScore = 1;
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -174,14 +174,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_false_when_qualities_are_the_same()
{
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -191,8 +191,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
@ -200,7 +200,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -210,14 +210,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_matching_multi_album_is_in_queue()
{
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album, _otherAlbum })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -227,14 +227,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_multi_album_has_one_album_in_queue()
{
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -244,16 +244,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
_remoteAlbum.Books.Add(_otherAlbum);
_remoteBook.Books.Add(_otherAlbum);
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_multi_part_album_is_already_in_queue()
{
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album, _otherAlbum })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -263,16 +263,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
_remoteAlbum.Books.Add(_otherAlbum);
_remoteBook.Books.Add(_otherAlbum);
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_multi_part_album_has_two_albums_in_queue()
{
var remoteAlbums = Builder<RemoteBook>.CreateListOfSize(2)
var remoteBooks = Builder<RemoteBook>.CreateListOfSize(2)
.All()
.With(r => r.Author = _artist)
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -286,9 +286,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Books = new List<Book> { _otherAlbum })
.Build();
_remoteAlbum.Books.Add(_otherAlbum);
GivenQueue(remoteAlbums);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
_remoteBook.Books.Add(_otherAlbum);
GivenQueue(remoteBooks);
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
@ -297,7 +297,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
_artist.QualityProfile.Value.UpgradeAllowed = false;
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -307,8 +307,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
GivenQueue(new List<RemoteBook> { remoteBook });
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
@ -316,7 +316,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
@ -326,9 +326,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteBook> { remoteAlbum }, TrackedDownloadState.DownloadFailedPending);
GivenQueue(new List<RemoteBook> { remoteBook }, TrackedDownloadState.DownloadFailedPending);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
}
}

@ -11,12 +11,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class RawDiskSpecificationFixture : CoreTest<RawDiskSpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Release = new ReleaseInfo() { DownloadProtocol = DownloadProtocol.Torrent }
};
@ -24,41 +24,41 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private void WithContainer(string container)
{
_remoteAlbum.Release.Container = container;
_remoteBook.Release.Container = container;
}
[Test]
public void should_return_true_if_no_container_specified()
{
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_flac()
{
WithContainer("FLAC");
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_false_if_vob()
{
WithContainer("VOB");
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_iso()
{
WithContainer("ISO");
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_compare_case_insensitive()
{
WithContainer("vob");
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
}
}

@ -13,12 +13,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class ReleaseRestrictionsSpecificationFixture : CoreTest<ReleaseRestrictionsSpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Author = new Author
{
@ -54,7 +54,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(s => s.AllForTags(It.IsAny<HashSet<int>>()))
.Returns(new List<ReleaseProfile>());
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -62,7 +62,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenRestictions("WEBRip", null);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -70,7 +70,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenRestictions("doesnt,exist", null);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
@ -78,7 +78,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenRestictions(null, "ignored");
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -86,7 +86,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenRestictions(null, "edited");
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[TestCase("EdiTED")]
@ -97,7 +97,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenRestictions(required, null);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[TestCase("EdiTED")]
@ -108,13 +108,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenRestictions(null, ignored);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_be_false_when_release_contains_one_restricted_word_and_one_required_word()
{
_remoteAlbum.Release.Title = "[ www.Speed.cd ] - Katy Perry - Witness (2017) MP3 [320 kbps] ";
_remoteBook.Release.Title = "[ www.Speed.cd ] - Katy Perry - Witness (2017) MP3 [320 kbps] ";
Mocker.GetMock<IReleaseProfileService>()
.Setup(s => s.AllForTags(It.IsAny<HashSet<int>>()))
@ -123,7 +123,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
new ReleaseProfile { Required = "320", Ignored = "www.Speed.cd" }
});
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[TestCase("/WEB/", true)]
@ -134,7 +134,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenRestictions(pattern, null);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().Be(expected);
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().Be(expected);
}
}
}

@ -16,7 +16,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class RepackSpecificationFixture : CoreTest<RepackSpecification>
{
private ParsedBookInfo _parsedAlbumInfo;
private ParsedBookInfo _parsedBookInfo;
private List<Book> _albums;
private List<BookFile> _trackFiles;
@ -25,7 +25,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
Mocker.Resolve<UpgradableSpecification>();
_parsedAlbumInfo = Builder<ParsedBookInfo>.CreateNew()
_parsedBookInfo = Builder<ParsedBookInfo>.CreateNew()
.With(p => p.Quality = new QualityModel(Quality.FLAC,
new Revision(2, 0, false)))
.With(p => p.ReleaseGroup = "Readarr")
@ -48,12 +48,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_it_is_not_a_repack()
{
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedBookInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
Subject.IsSatisfiedBy(remoteBook, null)
.Accepted
.Should()
.BeTrue();
@ -66,14 +66,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile>());
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
_parsedBookInfo.Quality.Revision.IsRepack = true;
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedBookInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
Subject.IsSatisfiedBy(remoteBook, null)
.Accepted
.Should()
.BeTrue();
@ -82,7 +82,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_is_a_repack_for_a_different_quality()
{
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
_parsedBookInfo.Quality.Revision.IsRepack = true;
_trackFiles.Select(c =>
{
@ -95,12 +95,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedBookInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
Subject.IsSatisfiedBy(remoteBook, null)
.Accepted
.Should()
.BeTrue();
@ -109,7 +109,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_is_a_repack_for_all_existing_files()
{
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
_parsedBookInfo.Quality.Revision.IsRepack = true;
_trackFiles.Select(c =>
{
@ -122,12 +122,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedBookInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
Subject.IsSatisfiedBy(remoteBook, null)
.Accepted
.Should()
.BeTrue();
@ -136,7 +136,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_false_if_is_a_repack_for_some_but_not_all_trackfiles()
{
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
_parsedBookInfo.Quality.Revision.IsRepack = true;
_trackFiles.Select(c =>
{
@ -151,12 +151,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_trackFiles.First().ReleaseGroup = "NotReadarr";
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedBookInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
Subject.IsSatisfiedBy(remoteBook, null)
.Accepted
.Should()
.BeFalse();
@ -165,7 +165,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_false_if_is_a_repack_for_different_group()
{
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
_parsedBookInfo.Quality.Revision.IsRepack = true;
_trackFiles.Select(c =>
{
@ -178,12 +178,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedBookInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
Subject.IsSatisfiedBy(remoteBook, null)
.Accepted
.Should()
.BeFalse();
@ -192,7 +192,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_false_if_release_group_for_existing_file_is_unknown()
{
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
_parsedBookInfo.Quality.Revision.IsRepack = true;
_trackFiles.Select(c =>
{
@ -205,12 +205,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedBookInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
Subject.IsSatisfiedBy(remoteBook, null)
.Accepted
.Should()
.BeFalse();
@ -219,8 +219,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_false_if_release_group_for_release_is_unknown()
{
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
_parsedAlbumInfo.ReleaseGroup = null;
_parsedBookInfo.Quality.Revision.IsRepack = true;
_parsedBookInfo.ReleaseGroup = null;
_trackFiles.Select(c =>
{
@ -234,12 +234,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedBookInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
Subject.IsSatisfiedBy(remoteBook, null)
.Accepted
.Should()
.BeFalse();

@ -13,12 +13,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class RetentionSpecificationFixture : CoreTest<RetentionSpecification>
{
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Release = new ReleaseInfo() { DownloadProtocol = DownloadProtocol.Usenet }
};
@ -31,7 +31,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private void WithAge(int days)
{
_remoteAlbum.Release.PublishDate = DateTime.UtcNow.AddDays(-days);
_remoteBook.Release.PublishDate = DateTime.UtcNow.AddDays(-days);
}
[Test]
@ -40,7 +40,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithRetention(0);
WithAge(100);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -49,7 +49,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithRetention(1000);
WithAge(100);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -58,7 +58,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithRetention(100);
WithAge(100);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -67,7 +67,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithRetention(10);
WithAge(100);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
@ -76,18 +76,18 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
WithRetention(0);
WithAge(100);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_when_release_is_not_usenet()
{
_remoteAlbum.Release.DownloadProtocol = DownloadProtocol.Torrent;
_remoteBook.Release.DownloadProtocol = DownloadProtocol.Torrent;
WithRetention(10);
WithAge(100);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
}
}

@ -25,7 +25,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
{
private QualityProfile _profile;
private DelayProfile _delayProfile;
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
@ -41,7 +41,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.With(s => s.QualityProfile = _profile)
.Build();
_remoteAlbum = Builder<RemoteBook>.CreateNew()
_remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = artist)
.Build();
@ -52,11 +52,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
_profile.Cutoff = Quality.AZW3.Id;
_remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
_remoteAlbum.Release = new ReleaseInfo();
_remoteAlbum.Release.DownloadProtocol = DownloadProtocol.Usenet;
_remoteBook.ParsedBookInfo = new ParsedBookInfo();
_remoteBook.Release = new ReleaseInfo();
_remoteBook.Release.DownloadProtocol = DownloadProtocol.Usenet;
_remoteAlbum.Books = Builder<Book>.CreateListOfSize(1).Build().ToList();
_remoteBook.Books = Builder<Book>.CreateListOfSize(1).Build().ToList();
Mocker.GetMock<IMediaFileService>()
.Setup(s => s.GetFilesByBook(It.IsAny<int>()))
@ -100,12 +100,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_false_when_system_invoked_search_and_release_is_younger_than_delay()
{
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteBook.Release.PublishDate = DateTime.UtcNow;
_delayProfile.UsenetDelay = 720;
Subject.IsSatisfiedBy(_remoteAlbum, new BookSearchCriteria()).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, new BookSearchCriteria()).Accepted.Should().BeFalse();
}
[Test]
@ -113,44 +113,44 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
{
_delayProfile.UsenetDelay = 0;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_true_when_quality_is_last_allowed_in_profile()
{
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_true_when_release_is_older_than_delay()
{
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow.AddHours(-10);
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteBook.Release.PublishDate = DateTime.UtcNow.AddHours(-10);
_delayProfile.UsenetDelay = 60;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_false_when_release_is_younger_than_delay()
{
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteBook.Release.PublishDate = DateTime.UtcNow;
_delayProfile.UsenetDelay = 720;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
[Test]
public void should_be_true_when_release_is_a_proper_for_existing_album()
{
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
_remoteBook.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.MP3_320));
GivenUpgradeForExistingFile();
@ -161,14 +161,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
_delayProfile.UsenetDelay = 720;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_true_when_release_is_a_real_for_existing_album()
{
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(real: 1));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(real: 1));
_remoteBook.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.MP3_320));
GivenUpgradeForExistingFile();
@ -179,20 +179,20 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
_delayProfile.UsenetDelay = 720;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_false_when_release_is_proper_for_existing_album_of_different_quality()
{
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.AZW3, new Revision(version: 2));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.AZW3, new Revision(version: 2));
_remoteBook.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.PDF));
_delayProfile.UsenetDelay = 720;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
}
}

@ -14,7 +14,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
private Author _artist1;
private Author _artist2;
private RemoteBook _remoteAlbum = new RemoteBook();
private RemoteBook _remoteBook = new RemoteBook();
private SearchCriteriaBase _searchCriteria = new BookSearchCriteria();
[SetUp]
@ -23,7 +23,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
_artist1 = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
_artist2 = Builder<Author>.CreateNew().With(s => s.Id = 2).Build();
_remoteAlbum.Author = _artist1;
_remoteBook.Author = _artist1;
}
[Test]
@ -31,7 +31,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
_searchCriteria.Author = _artist2;
Subject.IsSatisfiedBy(_remoteAlbum, _searchCriteria).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, _searchCriteria).Accepted.Should().BeFalse();
}
[Test]
@ -39,7 +39,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
_searchCriteria.Author = _artist1;
Subject.IsSatisfiedBy(_remoteAlbum, _searchCriteria).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, _searchCriteria).Accepted.Should().BeTrue();
}
}
}

@ -16,7 +16,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
public class TorrentSeedingSpecificationFixture : TestBase<TorrentSeedingSpecification>
{
private Author _artist;
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
private IndexerDefinition _indexerDefinition;
[SetUp]
@ -24,7 +24,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
_artist = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
_remoteAlbum = new RemoteBook
_remoteBook = new RemoteBook
{
Author = _artist,
Release = new TorrentInfo
@ -47,27 +47,27 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
private void GivenReleaseSeeders(int? seeders)
{
(_remoteAlbum.Release as TorrentInfo).Seeders = seeders;
(_remoteBook.Release as TorrentInfo).Seeders = seeders;
}
[Test]
public void should_return_true_if_not_torrent()
{
_remoteAlbum.Release = new ReleaseInfo
_remoteBook.Release = new ReleaseInfo
{
IndexerId = 1,
Title = "Artist - Album [FLAC-RlsGrp]"
};
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_indexer_not_specified()
{
_remoteAlbum.Release.IndexerId = 0;
_remoteBook.Release.IndexerId = 0;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -77,7 +77,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
.Setup(v => v.Get(It.IsAny<int>()))
.Callback<int>(i => { throw new ModelNotFoundException(typeof(IndexerDefinition), i); });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[Test]
@ -85,7 +85,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
GivenReleaseSeeders(null);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[TestCase(5)]
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
GivenReleaseSeeders(seeders);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
}
[TestCase(0)]
@ -103,7 +103,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
GivenReleaseSeeders(seeders);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
}
}
}

@ -33,12 +33,12 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
.With(h => h.Title = "Drone.S01E01.HDTV")
.Build();
var remoteAlbum = BuildRemoteAlbum();
var remoteBook = BuildRemoteAlbum();
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(c => c.State = TrackedDownloadState.Downloading)
.With(c => c.DownloadItem = completed)
.With(c => c.RemoteBook = remoteAlbum)
.With(c => c.RemoteBook = remoteBook)
.Build();
Mocker.GetMock<IDownloadClient>()
@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetArtist("Drone.S01E01.HDTV"))
.Returns(remoteAlbum.Author);
.Returns(remoteBook.Author);
}
private Book CreateAlbum(int id)

@ -29,12 +29,12 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
.With(h => h.Title = "Drone.S01E01.HDTV")
.Build();
var remoteAlbum = BuildRemoteAlbum();
var remoteBook = BuildRemoteAlbum();
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(c => c.State = TrackedDownloadState.Downloading)
.With(c => c.DownloadItem = completed)
.With(c => c.RemoteBook = remoteAlbum)
.With(c => c.RemoteBook = remoteBook)
.Build();
Mocker.GetMock<IDownloadClient>()
@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetArtist("Drone.S01E01.HDTV"))
.Returns(remoteAlbum.Author);
.Returns(remoteBook.Author);
}
private RemoteBook BuildRemoteAlbum()

@ -39,32 +39,32 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
private RemoteBook GetRemoteAlbum(List<Book> albums, QualityModel quality, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
{
var remoteAlbum = new RemoteBook();
remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
remoteAlbum.ParsedBookInfo.Quality = quality;
var remoteBook = new RemoteBook();
remoteBook.ParsedBookInfo = new ParsedBookInfo();
remoteBook.ParsedBookInfo.Quality = quality;
remoteAlbum.Books = new List<Book>();
remoteAlbum.Books.AddRange(albums);
remoteBook.Books = new List<Book>();
remoteBook.Books.AddRange(albums);
remoteAlbum.Release = new ReleaseInfo();
remoteAlbum.Release.DownloadProtocol = downloadProtocol;
remoteAlbum.Release.PublishDate = DateTime.UtcNow;
remoteBook.Release = new ReleaseInfo();
remoteBook.Release.DownloadProtocol = downloadProtocol;
remoteBook.Release.PublishDate = DateTime.UtcNow;
remoteAlbum.Author = Builder<Author>.CreateNew()
remoteBook.Author = Builder<Author>.CreateNew()
.With(e => e.QualityProfile = new QualityProfile { Items = Qualities.QualityFixture.GetDefaultQualities() })
.Build();
return remoteAlbum;
return remoteBook;
}
[Test]
public void should_download_report_if_album_was_not_already_downloaded()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteBook));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Once());
@ -74,11 +74,11 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_only_download_album_once()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteBook));
decisions.Add(new DownloadDecision(remoteBook));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Once());
@ -87,17 +87,17 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
[Test]
public void should_not_download_if_any_album_was_already_downloaded()
{
var remoteAlbum1 = GetRemoteAlbum(
var remoteBook1 = GetRemoteAlbum(
new List<Book> { GetAlbum(1) },
new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GetRemoteAlbum(
var remoteBook2 = GetRemoteAlbum(
new List<Book> { GetAlbum(1), GetAlbum(2) },
new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Once());
@ -107,10 +107,10 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_return_downloaded_reports()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteBook));
Subject.ProcessDecisions(decisions).Grabbed.Should().HaveCount(1);
}
@ -118,17 +118,17 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
[Test]
public void should_return_all_downloaded_reports()
{
var remoteAlbum1 = GetRemoteAlbum(
var remoteBook1 = GetRemoteAlbum(
new List<Book> { GetAlbum(1) },
new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GetRemoteAlbum(
var remoteBook2 = GetRemoteAlbum(
new List<Book> { GetAlbum(2) },
new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
Subject.ProcessDecisions(decisions).Grabbed.Should().HaveCount(2);
}
@ -136,22 +136,22 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
[Test]
public void should_only_return_downloaded_reports()
{
var remoteAlbum1 = GetRemoteAlbum(
var remoteBook1 = GetRemoteAlbum(
new List<Book> { GetAlbum(1) },
new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GetRemoteAlbum(
var remoteBook2 = GetRemoteAlbum(
new List<Book> { GetAlbum(2) },
new QualityModel(Quality.MP3_320));
var remoteAlbum3 = GetRemoteAlbum(
var remoteBook3 = GetRemoteAlbum(
new List<Book> { GetAlbum(2) },
new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteAlbum3));
decisions.Add(new DownloadDecision(remoteBook1));
decisions.Add(new DownloadDecision(remoteBook2));
decisions.Add(new DownloadDecision(remoteBook3));
Subject.ProcessDecisions(decisions).Grabbed.Should().HaveCount(2);
}
@ -160,10 +160,10 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_not_add_to_downloaded_list_when_download_fails()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteBook));
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.IsAny<RemoteBook>())).Throws(new Exception());
Subject.ProcessDecisions(decisions).Grabbed.Should().BeEmpty();
@ -184,10 +184,10 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_not_grab_if_pending()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum, new Rejection("Failure!", RejectionType.Temporary)));
decisions.Add(new DownloadDecision(remoteBook, new Rejection("Failure!", RejectionType.Temporary)));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Never());
@ -197,11 +197,11 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_not_add_to_pending_if_album_was_grabbed()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteAlbum, new Rejection("Failure!", RejectionType.Temporary)));
decisions.Add(new DownloadDecision(remoteBook));
decisions.Add(new DownloadDecision(remoteBook, new Rejection("Failure!", RejectionType.Temporary)));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IPendingReleaseService>().Verify(v => v.AddMany(It.IsAny<List<Tuple<DownloadDecision, PendingReleaseReason>>>()), Times.Never());
@ -211,11 +211,11 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_add_to_pending_even_if_already_added_to_pending()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum, new Rejection("Failure!", RejectionType.Temporary)));
decisions.Add(new DownloadDecision(remoteAlbum, new Rejection("Failure!", RejectionType.Temporary)));
decisions.Add(new DownloadDecision(remoteBook, new Rejection("Failure!", RejectionType.Temporary)));
decisions.Add(new DownloadDecision(remoteBook, new Rejection("Failure!", RejectionType.Temporary)));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IPendingReleaseService>().Verify(v => v.AddMany(It.IsAny<List<Tuple<DownloadDecision, PendingReleaseReason>>>()), Times.Once());
@ -225,11 +225,11 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_add_to_failed_if_already_failed_for_that_protocol()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteBook));
decisions.Add(new DownloadDecision(remoteBook));
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.IsAny<RemoteBook>()))
.Throws(new DownloadClientUnavailableException("Download client failed"));
@ -242,12 +242,12 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_not_add_to_failed_if_failed_for_a_different_protocol()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320), DownloadProtocol.Usenet);
var remoteAlbum2 = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320), DownloadProtocol.Torrent);
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320), DownloadProtocol.Usenet);
var remoteBook2 = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320), DownloadProtocol.Torrent);
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteAlbum2));
decisions.Add(new DownloadDecision(remoteBook));
decisions.Add(new DownloadDecision(remoteBook2));
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.Is<RemoteBook>(r => r.Release.DownloadProtocol == DownloadProtocol.Usenet)))
.Throws(new DownloadClientUnavailableException("Download client failed"));
@ -261,14 +261,14 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_add_to_rejected_if_release_unavailable_on_indexer()
{
var albums = new List<Book> { GetAlbum(1) };
var remoteAlbum = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteBook));
Mocker.GetMock<IDownloadService>()
.Setup(s => s.DownloadReport(It.IsAny<RemoteBook>()))
.Throws(new ReleaseUnavailableException(remoteAlbum.Release, "That 404 Error is not just a Quirk"));
.Throws(new ReleaseUnavailableException(remoteBook.Release, "That 404 Error is not just a Quirk"));
var result = Subject.ProcessDecisions(decisions);

@ -89,17 +89,17 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
protected override RemoteBook CreateRemoteAlbum()
{
var remoteAlbum = base.CreateRemoteAlbum();
var remoteBook = base.CreateRemoteAlbum();
var torrentInfo = new TorrentInfo();
torrentInfo.Title = remoteAlbum.Release.Title;
torrentInfo.DownloadUrl = remoteAlbum.Release.DownloadUrl;
torrentInfo.DownloadProtocol = remoteAlbum.Release.DownloadProtocol;
torrentInfo.Title = remoteBook.Release.Title;
torrentInfo.DownloadUrl = remoteBook.Release.DownloadUrl;
torrentInfo.DownloadProtocol = remoteBook.Release.DownloadProtocol;
torrentInfo.MagnetUrl = "magnet:?xt=urn:btih:755248817d32b00cc853e633ecdc48e4c21bff15&dn=Artist.Album.FLAC.loseless-DEFiNE%5Brartv%5D&tr=http%3A%2F%2Ftracker.trackerfix.com%3A80%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2710&tr=udp%3A%2F%2F9.rarbg.to%3A2710";
remoteAlbum.Release = torrentInfo;
remoteBook.Release = torrentInfo;
return remoteAlbum;
return remoteBook;
}
[Test]
@ -141,9 +141,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
[Test]
public void Download_should_download_file_if_it_doesnt_exist()
{
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Subject.Download(remoteAlbum);
Subject.Download(remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Once());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(_filePath), Times.Once());
@ -155,9 +155,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
{
GivenMagnetFilePath();
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = null;
Subject.Download(remoteAlbum);
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = null;
Subject.Download(remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Never());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(_filePath), Times.Never());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(_magnetFilePath), Times.Once());
@ -173,10 +173,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
Subject.Definition.Settings.As<TorrentBlackholeSettings>().MagnetFileExtension = magnetFileExtension;
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = null;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = null;
Subject.Download(remoteAlbum);
Subject.Download(remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Never());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(_filePath), Times.Never());
@ -188,10 +188,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
public void Download_should_not_save_magnet_if_disabled()
{
GivenMagnetFilePath();
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = null;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = null;
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteAlbum));
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Never());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(_filePath), Times.Never());
@ -204,9 +204,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
{
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Subject.Download(remoteAlbum);
Subject.Download(remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Once());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(_filePath), Times.Once());
@ -220,10 +220,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
var illegalTitle = "Radiohead - Scotch Mist [2008/FLAC/Lossless]";
var expectedFilename = Path.Combine(_blackholeFolder, "Radiohead - Scotch Mist [2008+FLAC+Lossless]" + Path.GetExtension(_filePath));
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.Title = illegalTitle;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.Title = illegalTitle;
Subject.Download(remoteAlbum);
Subject.Download(remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Once());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(expectedFilename), Times.Once());
@ -233,10 +233,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
[Test]
public void Download_should_throw_if_magnet_and_torrent_url_does_not_exist()
{
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = null;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = null;
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteAlbum));
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
}
[Test]
@ -308,9 +308,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
[Test]
public void should_return_null_hash()
{
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Subject.Download(remoteAlbum).Should().BeNull();
Subject.Download(remoteBook).Should().BeNull();
}
}
}

@ -113,9 +113,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
[Test]
public void Download_should_download_file_if_it_doesnt_exist()
{
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Subject.Download(remoteAlbum);
Subject.Download(remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Once());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(_filePath), Times.Once());
@ -128,10 +128,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
var illegalTitle = "Radiohead - Scotch Mist [2008/FLAC/Lossless]";
var expectedFilename = Path.Combine(_blackholeFolder, "Radiohead - Scotch Mist [2008+FLAC+Lossless]" + Path.GetExtension(_filePath));
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.Title = illegalTitle;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.Title = illegalTitle;
Subject.Download(remoteAlbum);
Subject.Download(remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Once());
Mocker.GetMock<IDiskProvider>().Verify(c => c.OpenWriteStream(expectedFilename), Times.Once());

@ -204,9 +204,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DelugeTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -216,10 +216,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DelugeTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = magnetUrl;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = magnetUrl;
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().Be(expectedHash);
}

@ -44,19 +44,19 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
protected virtual RemoteBook CreateRemoteAlbum()
{
var remoteAlbum = new RemoteBook();
remoteAlbum.Release = new ReleaseInfo();
remoteAlbum.Release.Title = _title;
remoteAlbum.Release.DownloadUrl = _downloadUrl;
remoteAlbum.Release.DownloadProtocol = Subject.Protocol;
var remoteBook = new RemoteBook();
remoteBook.Release = new ReleaseInfo();
remoteBook.Release.Title = _title;
remoteBook.Release.DownloadUrl = _downloadUrl;
remoteBook.Release.DownloadProtocol = Subject.Protocol;
remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
remoteBook.ParsedBookInfo = new ParsedBookInfo();
remoteAlbum.Books = new List<Book>();
remoteBook.Books = new List<Book>();
remoteAlbum.Author = new Author();
remoteBook.Author = new Author();
return remoteAlbum;
return remoteBook;
}
protected void VerifyIdentifiable(DownloadClientItem downloadClientItem)

@ -387,9 +387,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
GivenTvDirectory();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -404,9 +404,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
GivenMusicCategory();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -420,9 +420,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
GivenSerialNumber();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -495,13 +495,13 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
[Test]
public void Download_should_throw_and_not_add_task_if_cannot_get_serial_number()
{
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Mocker.GetMock<ISerialNumberProvider>()
.Setup(s => s.GetSerialNumber(_settings))
.Throws(new ApplicationException("Some unknown exception, HttpException or DownloadClientException"));
Assert.Throws(Is.InstanceOf<Exception>(), () => Subject.Download(remoteAlbum));
Assert.Throws(Is.InstanceOf<Exception>(), () => Subject.Download(remoteBook));
Mocker.GetMock<IDownloadStationTaskProxy>()
.Verify(v => v.AddTaskFromUrl(It.IsAny<string>(), null, _settings), Times.Never());

@ -33,14 +33,14 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
protected string _defaultDestination = "somepath";
protected OsPath _physicalPath = new OsPath("/mnt/sdb1/mydata");
protected RemoteBook _remoteAlbum;
protected RemoteBook _remoteBook;
protected Dictionary<string, object> _downloadStationConfigItems;
[SetUp]
public void Setup()
{
_remoteAlbum = CreateRemoteAlbum();
_remoteBook = CreateRemoteAlbum();
_settings = new DownloadStationSettings()
{
@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
Detail = new Dictionary<string, string>
{
{ "destination", "shared/folder" },
{ "uri", FileNameBuilder.CleanFileName(_remoteAlbum.Release.Title) + ".nzb" }
{ "uri", FileNameBuilder.CleanFileName(_remoteBook.Release.Title) + ".nzb" }
},
Transfer = new Dictionary<string, string>
{
@ -89,7 +89,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
Detail = new Dictionary<string, string>
{
{ "destination", "shared/folder" },
{ "uri", FileNameBuilder.CleanFileName(_remoteAlbum.Release.Title) + ".nzb" }
{ "uri", FileNameBuilder.CleanFileName(_remoteBook.Release.Title) + ".nzb" }
},
Transfer = new Dictionary<string, string>
{
@ -112,7 +112,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
Detail = new Dictionary<string, string>
{
{ "destination", "shared/folder" },
{ "uri", FileNameBuilder.CleanFileName(_remoteAlbum.Release.Title) + ".nzb" }
{ "uri", FileNameBuilder.CleanFileName(_remoteBook.Release.Title) + ".nzb" }
},
Transfer = new Dictionary<string, string>
{
@ -135,7 +135,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
Detail = new Dictionary<string, string>
{
{ "destination", "shared/folder" },
{ "uri", FileNameBuilder.CleanFileName(_remoteAlbum.Release.Title) + ".nzb" }
{ "uri", FileNameBuilder.CleanFileName(_remoteBook.Release.Title) + ".nzb" }
},
Transfer = new Dictionary<string, string>
{
@ -158,7 +158,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
Detail = new Dictionary<string, string>
{
{ "destination", "shared/folder" },
{ "uri", FileNameBuilder.CleanFileName(_remoteAlbum.Release.Title) + ".nzb" }
{ "uri", FileNameBuilder.CleanFileName(_remoteBook.Release.Title) + ".nzb" }
},
Transfer = new Dictionary<string, string>
{
@ -264,9 +264,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
GivenTvDirectory();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -281,9 +281,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
GivenMusicCategory();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -297,9 +297,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
GivenSerialNumber();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -372,13 +372,13 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
[Test]
public void Download_should_throw_and_not_add_task_if_cannot_get_serial_number()
{
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Mocker.GetMock<ISerialNumberProvider>()
.Setup(s => s.GetSerialNumber(_settings))
.Throws(new ApplicationException("Some unknown exception, HttpException or DownloadClientException"));
Assert.Throws(Is.InstanceOf<Exception>(), () => Subject.Download(remoteAlbum));
Assert.Throws(Is.InstanceOf<Exception>(), () => Subject.Download(remoteBook));
Mocker.GetMock<IDownloadStationTaskProxy>()
.Verify(v => v.AddTaskFromUrl(It.IsAny<string>(), null, _settings), Times.Never());

@ -200,9 +200,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.HadoukenTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -279,14 +279,14 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.HadoukenTests
[Test]
public void Download_from_magnet_link_should_return_hash_uppercase()
{
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = "magnet:?xt=urn:btih:a45129e59d8750f9da982f53552b1e4f0457ee9f";
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:a45129e59d8750f9da982f53552b1e4f0457ee9f";
Mocker.GetMock<IHadoukenProxy>()
.Setup(v => v.AddTorrentUri(It.IsAny<HadoukenSettings>(), It.IsAny<string>()));
var result = Subject.Download(remoteAlbum);
var result = Subject.Download(remoteBook);
Assert.IsFalse(result.Any(c => char.IsLower(c)));
}
@ -294,13 +294,13 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.HadoukenTests
[Test]
public void Download_from_torrent_file_should_return_hash_uppercase()
{
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Mocker.GetMock<IHadoukenProxy>()
.Setup(v => v.AddTorrentFile(It.IsAny<HadoukenSettings>(), It.IsAny<byte[]>()))
.Returns("hash");
var result = Subject.Download(remoteAlbum);
var result = Subject.Download(remoteBook);
Assert.IsFalse(result.Any(c => char.IsLower(c)));
}

@ -204,9 +204,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbVortexTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -216,9 +216,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbVortexTests
{
GivenFailedDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Assert.Throws<DownloadClientException>(() => Subject.Download(remoteAlbum));
Assert.Throws<DownloadClientException>(() => Subject.Download(remoteBook));
}
[Test]

@ -335,9 +335,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbgetTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -347,9 +347,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbgetTests
{
GivenFailedDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
Assert.Throws<DownloadClientRejectedReleaseException>(() => Subject.Download(remoteAlbum));
Assert.Throws<DownloadClientRejectedReleaseException>(() => Subject.Download(remoteBook));
}
[Test]

@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
private string _pneumaticFolder;
private string _strmFolder;
private string _nzbPath;
private RemoteBook _remoteAlbum;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
@ -30,12 +30,12 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
_nzbPath = Path.Combine(_pneumaticFolder, _title + ".nzb").AsOsAgnostic();
_strmFolder = @"d:\unsorted tv\".AsOsAgnostic();
_remoteAlbum = new RemoteBook();
_remoteAlbum.Release = new ReleaseInfo();
_remoteAlbum.Release.Title = _title;
_remoteAlbum.Release.DownloadUrl = _nzbUrl;
_remoteBook = new RemoteBook();
_remoteBook.Release = new ReleaseInfo();
_remoteBook.Release.Title = _title;
_remoteBook.Release.DownloadUrl = _nzbUrl;
_remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
_remoteBook.ParsedBookInfo = new ParsedBookInfo();
Subject.Definition = new DownloadClientDefinition();
Subject.Definition.Settings = new PneumaticSettings
@ -53,7 +53,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
[Test]
public void should_download_file_if_it_doesnt_exist()
{
Subject.Download(_remoteAlbum);
Subject.Download(_remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.DownloadFile(_nzbUrl, _nzbPath, null), Times.Once());
}
@ -63,16 +63,16 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
{
WithFailedDownload();
Assert.Throws<WebException>(() => Subject.Download(_remoteAlbum));
Assert.Throws<WebException>(() => Subject.Download(_remoteBook));
}
[Test]
public void should_throw_if_discography_download()
{
_remoteAlbum.Release.Title = "Alien Ant Farm - Discography";
_remoteAlbum.ParsedBookInfo.Discography = true;
_remoteBook.Release.Title = "Alien Ant Farm - Discography";
_remoteBook.ParsedBookInfo.Discography = true;
Assert.Throws<NotSupportedException>(() => Subject.Download(_remoteAlbum));
Assert.Throws<NotSupportedException>(() => Subject.Download(_remoteBook));
}
[Test]
@ -86,9 +86,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
{
var illegalTitle = "Saturday Night Live - S38E08 - Jeremy Renner/Maroon 5 [SDTV]";
var expectedFilename = Path.Combine(_pneumaticFolder, "Saturday Night Live - S38E08 - Jeremy Renner+Maroon 5 [SDTV].nzb");
_remoteAlbum.Release.Title = illegalTitle;
_remoteBook.Release.Title = illegalTitle;
Subject.Download(_remoteAlbum);
Subject.Download(_remoteBook);
Mocker.GetMock<IHttpClient>().Verify(c => c.DownloadFile(It.IsAny<string>(), expectedFilename, null), Times.Once());
}

@ -263,9 +263,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -275,10 +275,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = magnetUrl;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = magnetUrl;
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().Be(expectedHash);
}
@ -290,10 +290,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
.Setup(s => s.GetConfig(It.IsAny<QBittorrentSettings>()))
.Returns(new QBittorrentPreferences() { DhtEnabled = false });
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = "magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR";
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR";
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteAlbum));
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
}
[Test]
@ -303,10 +303,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
.Setup(s => s.GetConfig(It.IsAny<QBittorrentSettings>()))
.Returns(new QBittorrentPreferences { DhtEnabled = false });
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = "magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR&tr=udp://abc";
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR&tr=udp://abc";
Assert.DoesNotThrow(() => Subject.Download(remoteAlbum));
Assert.DoesNotThrow(() => Subject.Download(remoteBook));
Mocker.GetMock<IQBittorrentProxy>()
.Verify(s => s.AddTorrentFromUrl(It.IsAny<string>(), It.IsAny<QBittorrentSettings>()), Times.Once());
@ -318,9 +318,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
GivenHighPriority();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
Mocker.GetMock<IQBittorrentProxy>()
.Verify(v => v.MoveTorrentToTopInQueue(It.IsAny<string>(), It.IsAny<QBittorrentSettings>()), Times.Once());
@ -336,9 +336,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
.Setup(v => v.MoveTorrentToTopInQueue(It.IsAny<string>(), It.IsAny<QBittorrentSettings>()))
.Throws(new HttpException(new HttpResponse(new HttpRequest("http://me.local/"), new HttpHeader(), new byte[0], System.Net.HttpStatusCode.Forbidden)));
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -370,9 +370,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
GivenRedirectToMagnet();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -383,9 +383,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
GivenRedirectToTorrent();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}

@ -115,9 +115,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.RTorrentTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}

@ -298,10 +298,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.Title = title;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.Title = title;
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
Mocker.GetMock<ISabnzbdProxy>()
.Verify(v => v.DownloadNzb(It.IsAny<byte[]>(), filename, It.IsAny<string>(), It.IsAny<int>(), It.IsAny<SabnzbdSettings>()), Times.Once());
@ -312,9 +312,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -353,14 +353,14 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests
.Setup(s => s.DownloadNzb(It.IsAny<byte[]>(), It.IsAny<string>(), It.IsAny<string>(), (int)SabnzbdPriority.High, It.IsAny<SabnzbdSettings>()))
.Returns(new SabnzbdAddResponse { Ids = new List<string> { "readarrtest" } });
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Books = Builder<Book>.CreateListOfSize(1)
var remoteBook = CreateRemoteAlbum();
remoteBook.Books = Builder<Book>.CreateListOfSize(1)
.All()
.With(e => e.ReleaseDate = DateTime.Today)
.Build()
.ToList();
Subject.Download(remoteAlbum);
Subject.Download(remoteBook);
Mocker.GetMock<ISabnzbdProxy>()
.Verify(v => v.DownloadNzb(It.IsAny<byte[]>(), It.IsAny<string>(), It.IsAny<string>(), (int)SabnzbdPriority.High, It.IsAny<SabnzbdSettings>()), Times.Once());

@ -58,9 +58,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -71,9 +71,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
GivenTvDirectory();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -87,9 +87,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
GivenMusicCategory();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -105,9 +105,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
_transmissionConfigItems["download-dir"] += "/";
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -120,9 +120,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -135,10 +135,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = magnetUrl;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = magnetUrl;
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().Be(expectedHash);
}

@ -232,9 +232,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.UTorrentTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -256,10 +256,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.UTorrentTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = magnetUrl;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = magnetUrl;
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().Be(expectedHash);
}
@ -355,9 +355,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.UTorrentTests
GivenRedirectToMagnet();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -368,9 +368,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.UTorrentTests
GivenRedirectToTorrent();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}

@ -67,9 +67,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
}
@ -80,9 +80,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
GivenTvDirectory();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -96,9 +96,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
GivenMusicCategory();
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -114,9 +114,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
_transmissionConfigItems["download-dir"] += "/";
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -129,9 +129,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
var remoteBook = CreateRemoteAlbum();
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().NotBeNullOrEmpty();
@ -144,10 +144,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
{
GivenSuccessfulDownload();
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Release.DownloadUrl = magnetUrl;
var remoteBook = CreateRemoteAlbum();
remoteBook.Release.DownloadUrl = magnetUrl;
var id = Subject.Download(remoteAlbum);
var id = Subject.Download(remoteBook);
id.Should().Be(expectedHash);
}

@ -32,7 +32,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
_grabHistory = Builder<History.History>.CreateListOfSize(2).BuildList();
var remoteAlbum = new RemoteBook
var remoteBook = new RemoteBook
{
Author = new Author(),
Books = new List<Book> { new Book { Id = 1 } }
@ -41,7 +41,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(c => c.State = TrackedDownloadState.DownloadFailedPending)
.With(c => c.DownloadItem = completed)
.With(c => c.RemoteBook = remoteAlbum)
.With(c => c.RemoteBook = remoteBook)
.Build();
Mocker.GetMock<IHistoryService>()

@ -32,7 +32,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
_grabHistory = Builder<History.History>.CreateListOfSize(2).BuildList();
var remoteAlbum = new RemoteBook
var remoteBook = new RemoteBook
{
Author = new Author(),
Books = new List<Book> { new Book { Id = 1 } }
@ -41,7 +41,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(c => c.State = TrackedDownloadState.Downloading)
.With(c => c.DownloadItem = completed)
.With(c => c.RemoteBook = remoteAlbum)
.With(c => c.RemoteBook = remoteBook)
.Build();
Mocker.GetMock<IHistoryService>()

@ -25,8 +25,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
private Book _album;
private QualityProfile _profile;
private ReleaseInfo _release;
private ParsedBookInfo _parsedAlbumInfo;
private RemoteBook _remoteAlbum;
private ParsedBookInfo _parsedBookInfo;
private RemoteBook _remoteBook;
private List<PendingRelease> _heldReleases;
[SetUp]
@ -54,16 +54,16 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
_release = Builder<ReleaseInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_parsedBookInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
_remoteAlbum = new RemoteBook();
_remoteAlbum.Books = new List<Book> { _album };
_remoteAlbum.Author = _artist;
_remoteAlbum.ParsedBookInfo = _parsedAlbumInfo;
_remoteAlbum.Release = _release;
_remoteBook = new RemoteBook();
_remoteBook.Books = new List<Book> { _album };
_remoteBook.Author = _artist;
_remoteBook.ParsedBookInfo = _parsedBookInfo;
_remoteBook.Release = _release;
_temporarilyRejected = new DownloadDecision(_remoteAlbum, new Rejection("Temp Rejected", RejectionType.Temporary));
_temporarilyRejected = new DownloadDecision(_remoteBook, new Rejection("Temp Rejected", RejectionType.Temporary));
_heldReleases = new List<PendingRelease>();

@ -25,8 +25,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
private Book _album;
private QualityProfile _profile;
private ReleaseInfo _release;
private ParsedBookInfo _parsedAlbumInfo;
private RemoteBook _remoteAlbum;
private ParsedBookInfo _parsedBookInfo;
private RemoteBook _remoteBook;
private List<PendingRelease> _heldReleases;
[SetUp]
@ -54,16 +54,16 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
_release = Builder<ReleaseInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_parsedBookInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
_remoteAlbum = new RemoteBook();
_remoteAlbum.Books = new List<Book> { _album };
_remoteAlbum.Author = _artist;
_remoteAlbum.ParsedBookInfo = _parsedAlbumInfo;
_remoteAlbum.Release = _release;
_remoteBook = new RemoteBook();
_remoteBook.Books = new List<Book> { _album };
_remoteBook.Author = _artist;
_remoteBook.ParsedBookInfo = _parsedBookInfo;
_remoteBook.Release = _release;
_temporarilyRejected = new DownloadDecision(_remoteAlbum, new Rejection("Temp Rejected", RejectionType.Temporary));
_temporarilyRejected = new DownloadDecision(_remoteBook, new Rejection("Temp Rejected", RejectionType.Temporary));
_heldReleases = new List<PendingRelease>();
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
private void GivenHeldRelease(QualityModel quality)
{
var parsedEpisodeInfo = _parsedAlbumInfo.JsonClone();
var parsedEpisodeInfo = _parsedBookInfo.JsonClone();
parsedEpisodeInfo.Quality = quality;
var heldReleases = Builder<PendingRelease>.CreateListOfSize(1)
@ -110,9 +110,9 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
[Test]
public void should_delete_if_the_grabbed_quality_is_the_same()
{
GivenHeldRelease(_parsedAlbumInfo.Quality);
GivenHeldRelease(_parsedBookInfo.Quality);
Subject.Handle(new BookGrabbedEvent(_remoteAlbum));
Subject.Handle(new BookGrabbedEvent(_remoteBook));
VerifyDelete();
}
@ -122,7 +122,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
{
GivenHeldRelease(new QualityModel(Quality.MP3_320));
Subject.Handle(new BookGrabbedEvent(_remoteAlbum));
Subject.Handle(new BookGrabbedEvent(_remoteBook));
VerifyDelete();
}
@ -132,7 +132,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
{
GivenHeldRelease(new QualityModel(Quality.FLAC));
Subject.Handle(new BookGrabbedEvent(_remoteAlbum));
Subject.Handle(new BookGrabbedEvent(_remoteBook));
VerifyNoDelete();
}

@ -26,8 +26,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
private Book _album;
private QualityProfile _profile;
private ReleaseInfo _release;
private ParsedBookInfo _parsedAlbumInfo;
private RemoteBook _remoteAlbum;
private ParsedBookInfo _parsedBookInfo;
private RemoteBook _remoteBook;
[SetUp]
public void Setup()
@ -54,16 +54,16 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
_release = Builder<ReleaseInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_parsedBookInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
_remoteAlbum = new RemoteBook();
_remoteAlbum.Books = new List<Book> { _album };
_remoteAlbum.Author = _artist;
_remoteAlbum.ParsedBookInfo = _parsedAlbumInfo;
_remoteAlbum.Release = _release;
_remoteBook = new RemoteBook();
_remoteBook.Books = new List<Book> { _album };
_remoteBook.Author = _artist;
_remoteBook.ParsedBookInfo = _parsedBookInfo;
_remoteBook.Release = _release;
_temporarilyRejected = new DownloadDecision(_remoteAlbum, new Rejection("Temp Rejected", RejectionType.Temporary));
_temporarilyRejected = new DownloadDecision(_remoteBook, new Rejection("Temp Rejected", RejectionType.Temporary));
Mocker.GetMock<IPendingReleaseRepository>()
.Setup(s => s.All())

@ -22,12 +22,12 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
_albums = new List<Book>();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Books = _albums)
.Build();
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(t => t.RemoteBook = remoteAlbum)
.With(t => t.RemoteBook = remoteBook)
.Build();
_historyItems = new List<History.History>();

@ -39,7 +39,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenDownloadHistory();
var remoteAlbum = new RemoteBook
var remoteBook = new RemoteBook
{
Author = new Author() { Id = 5 },
Books = new List<Book> { new Book { Id = 4 } },
@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
Mocker.GetMock<IParsingService>()
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Album" && i.AuthorName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
.Returns(remoteAlbum);
.Returns(remoteBook);
var client = new DownloadClientDefinition()
{
@ -80,7 +80,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenDownloadHistory();
var remoteAlbum = new RemoteBook
var remoteBook = new RemoteBook
{
Author = new Author() { Id = 5 },
Books = new List<Book> { new Book { Id = 4 } },
@ -93,7 +93,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
Mocker.GetMock<IParsingService>()
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Album" && i.AuthorName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
.Returns(remoteAlbum);
.Returns(remoteBook);
var client = new DownloadClientDefinition()
{
@ -117,7 +117,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
.Returns(default(RemoteBook));
// handle deletion event
Subject.Handle(new BookDeletedEvent(remoteAlbum.Books.First(), false, false));
Subject.Handle(new BookDeletedEvent(remoteBook.Books.First(), false, false));
// verify download has null remote album
var trackedDownloads = Subject.GetTrackedDownloads();

@ -38,7 +38,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
.Returns(_artist);
Mocker.GetMock<IMetadataFileService>()
.Setup(c => c.GetFilesByArtist(_artist.First().Id))
.Setup(c => c.GetFilesByAuthor(_artist.First().Id))
.Returns(_metadata);
Mocker.GetMock<IConfigService>().SetupGet(c => c.CleanupMetadataImages).Returns(true);
@ -48,7 +48,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
public void should_not_process_non_image_files()
{
_metadata.First().RelativePath = "album\\file.xml".AsOsAgnostic();
_metadata.First().Type = MetadataType.TrackMetadata;
_metadata.First().Type = MetadataType.BookMetadata;
Subject.Clean();
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
var imagePath = "C:\\Music\\Album\\image.jpg".AsOsAgnostic();
_metadata.First().LastUpdated = new DateTime(2014, 12, 29);
_metadata.First().RelativePath = "Album\\image.jpg".AsOsAgnostic();
_metadata.First().Type = MetadataType.ArtistImage;
_metadata.First().Type = MetadataType.AuthorImage;
Mocker.GetMock<IDiskProvider>()
.Setup(c => c.OpenReadStream(imagePath))
@ -111,7 +111,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
{
var imagePath = "C:\\Music\\Album\\image.jpg".AsOsAgnostic();
_metadata.First().LastUpdated = new DateTime(2014, 12, 29);
_metadata.First().Type = MetadataType.AlbumImage;
_metadata.First().Type = MetadataType.BookImage;
_metadata.First().RelativePath = "Album\\image.jpg".AsOsAgnostic();
Mocker.GetMock<IDiskProvider>()

@ -16,7 +16,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.ArtistMetadata)
.With(m => m.Type = MetadataType.AuthorMetadata)
.With(m => m.AuthorId = 1)
.BuildListOfNew();
@ -30,7 +30,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.ArtistMetadata)
.With(m => m.Type = MetadataType.AuthorMetadata)
.With(m => m.Consumer = "XbmcMetadata")
.BuildListOfNew();
@ -44,7 +44,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.ArtistMetadata)
.With(m => m.Type = MetadataType.AuthorMetadata)
.With(m => m.AuthorId = 1)
.With(m => m.Consumer = "XbmcMetadata")
.BuildListOfNew();
@ -70,7 +70,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.AlbumMetadata)
.With(m => m.Type = MetadataType.BookMetadata)
.With(m => m.AuthorId = 1)
.With(m => m.BookId = 1)
.BuildListOfNew();
@ -85,7 +85,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.AlbumMetadata)
.With(m => m.Type = MetadataType.BookMetadata)
.With(m => m.Consumer = "XbmcMetadata")
.With(m => m.AuthorId = 1)
.BuildListOfNew();
@ -100,7 +100,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.AlbumMetadata)
.With(m => m.Type = MetadataType.BookMetadata)
.With(m => m.AuthorId = 1)
.With(m => m.BookId = 1)
.With(m => m.Consumer = "XbmcMetadata")
@ -127,7 +127,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.TrackMetadata)
.With(m => m.Type = MetadataType.BookMetadata)
.With(m => m.BookFileId = 1)
.BuildListOfNew();
@ -141,7 +141,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.TrackMetadata)
.With(m => m.Type = MetadataType.BookMetadata)
.With(m => m.Consumer = "XbmcMetadata")
.BuildListOfNew();
@ -155,7 +155,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.TrackMetadata)
.With(m => m.Type = MetadataType.BookMetadata)
.With(m => m.BookFileId = 1)
.With(m => m.Consumer = "XbmcMetadata")
.BuildListOfNew();

@ -148,7 +148,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.AuthorId = artist.Id)
.With(m => m.Type = MetadataType.AlbumMetadata)
.With(m => m.Type = MetadataType.BookMetadata)
.With(m => m.BookId = 0)
.With(m => m.BookFileId = null)
.BuildNew();
@ -168,7 +168,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.AuthorId = artist.Id)
.With(m => m.Type = MetadataType.AlbumImage)
.With(m => m.Type = MetadataType.BookImage)
.With(m => m.BookId = 0)
.With(m => m.BookFileId = null)
.BuildNew();
@ -188,7 +188,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.AuthorId = artist.Id)
.With(m => m.Type = MetadataType.TrackMetadata)
.With(m => m.Type = MetadataType.BookMetadata)
.With(m => m.BookFileId = 0)
.BuildNew();

@ -41,14 +41,14 @@ namespace NzbDrone.Core.Test.MediaFiles
.With(v => v.Status = DownloadItemStatus.Downloading)
.Build();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(v => v.Author = new Author())
.Build();
_trackedDownload = new TrackedDownload
{
DownloadItem = downloadItem,
RemoteBook = remoteAlbum,
RemoteBook = remoteBook,
State = TrackedDownloadState.Downloading
};
}

@ -49,14 +49,14 @@ namespace NzbDrone.Core.Test.MediaFiles
.With(v => v.Status = DownloadItemStatus.Downloading)
.Build();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(v => v.Author = new Author())
.Build();
_trackedDownload = new TrackedDownload
{
DownloadItem = downloadItem,
RemoteBook = remoteAlbum,
RemoteBook = remoteBook,
State = TrackedDownloadState.Downloading
};
}

@ -25,7 +25,7 @@ namespace NzbDrone.Core.Test.MusicTests
private Book _album1;
private Book _album2;
private List<Book> _albums;
private List<Book> _remoteAlbums;
private List<Book> _remoteBooks;
[SetUp]
public void Setup()
@ -40,8 +40,8 @@ namespace NzbDrone.Core.Test.MusicTests
_albums = new List<Book> { _album1, _album2 };
_remoteAlbums = _albums.JsonClone();
_remoteAlbums.ForEach(x => x.Id = 0);
_remoteBooks = _albums.JsonClone();
_remoteBooks.ForEach(x => x.Id = 0);
var metadata = Builder<AuthorMetadata>.CreateNew().Build();
var series = Builder<Series>.CreateListOfSize(1).BuildList();
@ -116,7 +116,7 @@ namespace NzbDrone.Core.Test.MusicTests
{
var newArtistInfo = _artist.JsonClone();
newArtistInfo.Metadata = _artist.Metadata.Value.JsonClone();
newArtistInfo.Books = _remoteAlbums;
newArtistInfo.Books = _remoteBooks;
GivenNewArtistInfo(newArtistInfo);
GivenAlbumsForRefresh(_albums);
@ -137,7 +137,7 @@ namespace NzbDrone.Core.Test.MusicTests
{
new MediaCover.MediaCover(MediaCover.MediaCoverTypes.Logo, "dummy")
};
newArtistInfo.Books = _remoteAlbums;
newArtistInfo.Books = _remoteBooks;
GivenNewArtistInfo(newArtistInfo);
GivenAlbumsForRefresh(new List<Book>());
@ -189,7 +189,7 @@ namespace NzbDrone.Core.Test.MusicTests
{
var newArtistInfo = _artist.JsonClone();
newArtistInfo.Metadata = _artist.Metadata.Value.JsonClone();
newArtistInfo.Books = _remoteAlbums;
newArtistInfo.Books = _remoteBooks;
newArtistInfo.ForeignAuthorId = _artist.ForeignAuthorId + 1;
newArtistInfo.Metadata.Value.Id = 100;
@ -242,7 +242,7 @@ namespace NzbDrone.Core.Test.MusicTests
var newArtistInfo = clash.JsonClone();
newArtistInfo.Metadata = clash.Metadata.Value.JsonClone();
newArtistInfo.Books = _remoteAlbums;
newArtistInfo.Books = _remoteBooks;
GivenNewArtistInfo(newArtistInfo);

@ -192,7 +192,7 @@ namespace NzbDrone.Core.Test.ParserTests
public void should_parse_artist_name_and_album_title_by_search_criteria(string releaseTitle)
{
GivenSearchCriteria("Black Sabbath", "Black Sabbath");
var parseResult = Parser.Parser.ParseAlbumTitleWithSearchCriteria(releaseTitle, _artist, _albums);
var parseResult = Parser.Parser.ParseBookTitleWithSearchCriteria(releaseTitle, _artist, _albums);
parseResult.AuthorName.ToLowerInvariant().Should().Be("black sabbath");
parseResult.BookTitle.ToLowerInvariant().Should().Be("black sabbath");
}
@ -214,7 +214,7 @@ namespace NzbDrone.Core.Test.ParserTests
public void should_not_parse_artist_name_and_album_title_by_incorrect_search_criteria()
{
GivenSearchCriteria("Abba", "Abba");
var parseResult = Parser.Parser.ParseAlbumTitleWithSearchCriteria("Black Sabbath Black Sabbath FLAC", _artist, _albums);
var parseResult = Parser.Parser.ParseBookTitleWithSearchCriteria("Black Sabbath Black Sabbath FLAC", _artist, _albums);
parseResult.Should().BeNull();
}
@ -228,7 +228,7 @@ namespace NzbDrone.Core.Test.ParserTests
public void should_escape_albums(string artist, string album, string releaseTitle)
{
GivenSearchCriteria(artist, album);
var parseResult = Parser.Parser.ParseAlbumTitleWithSearchCriteria(releaseTitle, _artist, _albums);
var parseResult = Parser.Parser.ParseBookTitleWithSearchCriteria(releaseTitle, _artist, _albums);
parseResult.BookTitle.Should().Be(album);
}
@ -239,7 +239,7 @@ namespace NzbDrone.Core.Test.ParserTests
public void should_escape_artists(string artist, string album, string releaseTitle)
{
GivenSearchCriteria(artist, album);
var parseResult = Parser.Parser.ParseAlbumTitleWithSearchCriteria(releaseTitle, _artist, _albums);
var parseResult = Parser.Parser.ParseBookTitleWithSearchCriteria(releaseTitle, _artist, _albums);
parseResult.AuthorName.Should().Be(artist);
}
@ -247,7 +247,7 @@ namespace NzbDrone.Core.Test.ParserTests
public void should_match_with_accent_in_artist_and_album(string artist, string album, string releaseTitle)
{
GivenSearchCriteria(artist, album);
var parseResult = Parser.Parser.ParseAlbumTitleWithSearchCriteria(releaseTitle, _artist, _albums);
var parseResult = Parser.Parser.ParseBookTitleWithSearchCriteria(releaseTitle, _artist, _albums);
parseResult.AuthorName.Should().Be("Michael Buble");
parseResult.BookTitle.Should().Be("Michael Buble");
}
@ -260,7 +260,7 @@ namespace NzbDrone.Core.Test.ParserTests
GivenSearchCriteria("Michael Bubl\u00E9", "love");
GivenSearchCriteria("Michael Bubl\u00E9", "Christmas");
GivenSearchCriteria("Michael Bubl\u00E9", "To Be Loved");
var parseResult = Parser.Parser.ParseAlbumTitleWithSearchCriteria(
var parseResult = Parser.Parser.ParseBookTitleWithSearchCriteria(
"Michael Buble Christmas (Deluxe Special Edition) CD FLAC 2012 UNDERTONE iNT", _artist, _albums);
parseResult.AuthorName.Should().Be("Michael Buble");
parseResult.BookTitle.Should().Be("Christmas");

@ -34,7 +34,7 @@ namespace NzbDrone.Core.Test.QueueTests
.With(e => e.AuthorId = artist.Id)
.Build();
var remoteAlbum = Builder<RemoteBook>.CreateNew()
var remoteBook = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = artist)
.With(r => r.Books = new List<Book>(albums))
.With(r => r.ParsedBookInfo = new ParsedBookInfo())
@ -43,7 +43,7 @@ namespace NzbDrone.Core.Test.QueueTests
_trackedDownloads = Builder<TrackedDownload>.CreateListOfSize(1)
.All()
.With(v => v.DownloadItem = downloadItem)
.With(v => v.RemoteBook = remoteAlbum)
.With(v => v.RemoteBook = remoteBook)
.Build()
.ToList();

@ -1,16 +1,16 @@
using NzbDrone.Common.Messaging;
using NzbDrone.Common.Messaging;
namespace NzbDrone.Core.Books.Events
{
public class BookEditedEvent : IEvent
{
public Book Book { get; private set; }
public Book OldAlbum { get; private set; }
public Book OldBook { get; private set; }
public BookEditedEvent(Book book, Book oldAlbum)
public BookEditedEvent(Book book, Book oldBook)
{
Book = book;
OldAlbum = oldAlbum;
OldBook = oldBook;
}
}
}

@ -35,7 +35,7 @@ namespace NzbDrone.Core.Books
_logger.Info("[{0}] was recently added, performing post-add actions", author.Name);
_bookMonitoredService.SetBookMonitoredStatus(author, author.AddOptions);
if (author.AddOptions.SearchForMissingAlbums)
if (author.AddOptions.SearchForMissingBooks)
{
_commandQueueManager.Push(new MissingBookSearchCommand(author.Id));
}

@ -2,6 +2,6 @@ namespace NzbDrone.Core.Books
{
public class AddAuthorOptions : MonitoringOptions
{
public bool SearchForMissingAlbums { get; set; }
public bool SearchForMissingBooks { get; set; }
}
}

@ -7,14 +7,14 @@ namespace NzbDrone.Core.Books
public AddBookOptions()
{
// default in case not set in db
AddType = AlbumAddType.Automatic;
AddType = BookAddType.Automatic;
}
public AlbumAddType AddType { get; set; }
public bool SearchForNewAlbum { get; set; }
public BookAddType AddType { get; set; }
public bool SearchForNewBook { get; set; }
}
public enum AlbumAddType
public enum BookAddType
{
Automatic,
Manual

@ -26,7 +26,7 @@ namespace NzbDrone.Core.Books
List<Book> AuthorBooksBetweenDates(Author author, DateTime startDate, DateTime endDate, bool includeUnmonitored);
void SetMonitoredFlat(Book book, bool monitored);
void SetMonitored(IEnumerable<int> ids, bool monitored);
List<Book> GetArtistAlbumsWithFiles(Author author);
List<Book> GetAuthorBooksWithFiles(Author author);
}
public class BookRepository : BasicRepository<Book>, IBookRepository
@ -190,7 +190,7 @@ namespace NzbDrone.Core.Books
.ExclusiveOrDefault();
}
public List<Book> GetArtistAlbumsWithFiles(Author author)
public List<Book> GetAuthorBooksWithFiles(Author author)
{
return Query(Builder()
.Join<Book, BookFile>((t, f) => t.Id == f.BookId)

@ -51,7 +51,7 @@ namespace NzbDrone.Core.Books
_importListExclusionService.Delete(book.AuthorMetadata.Value.ForeignAuthorId);
// Note it's a manual addition so it's not deleted on next refresh
book.AddOptions.AddType = AlbumAddType.Manual;
book.AddOptions.AddType = BookAddType.Manual;
// Add the author if necessary
var dbAuthor = _authorService.FindById(book.AuthorMetadata.Value.ForeignAuthorId);

@ -37,11 +37,11 @@ namespace NzbDrone.Core.Books
public void SearchForRecentlyAdded(int authorId)
{
var allBooks = _bookService.GetBooksByAuthor(authorId);
var toSearch = allBooks.Where(x => x.AddOptions.SearchForNewAlbum).ToList();
var toSearch = allBooks.Where(x => x.AddOptions.SearchForNewBook).ToList();
if (toSearch.Any())
{
toSearch.ForEach(x => x.AddOptions.SearchForNewAlbum = false);
toSearch.ForEach(x => x.AddOptions.SearchForNewBook = false);
_bookService.SetAddOptions(toSearch);
}

@ -228,7 +228,7 @@ namespace NzbDrone.Core.Books
public List<Book> GetAuthorBooksWithFiles(Author author)
{
return _bookRepository.GetArtistAlbumsWithFiles(author);
return _bookRepository.GetAuthorBooksWithFiles(author);
}
public void InsertMany(List<Book> books)

@ -112,7 +112,7 @@ namespace NzbDrone.Core.Books
protected override bool ShouldDelete(Book local)
{
// not manually added and has no files
return local.AddOptions.AddType != AlbumAddType.Manual &&
return local.AddOptions.AddType != BookAddType.Manual &&
!_mediaFileService.GetFilesByBook(local.Id).Any();
}

@ -9,7 +9,7 @@ namespace NzbDrone.Core.Books
{
public interface IRefreshSeriesService
{
bool RefreshSeriesInfo(int authorMetadataId, List<Series> remoteAlbums, Author remoteData, bool forceAlbumRefresh, bool forceUpdateFileTags, DateTime? lastUpdate);
bool RefreshSeriesInfo(int authorMetadataId, List<Series> remoteBooks, Author remoteData, bool forceAlbumRefresh, bool forceUpdateFileTags, DateTime? lastUpdate);
}
public class RefreshSeriesService : RefreshEntityServiceBase<Series, SeriesBookLink>, IRefreshSeriesService

@ -31,7 +31,7 @@ namespace NzbDrone.Core.DecisionEngine
ComparePreferredWordScore,
CompareProtocol,
ComparePeersIfTorrent,
CompareAlbumCount,
CompareBookCount,
CompareAgeIfUsenet,
CompareSize
};
@ -63,44 +63,44 @@ namespace NzbDrone.Core.DecisionEngine
{
if (_configService.DownloadPropersAndRepacks == ProperDownloadTypes.DoNotPrefer)
{
return CompareAll(CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum => remoteAlbum.Author.QualityProfile.Value.GetIndex(remoteAlbum.ParsedBookInfo.Quality.Quality)),
CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum => remoteAlbum.ParsedBookInfo.Quality.Revision.Real));
return CompareAll(CompareBy(x.RemoteBook, y.RemoteBook, remoteBook => remoteBook.Author.QualityProfile.Value.GetIndex(remoteBook.ParsedBookInfo.Quality.Quality)),
CompareBy(x.RemoteBook, y.RemoteBook, remoteBook => remoteBook.ParsedBookInfo.Quality.Revision.Real));
}
return CompareAll(CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum => remoteAlbum.Author.QualityProfile.Value.GetIndex(remoteAlbum.ParsedBookInfo.Quality.Quality)),
CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum => remoteAlbum.ParsedBookInfo.Quality.Revision.Real),
CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum => remoteAlbum.ParsedBookInfo.Quality.Revision.Version));
return CompareAll(CompareBy(x.RemoteBook, y.RemoteBook, remoteBook => remoteBook.Author.QualityProfile.Value.GetIndex(remoteBook.ParsedBookInfo.Quality.Quality)),
CompareBy(x.RemoteBook, y.RemoteBook, remoteBook => remoteBook.ParsedBookInfo.Quality.Revision.Real),
CompareBy(x.RemoteBook, y.RemoteBook, remoteBook => remoteBook.ParsedBookInfo.Quality.Revision.Version));
}
private int ComparePreferredWordScore(DownloadDecision x, DownloadDecision y)
{
return CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum => remoteAlbum.PreferredWordScore);
return CompareBy(x.RemoteBook, y.RemoteBook, remoteBook => remoteBook.PreferredWordScore);
}
private int CompareProtocol(DownloadDecision x, DownloadDecision y)
{
var result = CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum =>
var result = CompareBy(x.RemoteBook, y.RemoteBook, remoteBook =>
{
var delayProfile = _delayProfileService.BestForTags(remoteAlbum.Author.Tags);
var downloadProtocol = remoteAlbum.Release.DownloadProtocol;
var delayProfile = _delayProfileService.BestForTags(remoteBook.Author.Tags);
var downloadProtocol = remoteBook.Release.DownloadProtocol;
return downloadProtocol == delayProfile.PreferredProtocol;
});
return result;
}
private int CompareAlbumCount(DownloadDecision x, DownloadDecision y)
private int CompareBookCount(DownloadDecision x, DownloadDecision y)
{
var discographyCompare = CompareBy(x.RemoteBook,
y.RemoteBook,
remoteAlbum => remoteAlbum.ParsedBookInfo.Discography);
remoteBook => remoteBook.ParsedBookInfo.Discography);
if (discographyCompare != 0)
{
return discographyCompare;
}
return CompareByReverse(x.RemoteBook, y.RemoteBook, remoteAlbum => remoteAlbum.Books.Count);
return CompareByReverse(x.RemoteBook, y.RemoteBook, remoteBook => remoteBook.Books.Count);
}
private int ComparePeersIfTorrent(DownloadDecision x, DownloadDecision y)
@ -114,15 +114,15 @@ namespace NzbDrone.Core.DecisionEngine
}
return CompareAll(
CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum =>
CompareBy(x.RemoteBook, y.RemoteBook, remoteBook =>
{
var seeders = TorrentInfo.GetSeeders(remoteAlbum.Release);
var seeders = TorrentInfo.GetSeeders(remoteBook.Release);
return seeders.HasValue && seeders.Value > 0 ? Math.Round(Math.Log10(seeders.Value)) : 0;
}),
CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum =>
CompareBy(x.RemoteBook, y.RemoteBook, remoteBook =>
{
var peers = TorrentInfo.GetPeers(remoteAlbum.Release);
var peers = TorrentInfo.GetPeers(remoteBook.Release);
return peers.HasValue && peers.Value > 0 ? Math.Round(Math.Log10(peers.Value)) : 0;
}));
@ -136,10 +136,10 @@ namespace NzbDrone.Core.DecisionEngine
return 0;
}
return CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum =>
return CompareBy(x.RemoteBook, y.RemoteBook, remoteBook =>
{
var ageHours = remoteAlbum.Release.AgeHours;
var age = remoteAlbum.Release.Age;
var ageHours = remoteBook.Release.AgeHours;
var age = remoteBook.Release.Age;
if (ageHours < 1)
{
@ -163,7 +163,7 @@ namespace NzbDrone.Core.DecisionEngine
private int CompareSize(DownloadDecision x, DownloadDecision y)
{
// TODO: Is smaller better? Smaller for usenet could mean no par2 files.
return CompareBy(x.RemoteBook, y.RemoteBook, remoteAlbum => remoteAlbum.Release.Size.Round(200.Megabytes()));
return CompareBy(x.RemoteBook, y.RemoteBook, remoteBook => remoteBook.Release.Size.Round(200.Megabytes()));
}
}
}

@ -23,12 +23,12 @@ namespace NzbDrone.Core.DecisionEngine
{
private readonly IEnumerable<IDecisionEngineSpecification> _specifications;
private readonly IParsingService _parsingService;
private readonly IRemoteAlbumAggregationService _aggregationService;
private readonly IRemoteBookAggregationService _aggregationService;
private readonly Logger _logger;
public DownloadDecisionMaker(IEnumerable<IDecisionEngineSpecification> specifications,
IParsingService parsingService,
IRemoteAlbumAggregationService aggregationService,
IRemoteBookAggregationService aggregationService,
Logger logger)
{
_specifications = specifications;
@ -39,15 +39,15 @@ namespace NzbDrone.Core.DecisionEngine
public List<DownloadDecision> GetRssDecision(List<ReleaseInfo> reports)
{
return GetAlbumDecisions(reports).ToList();
return GetBookDecisions(reports).ToList();
}
public List<DownloadDecision> GetSearchDecision(List<ReleaseInfo> reports, SearchCriteriaBase searchCriteriaBase)
{
return GetAlbumDecisions(reports, searchCriteriaBase).ToList();
return GetBookDecisions(reports, searchCriteriaBase).ToList();
}
private IEnumerable<DownloadDecision> GetAlbumDecisions(List<ReleaseInfo> reports, SearchCriteriaBase searchCriteria = null)
private IEnumerable<DownloadDecision> GetBookDecisions(List<ReleaseInfo> reports, SearchCriteriaBase searchCriteria = null)
{
if (reports.Any())
{
@ -74,7 +74,7 @@ namespace NzbDrone.Core.DecisionEngine
{
if (searchCriteria != null)
{
parsedBookInfo = Parser.Parser.ParseAlbumTitleWithSearchCriteria(report.Title,
parsedBookInfo = Parser.Parser.ParseBookTitleWithSearchCriteria(report.Title,
searchCriteria.Author,
searchCriteria.Books);
}
@ -95,13 +95,13 @@ namespace NzbDrone.Core.DecisionEngine
if ((remoteBook.Author == null || remoteBook.Books.Empty()) && searchCriteria != null)
{
_logger.Debug("Author/Book null for {0}, reparsing with search criteria", report.Title);
var parsedAlbumInfoWithCriteria = Parser.Parser.ParseAlbumTitleWithSearchCriteria(report.Title,
var parsedBookInfoWithCriteria = Parser.Parser.ParseBookTitleWithSearchCriteria(report.Title,
searchCriteria.Author,
searchCriteria.Books);
if (parsedAlbumInfoWithCriteria != null && parsedAlbumInfoWithCriteria.AuthorName.IsNotNullOrWhiteSpace())
if (parsedBookInfoWithCriteria != null && parsedBookInfoWithCriteria.AuthorName.IsNotNullOrWhiteSpace())
{
remoteBook = _parsingService.Map(parsedAlbumInfoWithCriteria, searchCriteria);
remoteBook = _parsingService.Map(parsedBookInfoWithCriteria, searchCriteria);
}
}

@ -41,7 +41,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
foreach (var queueItem in matchingAlbum)
{
var remoteAlbum = queueItem.RemoteBook;
var remoteBook = queueItem.RemoteBook;
var qualityProfile = subject.Author.QualityProfile.Value;
// To avoid a race make sure it's not FailedPending (failed awaiting removal/search).
@ -52,34 +52,34 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
continue;
}
_logger.Debug("Checking if existing release in queue meets cutoff. Queued quality is: {0}", remoteAlbum.ParsedBookInfo.Quality);
_logger.Debug("Checking if existing release in queue meets cutoff. Queued quality is: {0}", remoteBook.ParsedBookInfo.Quality);
var queuedItemPreferredWordScore = _preferredWordServiceCalculator.Calculate(subject.Author, queueItem.Title);
if (!_upgradableSpecification.CutoffNotMet(qualityProfile,
new List<QualityModel> { remoteAlbum.ParsedBookInfo.Quality },
new List<QualityModel> { remoteBook.ParsedBookInfo.Quality },
queuedItemPreferredWordScore,
subject.ParsedBookInfo.Quality,
subject.PreferredWordScore))
{
return Decision.Reject("Release in queue already meets cutoff: {0}", remoteAlbum.ParsedBookInfo.Quality);
return Decision.Reject("Release in queue already meets cutoff: {0}", remoteBook.ParsedBookInfo.Quality);
}
_logger.Debug("Checking if release is higher quality than queued release. Queued: {0}", remoteAlbum.ParsedBookInfo.Quality);
_logger.Debug("Checking if release is higher quality than queued release. Queued: {0}", remoteBook.ParsedBookInfo.Quality);
if (!_upgradableSpecification.IsUpgradable(qualityProfile,
new List<QualityModel> { remoteAlbum.ParsedBookInfo.Quality },
new List<QualityModel> { remoteBook.ParsedBookInfo.Quality },
queuedItemPreferredWordScore,
subject.ParsedBookInfo.Quality,
subject.PreferredWordScore))
{
return Decision.Reject("Release in queue is of equal or higher preference: {0}", remoteAlbum.ParsedBookInfo.Quality);
return Decision.Reject("Release in queue is of equal or higher preference: {0}", remoteBook.ParsedBookInfo.Quality);
}
_logger.Debug("Checking if profiles allow upgrading. Queued: {0}", remoteAlbum.ParsedBookInfo.Quality);
_logger.Debug("Checking if profiles allow upgrading. Queued: {0}", remoteBook.ParsedBookInfo.Quality);
if (!_upgradableSpecification.IsUpgradeAllowed(qualityProfile,
new List<QualityModel> { remoteAlbum.ParsedBookInfo.Quality },
new List<QualityModel> { remoteBook.ParsedBookInfo.Quality },
subject.ParsedBookInfo.Quality))
{
return Decision.Reject("Another release is queued and the Quality profile does not allow upgrades");

@ -5,11 +5,11 @@ using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
{
public class MonitoredAlbumSpecification : IDecisionEngineSpecification
public class MonitoredBookSpecification : IDecisionEngineSpecification
{
private readonly Logger _logger;
public MonitoredAlbumSpecification(Logger logger)
public MonitoredBookSpecification(Logger logger)
{
_logger = logger;
}
@ -42,20 +42,20 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
if (subject.Books.Count == 1)
{
_logger.Debug("Album is not monitored. Rejecting", monitoredCount, subject.Books.Count);
return Decision.Reject("Album is not monitored");
_logger.Debug("Book is not monitored. Rejecting", monitoredCount, subject.Books.Count);
return Decision.Reject("Book is not monitored");
}
if (monitoredCount == 0)
{
_logger.Debug("No albums in the release are monitored. Rejecting", monitoredCount, subject.Books.Count);
_logger.Debug("No books in the release are monitored. Rejecting", monitoredCount, subject.Books.Count);
}
else
{
_logger.Debug("Only {0}/{1} albums in the release are monitored. Rejecting", monitoredCount, subject.Books.Count);
_logger.Debug("Only {0}/{1} books in the release are monitored. Rejecting", monitoredCount, subject.Books.Count);
}
return Decision.Reject("Album is not monitored");
return Decision.Reject("Book is not monitored");
}
}
}

@ -16,7 +16,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
public SpecificationPriority Priority => SpecificationPriority.Default;
public RejectionType Type => RejectionType.Permanent;
public Decision IsSatisfiedBy(RemoteBook remoteAlbum, SearchCriteriaBase searchCriteria)
public Decision IsSatisfiedBy(RemoteBook remoteBook, SearchCriteriaBase searchCriteria)
{
if (searchCriteria == null)
{
@ -25,9 +25,9 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
_logger.Debug("Checking if author matches searched author");
if (remoteAlbum.Author.Id != searchCriteria.Author.Id)
if (remoteBook.Author.Id != searchCriteria.Author.Id)
{
_logger.Debug("Author {0} does not match {1}", remoteAlbum.Author, searchCriteria.Author);
_logger.Debug("Author {0} does not match {1}", remoteBook.Author, searchCriteria.Author);
return Decision.Reject("Wrong author");
}

@ -5,11 +5,11 @@ using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.DecisionEngine.Specifications.Search
{
public class AlbumRequestedSpecification : IDecisionEngineSpecification
public class BookRequestedSpecification : IDecisionEngineSpecification
{
private readonly Logger _logger;
public AlbumRequestedSpecification(Logger logger)
public BookRequestedSpecification(Logger logger)
{
_logger = logger;
}
@ -17,20 +17,20 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
public SpecificationPriority Priority => SpecificationPriority.Default;
public RejectionType Type => RejectionType.Permanent;
public Decision IsSatisfiedBy(RemoteBook remoteAlbum, SearchCriteriaBase searchCriteria)
public Decision IsSatisfiedBy(RemoteBook remoteBook, SearchCriteriaBase searchCriteria)
{
if (searchCriteria == null)
{
return Decision.Accept();
}
var criteriaAlbum = searchCriteria.Books.Select(v => v.Id).ToList();
var remoteAlbums = remoteAlbum.Books.Select(v => v.Id).ToList();
var criteriaBook = searchCriteria.Books.Select(v => v.Id).ToList();
var remoteBooks = remoteBook.Books.Select(v => v.Id).ToList();
if (!criteriaAlbum.Intersect(remoteAlbums).Any())
if (!criteriaBook.Intersect(remoteBooks).Any())
{
_logger.Debug("Release rejected since the book wasn't requested: {0}", remoteAlbum.ParsedBookInfo);
return Decision.Reject("Album wasn't requested");
_logger.Debug("Release rejected since the book wasn't requested: {0}", remoteBook.ParsedBookInfo);
return Decision.Reject("Book wasn't requested");
}
return Decision.Accept();

@ -20,9 +20,9 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
public SpecificationPriority Priority => SpecificationPriority.Default;
public RejectionType Type => RejectionType.Permanent;
public Decision IsSatisfiedBy(RemoteBook remoteAlbum, SearchCriteriaBase searchCriteria)
public Decision IsSatisfiedBy(RemoteBook remoteBook, SearchCriteriaBase searchCriteria)
{
var torrentInfo = remoteAlbum.Release as TorrentInfo;
var torrentInfo = remoteBook.Release as TorrentInfo;
if (torrentInfo == null || torrentInfo.IndexerId == 0)
{

@ -3,7 +3,7 @@ using NzbDrone.Core.Profiles.Releases;
namespace NzbDrone.Core.Download.Aggregation.Aggregators
{
public class AggregatePreferredWordScore : IAggregateRemoteAlbum
public class AggregatePreferredWordScore : IAggregateRemoteBook
{
private readonly IPreferredWordService _preferredWordServiceCalculator;
@ -12,11 +12,11 @@ namespace NzbDrone.Core.Download.Aggregation.Aggregators
_preferredWordServiceCalculator = preferredWordServiceCalculator;
}
public RemoteBook Aggregate(RemoteBook remoteAlbum)
public RemoteBook Aggregate(RemoteBook remoteBook)
{
remoteAlbum.PreferredWordScore = _preferredWordServiceCalculator.Calculate(remoteAlbum.Author, remoteAlbum.Release.Title);
remoteBook.PreferredWordScore = _preferredWordServiceCalculator.Calculate(remoteBook.Author, remoteBook.Release.Title);
return remoteAlbum;
return remoteBook;
}
}
}

@ -2,8 +2,8 @@ using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Download.Aggregation.Aggregators
{
public interface IAggregateRemoteAlbum
public interface IAggregateRemoteBook
{
RemoteBook Aggregate(RemoteBook remoteAlbum);
RemoteBook Aggregate(RemoteBook remoteBook);
}
}

@ -6,30 +6,30 @@ using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Download.Aggregation
{
public interface IRemoteAlbumAggregationService
public interface IRemoteBookAggregationService
{
RemoteBook Augment(RemoteBook remoteAlbum);
RemoteBook Augment(RemoteBook remoteBook);
}
public class RemoteAlbumAggregationService : IRemoteAlbumAggregationService
public class RemoteBookAggregationService : IRemoteBookAggregationService
{
private readonly IEnumerable<IAggregateRemoteAlbum> _augmenters;
private readonly IEnumerable<IAggregateRemoteBook> _augmenters;
private readonly Logger _logger;
public RemoteAlbumAggregationService(IEnumerable<IAggregateRemoteAlbum> augmenters,
public RemoteBookAggregationService(IEnumerable<IAggregateRemoteBook> augmenters,
Logger logger)
{
_augmenters = augmenters;
_logger = logger;
}
public RemoteBook Augment(RemoteBook remoteAlbum)
public RemoteBook Augment(RemoteBook remoteBook)
{
foreach (var augmenter in _augmenters)
{
try
{
augmenter.Aggregate(remoteAlbum);
augmenter.Aggregate(remoteBook);
}
catch (Exception ex)
{
@ -37,7 +37,7 @@ namespace NzbDrone.Core.Download.Aggregation
}
}
return remoteAlbum;
return remoteBook;
}
}
}

@ -37,14 +37,14 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
ScanGracePeriod = TimeSpan.FromSeconds(30);
}
protected override string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink)
protected override string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink)
{
if (!Settings.SaveMagnetFiles)
{
throw new NotSupportedException("Blackhole does not support magnet links.");
}
var title = remoteAlbum.Release.Title;
var title = remoteBook.Release.Title;
title = FileNameBuilder.CleanFileName(title);
@ -61,9 +61,9 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
return null;
}
protected override string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent)
protected override string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent)
{
var title = remoteAlbum.Release.Title;
var title = remoteBook.Release.Title;
title = FileNameBuilder.CleanFileName(title);

@ -33,9 +33,9 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
ScanGracePeriod = TimeSpan.FromSeconds(30);
}
protected override string AddFromNzbFile(RemoteBook remoteAlbum, string filename, byte[] fileContent)
protected override string AddFromNzbFile(RemoteBook remoteBook, string filename, byte[] fileContent)
{
var title = remoteAlbum.Release.Title;
var title = remoteBook.Release.Title;
title = FileNameBuilder.CleanFileName(title);

@ -50,7 +50,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge
}
}
protected override string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink)
protected override string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink)
{
var actualHash = _proxy.AddTorrentFromMagnet(magnetLink, Settings);
@ -59,17 +59,17 @@ namespace NzbDrone.Core.Download.Clients.Deluge
throw new DownloadClientException("Deluge failed to add magnet " + magnetLink);
}
_proxy.SetTorrentSeedingConfiguration(actualHash, remoteAlbum.SeedConfiguration, Settings);
_proxy.SetTorrentSeedingConfiguration(actualHash, remoteBook.SeedConfiguration, Settings);
if (Settings.MusicCategory.IsNotNullOrWhiteSpace())
{
_proxy.SetTorrentLabel(actualHash, Settings.MusicCategory, Settings);
}
var isRecentAlbum = remoteAlbum.IsRecentAlbum();
var isRecentBook = remoteBook.IsRecentBook();
if ((isRecentAlbum && Settings.RecentTvPriority == (int)DelugePriority.First) ||
(!isRecentAlbum && Settings.OlderTvPriority == (int)DelugePriority.First))
if ((isRecentBook && Settings.RecentTvPriority == (int)DelugePriority.First) ||
(!isRecentBook && Settings.OlderTvPriority == (int)DelugePriority.First))
{
_proxy.MoveTorrentToTopInQueue(actualHash, Settings);
}
@ -77,7 +77,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge
return actualHash.ToUpper();
}
protected override string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent)
protected override string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent)
{
var actualHash = _proxy.AddTorrentFromFile(filename, fileContent, Settings);
@ -86,17 +86,17 @@ namespace NzbDrone.Core.Download.Clients.Deluge
throw new DownloadClientException("Deluge failed to add torrent " + filename);
}
_proxy.SetTorrentSeedingConfiguration(actualHash, remoteAlbum.SeedConfiguration, Settings);
_proxy.SetTorrentSeedingConfiguration(actualHash, remoteBook.SeedConfiguration, Settings);
if (Settings.MusicCategory.IsNotNullOrWhiteSpace())
{
_proxy.SetTorrentLabel(actualHash, Settings.MusicCategory, Settings);
}
var isRecentAlbum = remoteAlbum.IsRecentAlbum();
var isRecentBook = remoteBook.IsRecentBook();
if ((isRecentAlbum && Settings.RecentTvPriority == (int)DelugePriority.First) ||
(!isRecentAlbum && Settings.OlderTvPriority == (int)DelugePriority.First))
if ((isRecentBook && Settings.RecentTvPriority == (int)DelugePriority.First) ||
(!isRecentBook && Settings.OlderTvPriority == (int)DelugePriority.First))
{
_proxy.MoveTorrentToTopInQueue(actualHash, Settings);
}

@ -154,7 +154,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
return finalPath;
}
protected override string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink)
protected override string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink)
{
var hashedSerialNumber = _serialNumberProvider.GetSerialNumber(Settings);
@ -164,7 +164,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
if (item != null)
{
_logger.Debug("{0} added correctly", remoteAlbum);
_logger.Debug("{0} added correctly", remoteBook);
return CreateDownloadId(item.Id, hashedSerialNumber);
}
@ -173,7 +173,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
throw new DownloadClientException("Failed to add magnet task to Download Station");
}
protected override string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent)
protected override string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent)
{
var hashedSerialNumber = _serialNumberProvider.GetSerialNumber(Settings);
@ -185,7 +185,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
if (item != null)
{
_logger.Debug("{0} added correctly", remoteAlbum);
_logger.Debug("{0} added correctly", remoteBook);
return CreateDownloadId(item.Id, hashedSerialNumber);
}

@ -167,7 +167,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
_logger.Debug("{0} removed correctly", downloadId);
}
protected override string AddFromNzbFile(RemoteBook remoteAlbum, string filename, byte[] fileContent)
protected override string AddFromNzbFile(RemoteBook remoteBook, string filename, byte[] fileContent)
{
var hashedSerialNumber = _serialNumberProvider.GetSerialNumber(Settings);
@ -179,7 +179,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
if (item != null)
{
_logger.Debug("{0} added correctly", remoteAlbum);
_logger.Debug("{0} added correctly", remoteBook);
return CreateDownloadId(item.Id, hashedSerialNumber);
}

@ -137,14 +137,14 @@ namespace NzbDrone.Core.Download.Clients.Hadouken
failures.AddIfNotNull(TestGetTorrents());
}
protected override string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink)
protected override string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink)
{
_proxy.AddTorrentUri(Settings, magnetLink);
return hash.ToUpper();
}
protected override string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent)
protected override string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent)
{
return _proxy.AddTorrentFile(Settings, fileContent).ToUpper();
}

@ -30,9 +30,9 @@ namespace NzbDrone.Core.Download.Clients.NzbVortex
_proxy = proxy;
}
protected override string AddFromNzbFile(RemoteBook remoteAlbum, string filename, byte[] fileContent)
protected override string AddFromNzbFile(RemoteBook remoteBook, string filename, byte[] fileContent)
{
var priority = remoteAlbum.IsRecentAlbum() ? Settings.RecentTvPriority : Settings.OlderTvPriority;
var priority = remoteBook.IsRecentBook() ? Settings.RecentTvPriority : Settings.OlderTvPriority;
var response = _proxy.DownloadNzb(fileContent, filename, priority, Settings);

@ -34,17 +34,17 @@ namespace NzbDrone.Core.Download.Clients.Nzbget
_proxy = proxy;
}
protected override string AddFromNzbFile(RemoteBook remoteAlbum, string filename, byte[] fileContent)
protected override string AddFromNzbFile(RemoteBook remoteBook, string filename, byte[] fileContent)
{
var category = Settings.MusicCategory;
var priority = remoteAlbum.IsRecentAlbum() ? Settings.RecentTvPriority : Settings.OlderTvPriority;
var priority = remoteBook.IsRecentBook() ? Settings.RecentTvPriority : Settings.OlderTvPriority;
var addpaused = Settings.AddPaused;
var response = _proxy.DownloadNzb(fileContent, filename, category, priority, addpaused, Settings);
if (response == null)
{
throw new DownloadClientRejectedReleaseException(remoteAlbum.Release, "NZBGet rejected the NZB for an unknown reason");
throw new DownloadClientRejectedReleaseException(remoteBook.Release, "NZBGet rejected the NZB for an unknown reason");
}
return response;

@ -32,12 +32,12 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic
public override DownloadProtocol Protocol => DownloadProtocol.Usenet;
public override string Download(RemoteBook remoteAlbum)
public override string Download(RemoteBook remoteBook)
{
var url = remoteAlbum.Release.DownloadUrl;
var title = remoteAlbum.Release.Title;
var url = remoteBook.Release.DownloadUrl;
var title = remoteBook.Release.Title;
if (remoteAlbum.ParsedBookInfo.Discography)
if (remoteBook.ParsedBookInfo.Discography)
{
throw new NotSupportedException("Discography releases are not supported with Pneumatic.");
}

@ -62,7 +62,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
}
}
protected override string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink)
protected override string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink)
{
if (!Proxy.GetConfig(Settings).DhtEnabled && !magnetLink.Contains("&tr="))
{
@ -71,34 +71,34 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
Proxy.AddTorrentFromUrl(magnetLink, Settings);
var isRecentAlbum = remoteAlbum.IsRecentAlbum();
var isRecentBook = remoteBook.IsRecentBook();
if ((isRecentAlbum && Settings.RecentTvPriority == (int)QBittorrentPriority.First) ||
(!isRecentAlbum && Settings.OlderTvPriority == (int)QBittorrentPriority.First))
if ((isRecentBook && Settings.RecentTvPriority == (int)QBittorrentPriority.First) ||
(!isRecentBook && Settings.OlderTvPriority == (int)QBittorrentPriority.First))
{
Proxy.MoveTorrentToTopInQueue(hash.ToLower(), Settings);
}
SetInitialState(hash.ToLower());
if (remoteAlbum.SeedConfiguration != null && (remoteAlbum.SeedConfiguration.Ratio.HasValue || remoteAlbum.SeedConfiguration.SeedTime.HasValue))
if (remoteBook.SeedConfiguration != null && (remoteBook.SeedConfiguration.Ratio.HasValue || remoteBook.SeedConfiguration.SeedTime.HasValue))
{
Proxy.SetTorrentSeedingConfiguration(hash.ToLower(), remoteAlbum.SeedConfiguration, Settings);
Proxy.SetTorrentSeedingConfiguration(hash.ToLower(), remoteBook.SeedConfiguration, Settings);
}
return hash;
}
protected override string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent)
protected override string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent)
{
Proxy.AddTorrentFromFile(filename, fileContent, Settings);
try
{
var isRecentAlbum = remoteAlbum.IsRecentAlbum();
var isRecentBook = remoteBook.IsRecentBook();
if ((isRecentAlbum && Settings.RecentTvPriority == (int)QBittorrentPriority.First) ||
(!isRecentAlbum && Settings.OlderTvPriority == (int)QBittorrentPriority.First))
if ((isRecentBook && Settings.RecentTvPriority == (int)QBittorrentPriority.First) ||
(!isRecentBook && Settings.OlderTvPriority == (int)QBittorrentPriority.First))
{
Proxy.MoveTorrentToTopInQueue(hash.ToLower(), Settings);
}
@ -110,9 +110,9 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
SetInitialState(hash.ToLower());
if (remoteAlbum.SeedConfiguration != null && (remoteAlbum.SeedConfiguration.Ratio.HasValue || remoteAlbum.SeedConfiguration.SeedTime.HasValue))
if (remoteBook.SeedConfiguration != null && (remoteBook.SeedConfiguration.Ratio.HasValue || remoteBook.SeedConfiguration.SeedTime.HasValue))
{
Proxy.SetTorrentSeedingConfiguration(hash.ToLower(), remoteAlbum.SeedConfiguration, Settings);
Proxy.SetTorrentSeedingConfiguration(hash.ToLower(), remoteBook.SeedConfiguration, Settings);
}
return hash;

@ -34,16 +34,16 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
// patch can be a number (releases) or 'x' (git)
private static readonly Regex VersionRegex = new Regex(@"(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+|x)", RegexOptions.Compiled);
protected override string AddFromNzbFile(RemoteBook remoteAlbum, string filename, byte[] fileContent)
protected override string AddFromNzbFile(RemoteBook remoteBook, string filename, byte[] fileContent)
{
var category = Settings.MusicCategory;
var priority = remoteAlbum.IsRecentAlbum() ? Settings.RecentTvPriority : Settings.OlderTvPriority;
var priority = remoteBook.IsRecentBook() ? Settings.RecentTvPriority : Settings.OlderTvPriority;
var response = _proxy.DownloadNzb(fileContent, filename, category, priority, Settings);
if (response == null || response.Ids.Empty())
{
throw new DownloadClientRejectedReleaseException(remoteAlbum.Release, "SABnzbd rejected the NZB for an unknown reason");
throw new DownloadClientRejectedReleaseException(remoteBook.Release, "SABnzbd rejected the NZB for an unknown reason");
}
return response.Ids.First();

@ -179,15 +179,15 @@ namespace NzbDrone.Core.Download.Clients.Transmission
};
}
protected override string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink)
protected override string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink)
{
_proxy.AddTorrentFromUrl(magnetLink, GetDownloadDirectory(), Settings);
_proxy.SetTorrentSeedingConfiguration(hash, remoteAlbum.SeedConfiguration, Settings);
_proxy.SetTorrentSeedingConfiguration(hash, remoteBook.SeedConfiguration, Settings);
var isRecentAlbum = remoteAlbum.IsRecentAlbum();
var isRecentBook = remoteBook.IsRecentBook();
if ((isRecentAlbum && Settings.RecentTvPriority == (int)TransmissionPriority.First) ||
(!isRecentAlbum && Settings.OlderTvPriority == (int)TransmissionPriority.First))
if ((isRecentBook && Settings.RecentTvPriority == (int)TransmissionPriority.First) ||
(!isRecentBook && Settings.OlderTvPriority == (int)TransmissionPriority.First))
{
_proxy.MoveTorrentToTopInQueue(hash, Settings);
}
@ -195,15 +195,15 @@ namespace NzbDrone.Core.Download.Clients.Transmission
return hash;
}
protected override string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent)
protected override string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent)
{
_proxy.AddTorrentFromData(fileContent, GetDownloadDirectory(), Settings);
_proxy.SetTorrentSeedingConfiguration(hash, remoteAlbum.SeedConfiguration, Settings);
_proxy.SetTorrentSeedingConfiguration(hash, remoteBook.SeedConfiguration, Settings);
var isRecentAlbum = remoteAlbum.IsRecentAlbum();
var isRecentBook = remoteBook.IsRecentBook();
if ((isRecentAlbum && Settings.RecentTvPriority == (int)TransmissionPriority.First) ||
(!isRecentAlbum && Settings.OlderTvPriority == (int)TransmissionPriority.First))
if ((isRecentBook && Settings.RecentTvPriority == (int)TransmissionPriority.First) ||
(!isRecentBook && Settings.OlderTvPriority == (int)TransmissionPriority.First))
{
_proxy.MoveTorrentToTopInQueue(hash, Settings);
}

@ -57,9 +57,9 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
}
}
protected override string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink)
protected override string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink)
{
var priority = (RTorrentPriority)(remoteAlbum.IsRecentAlbum() ? Settings.RecentTvPriority : Settings.OlderTvPriority);
var priority = (RTorrentPriority)(remoteBook.IsRecentBook() ? Settings.RecentTvPriority : Settings.OlderTvPriority);
_proxy.AddTorrentFromUrl(magnetLink, Settings.MusicCategory, priority, Settings.MusicDirectory, Settings);
@ -77,9 +77,9 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
return hash;
}
protected override string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent)
protected override string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent)
{
var priority = (RTorrentPriority)(remoteAlbum.IsRecentAlbum() ? Settings.RecentTvPriority : Settings.OlderTvPriority);
var priority = (RTorrentPriority)(remoteBook.IsRecentBook() ? Settings.RecentTvPriority : Settings.OlderTvPriority);
_proxy.AddTorrentFromFile(filename, fileContent, Settings.MusicCategory, priority, Settings.MusicDirectory, Settings);
@ -89,7 +89,7 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
{
_logger.Debug("rTorrent didn't add the torrent within {0} seconds: {1}.", tries * retryDelay / 1000, filename);
throw new ReleaseDownloadException(remoteAlbum.Release, "Downloading torrent failed");
throw new ReleaseDownloadException(remoteBook.Release, "Downloading torrent failed");
}
return hash;

@ -52,20 +52,20 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
}
}
protected override string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink)
protected override string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink)
{
_proxy.AddTorrentFromUrl(magnetLink, Settings);
_proxy.SetTorrentSeedingConfiguration(hash, remoteAlbum.SeedConfiguration, Settings);
_proxy.SetTorrentSeedingConfiguration(hash, remoteBook.SeedConfiguration, Settings);
if (Settings.MusicCategory.IsNotNullOrWhiteSpace())
{
_proxy.SetTorrentLabel(hash, Settings.MusicCategory, Settings);
}
var isRecentAlbum = remoteAlbum.IsRecentAlbum();
var isRecentBook = remoteBook.IsRecentBook();
if ((isRecentAlbum && Settings.RecentTvPriority == (int)UTorrentPriority.First) ||
(!isRecentAlbum && Settings.OlderTvPriority == (int)UTorrentPriority.First))
if ((isRecentBook && Settings.RecentTvPriority == (int)UTorrentPriority.First) ||
(!isRecentBook && Settings.OlderTvPriority == (int)UTorrentPriority.First))
{
_proxy.MoveTorrentToTopInQueue(hash, Settings);
}
@ -75,20 +75,20 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
return hash;
}
protected override string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent)
protected override string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent)
{
_proxy.AddTorrentFromFile(filename, fileContent, Settings);
_proxy.SetTorrentSeedingConfiguration(hash, remoteAlbum.SeedConfiguration, Settings);
_proxy.SetTorrentSeedingConfiguration(hash, remoteBook.SeedConfiguration, Settings);
if (Settings.MusicCategory.IsNotNullOrWhiteSpace())
{
_proxy.SetTorrentLabel(hash, Settings.MusicCategory, Settings);
}
var isRecentAlbum = remoteAlbum.IsRecentAlbum();
var isRecentBook = remoteBook.IsRecentBook();
if ((isRecentAlbum && Settings.RecentTvPriority == (int)UTorrentPriority.First) ||
(!isRecentAlbum && Settings.OlderTvPriority == (int)UTorrentPriority.First))
if ((isRecentBook && Settings.RecentTvPriority == (int)UTorrentPriority.First) ||
(!isRecentBook && Settings.OlderTvPriority == (int)UTorrentPriority.First))
{
_proxy.MoveTorrentToTopInQueue(hash, Settings);
}

@ -60,7 +60,7 @@ namespace NzbDrone.Core.Download
get;
}
public abstract string Download(RemoteBook remoteAlbum);
public abstract string Download(RemoteBook remoteBook);
public abstract IEnumerable<DownloadClientItem> GetItems();
public abstract void RemoveItem(string downloadId, bool deleteData);
public abstract DownloadClientInfo GetStatus();

@ -15,7 +15,7 @@ namespace NzbDrone.Core.Download
{
public interface IDownloadService
{
void DownloadReport(RemoteBook remoteAlbum);
void DownloadReport(RemoteBook remoteBook);
}
public class DownloadService : IDownloadService
@ -45,39 +45,39 @@ namespace NzbDrone.Core.Download
_logger = logger;
}
public void DownloadReport(RemoteBook remoteAlbum)
public void DownloadReport(RemoteBook remoteBook)
{
Ensure.That(remoteAlbum.Author, () => remoteAlbum.Author).IsNotNull();
Ensure.That(remoteAlbum.Books, () => remoteAlbum.Books).HasItems();
Ensure.That(remoteBook.Author, () => remoteBook.Author).IsNotNull();
Ensure.That(remoteBook.Books, () => remoteBook.Books).HasItems();
var downloadTitle = remoteAlbum.Release.Title;
var downloadClient = _downloadClientProvider.GetDownloadClient(remoteAlbum.Release.DownloadProtocol);
var downloadTitle = remoteBook.Release.Title;
var downloadClient = _downloadClientProvider.GetDownloadClient(remoteBook.Release.DownloadProtocol);
if (downloadClient == null)
{
throw new DownloadClientUnavailableException($"{remoteAlbum.Release.DownloadProtocol} Download client isn't configured yet");
throw new DownloadClientUnavailableException($"{remoteBook.Release.DownloadProtocol} Download client isn't configured yet");
}
// Get the seed configuration for this release.
remoteAlbum.SeedConfiguration = _seedConfigProvider.GetSeedConfiguration(remoteAlbum);
remoteBook.SeedConfiguration = _seedConfigProvider.GetSeedConfiguration(remoteBook);
// Limit grabs to 2 per second.
if (remoteAlbum.Release.DownloadUrl.IsNotNullOrWhiteSpace() && !remoteAlbum.Release.DownloadUrl.StartsWith("magnet:"))
if (remoteBook.Release.DownloadUrl.IsNotNullOrWhiteSpace() && !remoteBook.Release.DownloadUrl.StartsWith("magnet:"))
{
var url = new HttpUri(remoteAlbum.Release.DownloadUrl);
var url = new HttpUri(remoteBook.Release.DownloadUrl);
_rateLimitService.WaitAndPulse(url.Host, TimeSpan.FromSeconds(2));
}
string downloadClientId;
try
{
downloadClientId = downloadClient.Download(remoteAlbum);
downloadClientId = downloadClient.Download(remoteBook);
_downloadClientStatusService.RecordSuccess(downloadClient.Definition.Id);
_indexerStatusService.RecordSuccess(remoteAlbum.Release.IndexerId);
_indexerStatusService.RecordSuccess(remoteBook.Release.IndexerId);
}
catch (ReleaseUnavailableException)
{
_logger.Trace("Release {0} no longer available on indexer.", remoteAlbum);
_logger.Trace("Release {0} no longer available on indexer.", remoteBook);
throw;
}
catch (ReleaseDownloadException ex)
@ -85,17 +85,17 @@ namespace NzbDrone.Core.Download
var http429 = ex.InnerException as TooManyRequestsException;
if (http429 != null)
{
_indexerStatusService.RecordFailure(remoteAlbum.Release.IndexerId, http429.RetryAfter);
_indexerStatusService.RecordFailure(remoteBook.Release.IndexerId, http429.RetryAfter);
}
else
{
_indexerStatusService.RecordFailure(remoteAlbum.Release.IndexerId);
_indexerStatusService.RecordFailure(remoteBook.Release.IndexerId);
}
throw;
}
var albumGrabbedEvent = new BookGrabbedEvent(remoteAlbum);
var albumGrabbedEvent = new BookGrabbedEvent(remoteBook);
albumGrabbedEvent.DownloadClient = downloadClient.Name;
if (!string.IsNullOrWhiteSpace(downloadClientId))

@ -9,7 +9,7 @@ namespace NzbDrone.Core.Download
{
DownloadProtocol Protocol { get; }
string Download(RemoteBook remoteAlbum);
string Download(RemoteBook remoteBook);
IEnumerable<DownloadClientItem> GetItems();
void RemoveItem(string downloadId, bool deleteData);
DownloadClientInfo GetStatus();

@ -345,10 +345,10 @@ namespace NzbDrone.Core.Download.Pending
p.Release.Indexer == release.Indexer;
}
private int GetDelay(RemoteBook remoteAlbum)
private int GetDelay(RemoteBook remoteBook)
{
var delayProfile = _delayProfileService.AllForTags(remoteAlbum.Author.Tags).OrderBy(d => d.Order).First();
var delay = delayProfile.GetProtocolDelay(remoteAlbum.Release.DownloadProtocol);
var delayProfile = _delayProfileService.AllForTags(remoteBook.Author.Tags).OrderBy(d => d.Order).First();
var delay = delayProfile.GetProtocolDelay(remoteBook.Release.DownloadProtocol);
var minimumAge = _configService.MinimumAge;
return new[] { delay, minimumAge }.Max();

@ -50,7 +50,7 @@ namespace NzbDrone.Core.Download
foreach (var report in prioritizedDecisions)
{
var remoteAlbum = report.RemoteBook;
var remoteBook = report.RemoteBook;
var downloadProtocol = report.RemoteBook.Release.DownloadProtocol;
//Skip if already grabbed
@ -74,19 +74,19 @@ namespace NzbDrone.Core.Download
try
{
_downloadService.DownloadReport(remoteAlbum);
_downloadService.DownloadReport(remoteBook);
grabbed.Add(report);
}
catch (ReleaseUnavailableException)
{
_logger.Warn("Failed to download release from indexer, no longer available. " + remoteAlbum);
_logger.Warn("Failed to download release from indexer, no longer available. " + remoteBook);
rejected.Add(report);
}
catch (Exception ex)
{
if (ex is DownloadClientUnavailableException || ex is DownloadClientAuthenticationException)
{
_logger.Debug(ex, "Failed to send release to download client, storing until later. " + remoteAlbum);
_logger.Debug(ex, "Failed to send release to download client, storing until later. " + remoteBook);
PreparePending(pendingAddQueue, grabbed, pending, report, PendingReleaseReason.DownloadClientUnavailable);
if (downloadProtocol == DownloadProtocol.Usenet)
@ -100,7 +100,7 @@ namespace NzbDrone.Core.Download
}
else
{
_logger.Warn(ex, "Couldn't add report to download queue. " + remoteAlbum);
_logger.Warn(ex, "Couldn't add report to download queue. " + remoteBook);
}
}
}

@ -38,23 +38,23 @@ namespace NzbDrone.Core.Download
public virtual bool PreferTorrentFile => false;
protected abstract string AddFromMagnetLink(RemoteBook remoteAlbum, string hash, string magnetLink);
protected abstract string AddFromTorrentFile(RemoteBook remoteAlbum, string hash, string filename, byte[] fileContent);
protected abstract string AddFromMagnetLink(RemoteBook remoteBook, string hash, string magnetLink);
protected abstract string AddFromTorrentFile(RemoteBook remoteBook, string hash, string filename, byte[] fileContent);
public override string Download(RemoteBook remoteAlbum)
public override string Download(RemoteBook remoteBook)
{
var torrentInfo = remoteAlbum.Release as TorrentInfo;
var torrentInfo = remoteBook.Release as TorrentInfo;
string magnetUrl = null;
string torrentUrl = null;
if (remoteAlbum.Release.DownloadUrl.IsNotNullOrWhiteSpace() && remoteAlbum.Release.DownloadUrl.StartsWith("magnet:"))
if (remoteBook.Release.DownloadUrl.IsNotNullOrWhiteSpace() && remoteBook.Release.DownloadUrl.StartsWith("magnet:"))
{
magnetUrl = remoteAlbum.Release.DownloadUrl;
magnetUrl = remoteBook.Release.DownloadUrl;
}
else
{
torrentUrl = remoteAlbum.Release.DownloadUrl;
torrentUrl = remoteBook.Release.DownloadUrl;
}
if (torrentInfo != null && !torrentInfo.MagnetUrl.IsNullOrWhiteSpace())
@ -68,7 +68,7 @@ namespace NzbDrone.Core.Download
{
try
{
return DownloadFromWebUrl(remoteAlbum, torrentUrl);
return DownloadFromWebUrl(remoteBook, torrentUrl);
}
catch (Exception ex)
{
@ -85,11 +85,11 @@ namespace NzbDrone.Core.Download
{
try
{
return DownloadFromMagnetUrl(remoteAlbum, magnetUrl);
return DownloadFromMagnetUrl(remoteBook, magnetUrl);
}
catch (NotSupportedException ex)
{
throw new ReleaseDownloadException(remoteAlbum.Release, "Magnet not supported by download client. ({0})", ex.Message);
throw new ReleaseDownloadException(remoteBook.Release, "Magnet not supported by download client. ({0})", ex.Message);
}
}
}
@ -99,13 +99,13 @@ namespace NzbDrone.Core.Download
{
try
{
return DownloadFromMagnetUrl(remoteAlbum, magnetUrl);
return DownloadFromMagnetUrl(remoteBook, magnetUrl);
}
catch (NotSupportedException ex)
{
if (torrentUrl.IsNullOrWhiteSpace())
{
throw new ReleaseDownloadException(remoteAlbum.Release, "Magnet not supported by download client. ({0})", ex.Message);
throw new ReleaseDownloadException(remoteBook.Release, "Magnet not supported by download client. ({0})", ex.Message);
}
_logger.Debug("Magnet not supported by download client, trying torrent. ({0})", ex.Message);
@ -114,14 +114,14 @@ namespace NzbDrone.Core.Download
if (torrentUrl.IsNotNullOrWhiteSpace())
{
return DownloadFromWebUrl(remoteAlbum, torrentUrl);
return DownloadFromWebUrl(remoteBook, torrentUrl);
}
}
return null;
}
private string DownloadFromWebUrl(RemoteBook remoteAlbum, string torrentUrl)
private string DownloadFromWebUrl(RemoteBook remoteBook, string torrentUrl)
{
byte[] torrentFile = null;
@ -145,10 +145,10 @@ namespace NzbDrone.Core.Download
{
if (locationHeader.StartsWith("magnet:"))
{
return DownloadFromMagnetUrl(remoteAlbum, locationHeader);
return DownloadFromMagnetUrl(remoteBook, locationHeader);
}
return DownloadFromWebUrl(remoteAlbum, locationHeader);
return DownloadFromWebUrl(remoteBook, locationHeader);
}
throw new WebException("Remote website tried to redirect without providing a location.");
@ -156,14 +156,14 @@ namespace NzbDrone.Core.Download
torrentFile = response.ResponseData;
_logger.Debug("Downloading torrent for release '{0}' finished ({1} bytes from {2})", remoteAlbum.Release.Title, torrentFile.Length, torrentUrl);
_logger.Debug("Downloading torrent for release '{0}' finished ({1} bytes from {2})", remoteBook.Release.Title, torrentFile.Length, torrentUrl);
}
catch (HttpException ex)
{
if (ex.Response.StatusCode == HttpStatusCode.NotFound)
{
_logger.Error(ex, "Downloading torrent file for book '{0}' failed since it no longer exists ({1})", remoteAlbum.Release.Title, torrentUrl);
throw new ReleaseUnavailableException(remoteAlbum.Release, "Downloading torrent failed", ex);
_logger.Error(ex, "Downloading torrent file for book '{0}' failed since it no longer exists ({1})", remoteBook.Release.Title, torrentUrl);
throw new ReleaseUnavailableException(remoteBook.Release, "Downloading torrent failed", ex);
}
if ((int)ex.Response.StatusCode == 429)
@ -172,34 +172,34 @@ namespace NzbDrone.Core.Download
}
else
{
_logger.Error(ex, "Downloading torrent file for release '{0}' failed ({1})", remoteAlbum.Release.Title, torrentUrl);
_logger.Error(ex, "Downloading torrent file for release '{0}' failed ({1})", remoteBook.Release.Title, torrentUrl);
}
throw new ReleaseDownloadException(remoteAlbum.Release, "Downloading torrent failed", ex);
throw new ReleaseDownloadException(remoteBook.Release, "Downloading torrent failed", ex);
}
catch (WebException ex)
{
_logger.Error(ex, "Downloading torrent file for release '{0}' failed ({1})", remoteAlbum.Release.Title, torrentUrl);
_logger.Error(ex, "Downloading torrent file for release '{0}' failed ({1})", remoteBook.Release.Title, torrentUrl);
throw new ReleaseDownloadException(remoteAlbum.Release, "Downloading torrent failed", ex);
throw new ReleaseDownloadException(remoteBook.Release, "Downloading torrent failed", ex);
}
var filename = string.Format("{0}.torrent", FileNameBuilder.CleanFileName(remoteAlbum.Release.Title));
var filename = string.Format("{0}.torrent", FileNameBuilder.CleanFileName(remoteBook.Release.Title));
var hash = _torrentFileInfoReader.GetHashFromTorrentFile(torrentFile);
var actualHash = AddFromTorrentFile(remoteAlbum, hash, filename, torrentFile);
var actualHash = AddFromTorrentFile(remoteBook, hash, filename, torrentFile);
if (actualHash.IsNotNullOrWhiteSpace() && hash != actualHash)
{
_logger.Debug(
"{0} did not return the expected InfoHash for '{1}', Readarr could potentially lose track of the download in progress.",
Definition.Implementation,
remoteAlbum.Release.DownloadUrl);
remoteBook.Release.DownloadUrl);
}
return actualHash;
}
private string DownloadFromMagnetUrl(RemoteBook remoteAlbum, string magnetUrl)
private string DownloadFromMagnetUrl(RemoteBook remoteBook, string magnetUrl)
{
string hash = null;
string actualHash = null;
@ -210,14 +210,14 @@ namespace NzbDrone.Core.Download
}
catch (FormatException ex)
{
_logger.Error(ex, "Failed to parse magnetlink for release '{0}': '{1}'", remoteAlbum.Release.Title, magnetUrl);
_logger.Error(ex, "Failed to parse magnetlink for release '{0}': '{1}'", remoteBook.Release.Title, magnetUrl);
return null;
}
if (hash != null)
{
actualHash = AddFromMagnetLink(remoteAlbum, hash, magnetUrl);
actualHash = AddFromMagnetLink(remoteBook, hash, magnetUrl);
}
if (actualHash.IsNotNullOrWhiteSpace() && hash != actualHash)
@ -225,7 +225,7 @@ namespace NzbDrone.Core.Download
_logger.Debug(
"{0} did not return the expected InfoHash for '{1}', Readarr could potentially lose track of the download in progress.",
Definition.Implementation,
remoteAlbum.Release.DownloadUrl);
remoteBook.Release.DownloadUrl);
}
return actualHash;

@ -58,12 +58,12 @@ namespace NzbDrone.Core.Download.TrackedDownloads
foreach (var item in updateCacheItems)
{
var parsedAlbumInfo = Parser.Parser.ParseBookTitle(item.DownloadItem.Title);
var parsedBookInfo = Parser.Parser.ParseBookTitle(item.DownloadItem.Title);
item.RemoteBook = null;
if (parsedAlbumInfo != null)
if (parsedBookInfo != null)
{
item.RemoteBook = _parsingService.Map(parsedAlbumInfo);
item.RemoteBook = _parsingService.Map(parsedBookInfo);
}
}
@ -175,7 +175,7 @@ namespace NzbDrone.Core.Download.TrackedDownloads
else
{
parsedBookInfo =
Parser.Parser.ParseAlbumTitleWithSearchCriteria(firstHistoryItem.SourceTitle,
Parser.Parser.ParseBookTitleWithSearchCriteria(firstHistoryItem.SourceTitle,
historyAuthor,
historyBooks);

@ -33,12 +33,12 @@ namespace NzbDrone.Core.Download
public override DownloadProtocol Protocol => DownloadProtocol.Usenet;
protected abstract string AddFromNzbFile(RemoteBook remoteAlbum, string filename, byte[] fileContent);
protected abstract string AddFromNzbFile(RemoteBook remoteBook, string filename, byte[] fileContent);
public override string Download(RemoteBook remoteAlbum)
public override string Download(RemoteBook remoteBook)
{
var url = remoteAlbum.Release.DownloadUrl;
var filename = FileNameBuilder.CleanFileName(remoteAlbum.Release.Title) + ".nzb";
var url = remoteBook.Release.DownloadUrl;
var filename = FileNameBuilder.CleanFileName(remoteBook.Release.Title) + ".nzb";
byte[] nzbData;
@ -47,21 +47,21 @@ namespace NzbDrone.Core.Download
var nzbDataRequest = new HttpRequest(url);
// TODO: Look into moving download request handling to indexer
if (remoteAlbum.Release.BasicAuthString.IsNotNullOrWhiteSpace())
if (remoteBook.Release.BasicAuthString.IsNotNullOrWhiteSpace())
{
nzbDataRequest.Headers.Set("Authorization", "Basic " + remoteAlbum.Release.BasicAuthString);
nzbDataRequest.Headers.Set("Authorization", "Basic " + remoteBook.Release.BasicAuthString);
}
nzbData = _httpClient.Get(nzbDataRequest).ResponseData;
_logger.Debug("Downloaded nzb for release '{0}' finished ({1} bytes from {2})", remoteAlbum.Release.Title, nzbData.Length, url);
_logger.Debug("Downloaded nzb for release '{0}' finished ({1} bytes from {2})", remoteBook.Release.Title, nzbData.Length, url);
}
catch (HttpException ex)
{
if (ex.Response.StatusCode == HttpStatusCode.NotFound)
{
_logger.Error(ex, "Downloading nzb file for book '{0}' failed since it no longer exists ({1})", remoteAlbum.Release.Title, url);
throw new ReleaseUnavailableException(remoteAlbum.Release, "Downloading torrent failed", ex);
_logger.Error(ex, "Downloading nzb file for book '{0}' failed since it no longer exists ({1})", remoteBook.Release.Title, url);
throw new ReleaseUnavailableException(remoteBook.Release, "Downloading torrent failed", ex);
}
if ((int)ex.Response.StatusCode == 429)
@ -70,22 +70,22 @@ namespace NzbDrone.Core.Download
}
else
{
_logger.Error(ex, "Downloading nzb for release '{0}' failed ({1})", remoteAlbum.Release.Title, url);
_logger.Error(ex, "Downloading nzb for release '{0}' failed ({1})", remoteBook.Release.Title, url);
}
throw new ReleaseDownloadException(remoteAlbum.Release, "Downloading nzb failed", ex);
throw new ReleaseDownloadException(remoteBook.Release, "Downloading nzb failed", ex);
}
catch (WebException ex)
{
_logger.Error(ex, "Downloading nzb for release '{0}' failed ({1})", remoteAlbum.Release.Title, url);
_logger.Error(ex, "Downloading nzb for release '{0}' failed ({1})", remoteBook.Release.Title, url);
throw new ReleaseDownloadException(remoteAlbum.Release, "Downloading nzb failed", ex);
throw new ReleaseDownloadException(remoteBook.Release, "Downloading nzb failed", ex);
}
_nzbValidationService.Validate(filename, nzbData);
_logger.Info("Adding report [{0}] to the queue.", remoteAlbum.Release.Title);
return AddFromNzbFile(remoteAlbum, filename, nzbData);
_logger.Info("Adding report [{0}] to the queue.", remoteBook.Release.Title);
return AddFromNzbFile(remoteBook, filename, nzbData);
}
}
}

@ -124,7 +124,7 @@ namespace NzbDrone.Core.Extras
{
foreach (var extraFileManager in _extraFileManagers)
{
extraFileManager.CreateAfterTrackImport(author, bookFile);
extraFileManager.CreateAfterBookImport(author, bookFile);
}
}

@ -15,7 +15,7 @@ namespace NzbDrone.Core.Extras.Files
{
int Order { get; }
IEnumerable<ExtraFile> CreateAfterAuthorScan(Author author, List<BookFile> bookFiles);
IEnumerable<ExtraFile> CreateAfterTrackImport(Author author, BookFile bookFile);
IEnumerable<ExtraFile> CreateAfterBookImport(Author author, BookFile bookFile);
IEnumerable<ExtraFile> CreateAfterBookImport(Author author, Book book, string authorFolder, string bookFolder);
IEnumerable<ExtraFile> MoveFilesAfterRename(Author author, List<BookFile> bookFiles);
ExtraFile Import(Author author, BookFile bookFile, string path, string extension, bool readOnly);
@ -42,7 +42,7 @@ namespace NzbDrone.Core.Extras.Files
public abstract int Order { get; }
public abstract IEnumerable<ExtraFile> CreateAfterAuthorScan(Author author, List<BookFile> bookFiles);
public abstract IEnumerable<ExtraFile> CreateAfterTrackImport(Author author, BookFile bookFile);
public abstract IEnumerable<ExtraFile> CreateAfterBookImport(Author author, BookFile bookFile);
public abstract IEnumerable<ExtraFile> CreateAfterBookImport(Author author, Book book, string authorFolder, string albumFolder);
public abstract IEnumerable<ExtraFile> MoveFilesAfterRename(Author author, List<BookFile> bookFiles);
public abstract ExtraFile Import(Author author, BookFile bookFile, string path, string extension, bool readOnly);

@ -16,8 +16,8 @@ namespace NzbDrone.Core.Extras.Files
public interface IExtraFileService<TExtraFile>
where TExtraFile : ExtraFile, new()
{
List<TExtraFile> GetFilesByArtist(int authorId);
List<TExtraFile> GetFilesByTrackFile(int trackFileId);
List<TExtraFile> GetFilesByAuthor(int authorId);
List<TExtraFile> GetFilesByBookFile(int bookFileId);
TExtraFile FindByPath(string path);
void Upsert(TExtraFile extraFile);
void Upsert(List<TExtraFile> extraFiles);
@ -49,14 +49,14 @@ namespace NzbDrone.Core.Extras.Files
_logger = logger;
}
public List<TExtraFile> GetFilesByArtist(int authorId)
public List<TExtraFile> GetFilesByAuthor(int authorId)
{
return _repository.GetFilesByAuthor(authorId);
}
public List<TExtraFile> GetFilesByTrackFile(int trackFileId)
public List<TExtraFile> GetFilesByBookFile(int bookFileId)
{
return _repository.GetFilesByBookFile(trackFileId);
return _repository.GetFilesByBookFile(bookFileId);
}
public TExtraFile FindByPath(string path)

@ -23,7 +23,7 @@ namespace NzbDrone.Core.Extras
public virtual ImportExistingExtraFileFilterResult<TExtraFile> FilterAndClean(Author author, List<string> filesOnDisk, List<string> importedFiles)
{
var authorFiles = _extraFileService.GetFilesByArtist(author.Id);
var authorFiles = _extraFileService.GetFilesByAuthor(author.Id);
Clean(author, filesOnDisk, importedFiles, authorFiles);

@ -54,20 +54,20 @@ namespace NzbDrone.Core.Extras.Metadata
continue;
}
if (metadata.Type == MetadataType.AlbumImage || metadata.Type == MetadataType.AlbumMetadata)
if (metadata.Type == MetadataType.BookImage || metadata.Type == MetadataType.BookMetadata)
{
var localAlbum = _parsingService.GetLocalAlbum(possibleMetadataFile, author);
if (localAlbum == null)
{
_logger.Debug("Extra file folder has multiple Albums: {0}", possibleMetadataFile);
_logger.Debug("Extra file folder has multiple Books: {0}", possibleMetadataFile);
continue;
}
metadata.BookId = localAlbum.Id;
}
if (metadata.Type == MetadataType.TrackMetadata)
if (metadata.Type == MetadataType.BookMetadata)
{
var localTrack = new LocalBook
{

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save