Method, Variable, Class Renames in Readarr.Core

Co-Authored-By: ta264 <ta264@users.noreply.github.com>
pull/22/head
Qstick 4 years ago
parent 56aedcc467
commit 8547af9fae

@ -3,21 +3,21 @@ export const BACKUP = 'Backup';
export const REFRESH_MONITORED_DOWNLOADS = 'RefreshMonitoredDownloads';
export const CLEAR_BLACKLIST = 'ClearBlacklist';
export const CLEAR_LOGS = 'ClearLog';
export const CUTOFF_UNMET_ALBUM_SEARCH = 'CutoffUnmetAlbumSearch';
export const CUTOFF_UNMET_ALBUM_SEARCH = 'CutoffUnmetBookSearch';
export const DELETE_LOG_FILES = 'DeleteLogFiles';
export const DELETE_UPDATE_LOG_FILES = 'DeleteUpdateLogFiles';
export const DOWNLOADED_ALBUMS_SCAN = 'DownloadedAlbumsScan';
export const DOWNLOADED_ALBUMS_SCAN = 'DownloadedBooksScan';
export const ALBUM_SEARCH = 'AlbumSearch';
export const INTERACTIVE_IMPORT = 'ManualImport';
export const MISSING_ALBUM_SEARCH = 'MissingAlbumSearch';
export const MOVE_ARTIST = 'MoveArtist';
export const REFRESH_ARTIST = 'RefreshArtist';
export const MISSING_ALBUM_SEARCH = 'MissingBookSearch';
export const MOVE_ARTIST = 'MoveAuthor';
export const REFRESH_ARTIST = 'RefreshAuthor';
export const RENAME_FILES = 'RenameFiles';
export const RENAME_ARTIST = 'RenameArtist';
export const RENAME_ARTIST = 'RenameAuthor';
export const RESCAN_FOLDERS = 'RescanFolders';
export const RETAG_FILES = 'RetagFiles';
export const RETAG_ARTIST = 'RetagArtist';
export const RETAG_ARTIST = 'RetagAuthor';
export const RESET_API_KEY = 'ResetApiKey';
export const RSS_SYNC = 'RssSync';
export const SEASON_SEARCH = 'AlbumSearch';
export const ARTIST_SEARCH = 'ArtistSearch';
export const SEASON_SEARCH = 'BookSearch';
export const ARTIST_SEARCH = 'AuthorSearch';

@ -19,7 +19,7 @@ function createMapStateToProps() {
props.isFetching = organizePreview.isFetching || naming.isFetching;
props.isPopulated = organizePreview.isPopulated && naming.isPopulated;
props.error = organizePreview.error || naming.error;
props.trackFormat = naming.item.standardTrackFormat;
props.trackFormat = naming.item.standardBookFormat;
props.path = artist.path;
return props;

@ -32,7 +32,7 @@ class Naming extends Component {
this.setState({
isNamingModalOpen: true,
namingModalOptions: {
name: 'standardTrackFormat',
name: 'standardBookFormat',
album: true,
track: true,
additional: true
@ -40,11 +40,11 @@ class Naming extends Component {
});
}
onArtistFolderNamingModalOpenClick = () => {
onAuthorFolderNamingModalOpenClick = () => {
this.setState({
isNamingModalOpen: true,
namingModalOptions: {
name: 'artistFolderFormat'
name: 'authorFolderFormat'
}
});
}
@ -73,24 +73,24 @@ class Naming extends Component {
namingModalOptions
} = this.state;
const renameTracks = hasSettings && settings.renameTracks.value;
const renameBooks = hasSettings && settings.renameBooks.value;
const standardTrackFormatHelpTexts = [];
const standardTrackFormatErrors = [];
const artistFolderFormatHelpTexts = [];
const artistFolderFormatErrors = [];
const standardBookFormatHelpTexts = [];
const standardBookFormatErrors = [];
const authorFolderFormatHelpTexts = [];
const authorFolderFormatErrors = [];
if (examplesPopulated) {
if (examples.singleTrackExample) {
standardTrackFormatHelpTexts.push(`Single Track: ${examples.singleTrackExample}`);
standardBookFormatHelpTexts.push(`Single Track: ${examples.singleTrackExample}`);
} else {
standardTrackFormatErrors.push({ message: 'Single Track: Invalid Format' });
standardBookFormatErrors.push({ message: 'Single Track: Invalid Format' });
}
if (examples.artistFolderExample) {
artistFolderFormatHelpTexts.push(`Example: ${examples.artistFolderExample}`);
authorFolderFormatHelpTexts.push(`Example: ${examples.artistFolderExample}`);
} else {
artistFolderFormatErrors.push({ message: 'Invalid Format' });
authorFolderFormatErrors.push({ message: 'Invalid Format' });
}
}
@ -114,10 +114,10 @@ class Naming extends Component {
<FormInputGroup
type={inputTypes.CHECK}
name="renameTracks"
name="renameBooks"
helpText="Readarr will use the existing file name if renaming is disabled"
onChange={onInputChange}
{...settings.renameTracks}
{...settings.renameBooks}
/>
</FormGroup>
@ -134,20 +134,20 @@ class Naming extends Component {
</FormGroup>
{
renameTracks &&
renameBooks &&
<div>
<FormGroup size={sizes.LARGE}>
<FormLabel>Standard Track Format</FormLabel>
<FormLabel>Standard Book Format</FormLabel>
<FormInputGroup
inputClassName={styles.namingInput}
type={inputTypes.TEXT}
name="standardTrackFormat"
name="standardBookFormat"
buttons={<FormInputButton onPress={this.onStandardNamingModalOpenClick}>?</FormInputButton>}
onChange={onInputChange}
{...settings.standardTrackFormat}
helpTexts={standardTrackFormatHelpTexts}
errors={[...standardTrackFormatErrors, ...settings.standardTrackFormat.errors]}
{...settings.standardBookFormat}
helpTexts={standardBookFormatHelpTexts}
errors={[...standardBookFormatErrors, ...settings.standardBookFormat.errors]}
/>
</FormGroup>
</div>
@ -162,12 +162,12 @@ class Naming extends Component {
<FormInputGroup
inputClassName={styles.namingInput}
type={inputTypes.TEXT}
name="artistFolderFormat"
buttons={<FormInputButton onPress={this.onArtistFolderNamingModalOpenClick}>?</FormInputButton>}
name="authorFolderFormat"
buttons={<FormInputButton onPress={this.onAuthorFolderNamingModalOpenClick}>?</FormInputButton>}
onChange={onInputChange}
{...settings.artistFolderFormat}
helpTexts={['Used when adding a new artist or moving an artist via the artist editor', ...artistFolderFormatHelpTexts]}
errors={[...artistFolderFormatErrors, ...settings.artistFolderFormat.errors]}
{...settings.authorFolderFormat}
helpTexts={['Used when adding a new artist or moving an author via the author editor', ...authorFolderFormatHelpTexts]}
errors={[...authorFolderFormatErrors, ...settings.authorFolderFormat.errors]}
/>
</FormGroup>

@ -28,35 +28,35 @@ const caseOptions = [
const fileNameTokens = [
{
token: '{Artist Name} - {Album Title} - {track:00} - {Track Title} {Quality Full}',
example: 'Artist Name - Album Title - 01 - Track Title MP3-320 Proper'
token: '{Author Name} - {Book Title} - {track:00} - {Track Title} {Quality Full}',
example: 'Author Name - Book Title - 01 - Track Title MP3-320 Proper'
},
{
token: '{Artist.Name}.{Album.Title}.{track:00}.{TrackClean.Title}.{Quality.Full}',
example: 'Artist.Name.Album.Title.01.Track.Title.MP3-320'
token: '{Author.Name}.{Book.Title}.{track:00}.{TrackClean.Title}.{Quality.Full}',
example: 'Author.Name.Book.Title.01.Track.Title.MP3-320'
}
];
const artistTokens = [
{ token: '{Artist Name}', example: 'Artist Name' },
{ token: '{Author Name}', example: 'Author Name' },
{ token: '{Artist NameThe}', example: 'Artist Name, The' },
{ token: '{Author NameThe}', example: 'Author Name, The' },
{ token: '{Artist CleanName}', example: 'Artist Name' },
{ token: '{Author CleanName}', example: 'Author Name' },
{ token: '{Artist Disambiguation}', example: 'Disambiguation' }
{ token: '{Author Disambiguation}', example: 'Disambiguation' }
];
const albumTokens = [
{ token: '{Album Title}', example: 'Album Title' },
{ token: '{Book Title}', example: 'Book Title' },
{ token: '{Album TitleThe}', example: 'Album Title, The' },
{ token: '{Book TitleThe}', example: 'Book Title, The' },
{ token: '{Album CleanTitle}', example: 'Album Title' },
{ token: '{Book CleanTitle}', example: 'Book Title' },
{ token: '{Album Type}', example: 'Album Type' },
{ token: '{Book Type}', example: 'Book Type' },
{ token: '{Album Disambiguation}', example: 'Disambiguation' }
{ token: '{Book Disambiguation}', example: 'Disambiguation' }
];
const mediumTokens = [
@ -101,7 +101,7 @@ const otherTokens = [
];
const originalTokens = [
{ token: '{Original Title}', example: 'Artist.Name.Album.Name.2018.FLAC-EVOLVE' },
{ token: '{Original Title}', example: 'Author.Name.Book.Name.2018.FLAC-EVOLVE' },
{ token: '{Original Filename}', example: '01 - track name' }
];
@ -243,7 +243,7 @@ class NamingModal extends Component {
</FieldSet>
}
<FieldSet legend="Artist">
<FieldSet legend="Author">
<div className={styles.groups}>
{
artistTokens.map(({ token, example }) => {
@ -268,7 +268,7 @@ class NamingModal extends Component {
{
album &&
<div>
<FieldSet legend="Album">
<FieldSet legend="Book">
<div className={styles.groups}>
{
albumTokens.map(({ token, example }) => {

@ -3,16 +3,16 @@ using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.ArtistStats;
using NzbDrone.Core.AuthorStats;
using NzbDrone.Core.Books;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.ArtistStatsTests
{
[TestFixture]
public class ArtistStatisticsFixture : DbTest<ArtistStatisticsRepository, Author>
public class ArtistStatisticsFixture : DbTest<AuthorStatisticsRepository, Author>
{
private Author _artist;
private Book _album;
@ -33,8 +33,8 @@ namespace NzbDrone.Core.Test.ArtistStatsTests
Db.Insert(_album);
_trackFile = Builder<BookFile>.CreateNew()
.With(e => e.Artist = _artist)
.With(e => e.Album = _album)
.With(e => e.Author = _artist)
.With(e => e.Book = _album)
.With(e => e.BookId == _album.Id)
.With(e => e.Quality = new QualityModel(Quality.MP3_320))
.BuildNew();
@ -48,7 +48,7 @@ namespace NzbDrone.Core.Test.ArtistStatsTests
[Test]
public void should_get_stats_for_artist()
{
var stats = Subject.ArtistStatistics();
var stats = Subject.AuthorStatistics();
stats.Should().HaveCount(1);
}
@ -56,10 +56,10 @@ namespace NzbDrone.Core.Test.ArtistStatsTests
[Test]
public void should_not_include_unmonitored_track_in_track_count()
{
var stats = Subject.ArtistStatistics();
var stats = Subject.AuthorStatistics();
stats.Should().HaveCount(1);
stats.First().TrackCount.Should().Be(0);
stats.First().BookCount.Should().Be(0);
}
[Test]
@ -67,16 +67,16 @@ namespace NzbDrone.Core.Test.ArtistStatsTests
{
GivenTrackFile();
var stats = Subject.ArtistStatistics();
var stats = Subject.AuthorStatistics();
stats.Should().HaveCount(1);
stats.First().TrackCount.Should().Be(1);
stats.First().BookCount.Should().Be(1);
}
[Test]
public void should_have_size_on_disk_of_zero_when_no_track_file()
{
var stats = Subject.ArtistStatistics();
var stats = Subject.AuthorStatistics();
stats.Should().HaveCount(1);
stats.First().SizeOnDisk.Should().Be(0);
@ -87,7 +87,7 @@ namespace NzbDrone.Core.Test.ArtistStatsTests
{
GivenTrackFile();
var stats = Subject.ArtistStatistics();
var stats = Subject.AuthorStatistics();
stats.Should().HaveCount(1);
stats.First().SizeOnDisk.Should().Be(_trackFile.Size);

@ -1,8 +1,8 @@
using System.Data.SQLite;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books.Commands;
using NzbDrone.Core.Datastore.Converters;
using NzbDrone.Core.Music.Commands;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore.Converters
@ -21,7 +21,7 @@ namespace NzbDrone.Core.Test.Datastore.Converters
[Test]
public void should_return_json_string_when_saving_boolean_to_db()
{
var command = new RefreshArtistCommand();
var command = new RefreshAuthorCommand();
Subject.SetValue(_param, command);
_param.Value.Should().BeOfType<string>();
@ -37,9 +37,9 @@ namespace NzbDrone.Core.Test.Datastore.Converters
[Test]
public void should_return_command_when_getting_json_from_db()
{
var data = "{\"name\": \"RefreshArtist\"}";
var data = "{\"name\": \"RefreshAuthor\"}";
Subject.Parse(data).Should().BeOfType<RefreshArtistCommand>();
Subject.Parse(data).Should().BeOfType<RefreshAuthorCommand>();
}
[Test]

@ -3,8 +3,8 @@ using System.Linq;
using Dapper;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore

@ -3,7 +3,7 @@ using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Music;
using NzbDrone.Core.Books;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;

@ -3,9 +3,9 @@ using System.Linq;
using Dapper;
using FizzWare.NBuilder;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
@ -70,10 +70,10 @@ namespace NzbDrone.Core.Test.Datastore
Assert.IsNotEmpty(tracks);
foreach (var track in tracks)
{
Assert.IsFalse(track.Artist.IsLoaded);
Assert.IsNotNull(track.Artist.Value);
Assert.IsTrue(track.Artist.IsLoaded);
Assert.IsTrue(track.Artist.Value.Metadata.IsLoaded);
Assert.IsFalse(track.Author.IsLoaded);
Assert.IsNotNull(track.Author.Value);
Assert.IsTrue(track.Author.IsLoaded);
Assert.IsTrue(track.Author.Value.Metadata.IsLoaded);
}
}
@ -104,9 +104,9 @@ namespace NzbDrone.Core.Test.Datastore
Assert.IsNotEmpty(files);
foreach (var file in files)
{
Assert.IsTrue(file.Album.IsLoaded);
Assert.IsTrue(file.Artist.IsLoaded);
Assert.IsTrue(file.Artist.Value.Metadata.IsLoaded);
Assert.IsTrue(file.Book.IsLoaded);
Assert.IsTrue(file.Author.IsLoaded);
Assert.IsTrue(file.Author.Value.Metadata.IsLoaded);
}
}
@ -121,18 +121,18 @@ namespace NzbDrone.Core.Test.Datastore
.Join<Author, AuthorMetadata>((a, m) => a.AuthorMetadataId == m.Id),
(file, album, artist, metadata) =>
{
file.Album = album;
file.Artist = artist;
file.Artist.Value.Metadata = metadata;
file.Book = album;
file.Author = artist;
file.Author.Value.Metadata = metadata;
return file;
});
Assert.IsNotEmpty(files);
foreach (var file in files)
{
Assert.IsTrue(file.Album.IsLoaded);
Assert.IsTrue(file.Artist.IsLoaded);
Assert.IsTrue(file.Artist.Value.Metadata.IsLoaded);
Assert.IsTrue(file.Book.IsLoaded);
Assert.IsTrue(file.Author.IsLoaded);
Assert.IsTrue(file.Author.Value.Metadata.IsLoaded);
}
}
}

@ -2,9 +2,9 @@ using System.Collections.Generic;
using Dapper;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Datastore.Converters;
using NzbDrone.Core.Music;
namespace NzbDrone.Core.Test.Datastore
{

@ -4,8 +4,8 @@ using System.Linq;
using System.Linq.Expressions;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore
@ -177,7 +177,7 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void enum_as_int()
{
_subject = WhereMetadata(x => x.Status == ArtistStatusType.Continuing);
_subject = WhereMetadata(x => x.Status == AuthorStatusType.Continuing);
_subject.ToString().Should().Be($"(\"AuthorMetadata\".\"Status\" = @Clause1_P1)");
}
@ -185,7 +185,7 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void enum_in_list()
{
var allowed = new List<ArtistStatusType> { ArtistStatusType.Continuing, ArtistStatusType.Ended };
var allowed = new List<AuthorStatusType> { AuthorStatusType.Continuing, AuthorStatusType.Ended };
_subject = WhereMetadata(x => allowed.Contains(x.Status));
_subject.ToString().Should().Be($"(\"AuthorMetadata\".\"Status\" IN @Clause1_P1)");
@ -194,7 +194,7 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void enum_in_array()
{
var allowed = new ArtistStatusType[] { ArtistStatusType.Continuing, ArtistStatusType.Ended };
var allowed = new AuthorStatusType[] { AuthorStatusType.Continuing, AuthorStatusType.Ended };
_subject = WhereMetadata(x => allowed.Contains(x.Status));
_subject.ToString().Should().Be($"(\"AuthorMetadata\".\"Status\" IN @Clause1_P1)");

@ -4,12 +4,12 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.History;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
@ -25,7 +25,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private Author _artist;
private QualityModel _mp3;
private QualityModel _flac;
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
private List<History.History> _history;
private BookFile _firstFile;
@ -49,11 +49,11 @@ 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 RemoteAlbum
_remoteAlbum = new RemoteBook
{
Artist = _artist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = _mp3 },
Albums = singleAlbumList,
Author = _artist,
ParsedBookInfo = new ParsedBookInfo { Quality = _mp3 },
Books = singleAlbumList,
Release = Builder<ReleaseInfo>.CreateNew()
.Build()
};
@ -65,11 +65,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Returns(true);
Mocker.GetMock<IHistoryService>()
.Setup(s => s.GetByAlbum(It.IsAny<int>(), null))
.Setup(s => s.GetByBook(It.IsAny<int>(), null))
.Returns(_history);
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile> { _firstFile });
}
@ -104,7 +104,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_be_accepted_if_album_does_not_have_a_file()
{
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile> { });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();

@ -14,12 +14,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class BlockedIndexerSpecificationFixture : CoreTest<BlockedIndexerSpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteAlbum
_remoteAlbum = new RemoteBook
{
Release = new ReleaseInfo { IndexerId = 1 }
};

@ -5,8 +5,8 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -15,39 +15,39 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class DiscographySpecificationFixture : CoreTest<DiscographySpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
{
var artist = Builder<Author>.CreateNew().With(s => s.Id = 1234).Build();
_remoteAlbum = new RemoteAlbum
_remoteAlbum = new RemoteBook
{
ParsedAlbumInfo = new ParsedAlbumInfo
ParsedBookInfo = new ParsedBookInfo
{
Discography = true
},
Albums = Builder<Book>.CreateListOfSize(3)
Books = Builder<Book>.CreateListOfSize(3)
.All()
.With(e => e.ReleaseDate = DateTime.UtcNow.AddDays(-8))
.With(s => s.AuthorId = artist.Id)
.BuildList(),
Artist = artist,
Author = artist,
Release = new ReleaseInfo
{
Title = "Artist.Discography.1978.2005.FLAC-RlsGrp"
}
};
Mocker.GetMock<IAlbumService>().Setup(s => s.AlbumsBetweenDates(It.IsAny<DateTime>(), It.IsAny<DateTime>(), false))
Mocker.GetMock<IBookService>().Setup(s => s.BooksBetweenDates(It.IsAny<DateTime>(), It.IsAny<DateTime>(), false))
.Returns(new List<Book>());
}
[Test]
public void should_return_true_if_is_not_a_discography()
{
_remoteAlbum.ParsedAlbumInfo.Discography = false;
_remoteAlbum.Albums.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
_remoteAlbum.ParsedBookInfo.Discography = false;
_remoteAlbum.Books.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
@ -60,14 +60,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_false_if_one_album_has_not_released()
{
_remoteAlbum.Albums.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
_remoteAlbum.Books.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_an_album_does_not_have_an_release_date()
{
_remoteAlbum.Albums.Last().ReleaseDate = null;
_remoteAlbum.Books.Last().ReleaseDate = null;
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
}

@ -4,11 +4,11 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class DownloadDecisionMakerFixture : CoreTest<DownloadDecisionMaker>
{
private List<ReleaseInfo> _reports;
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
private Mock<IDecisionEngineSpecification> _pass1;
private Mock<IDecisionEngineSpecification> _pass2;
@ -45,26 +45,26 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_failDelayed1 = new Mock<IDecisionEngineSpecification>();
_pass1.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null)).Returns(Decision.Accept);
_pass2.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null)).Returns(Decision.Accept);
_pass3.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null)).Returns(Decision.Accept);
_pass1.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null)).Returns(Decision.Accept);
_pass2.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null)).Returns(Decision.Accept);
_pass3.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null)).Returns(Decision.Accept);
_fail1.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null)).Returns(Decision.Reject("fail1"));
_fail2.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null)).Returns(Decision.Reject("fail2"));
_fail3.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null)).Returns(Decision.Reject("fail3"));
_fail1.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null)).Returns(Decision.Reject("fail1"));
_fail2.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null)).Returns(Decision.Reject("fail2"));
_fail3.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null)).Returns(Decision.Reject("fail3"));
_failDelayed1.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null)).Returns(Decision.Reject("failDelayed1"));
_failDelayed1.Setup(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null)).Returns(Decision.Reject("failDelayed1"));
_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 RemoteAlbum
_remoteAlbum = new RemoteBook
{
Artist = new Author(),
Albums = new List<Book> { new Book() }
Author = new Author(),
Books = new List<Book> { new Book() }
};
Mocker.GetMock<IParsingService>()
.Setup(c => c.Map(It.IsAny<ParsedAlbumInfo>(), It.IsAny<SearchCriteriaBase>()))
.Setup(c => c.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()))
.Returns(_remoteAlbum);
}
@ -154,11 +154,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var results = Subject.GetRssDecision(_reports).ToList();
Mocker.GetMock<IParsingService>().Verify(c => c.Map(It.IsAny<ParsedAlbumInfo>(), It.IsAny<SearchCriteriaBase>()), Times.Never());
Mocker.GetMock<IParsingService>().Verify(c => c.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()), Times.Never());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
results.Should().BeEmpty();
}
@ -171,11 +171,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var results = Subject.GetRssDecision(_reports).ToList();
Mocker.GetMock<IParsingService>().Verify(c => c.Map(It.IsAny<ParsedAlbumInfo>(), It.IsAny<SearchCriteriaBase>()), Times.Never());
Mocker.GetMock<IParsingService>().Verify(c => c.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()), Times.Never());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
results.Should().BeEmpty();
}
@ -185,13 +185,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Artist = null;
_remoteAlbum.Author = null;
Subject.GetRssDecision(_reports);
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
}
[Test]
@ -199,7 +199,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1);
Mocker.GetMock<IParsingService>().Setup(c => c.Map(It.IsAny<ParsedAlbumInfo>(), It.IsAny<SearchCriteriaBase>()))
Mocker.GetMock<IParsingService>().Setup(c => c.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()))
.Throws<TestException>();
_reports = new List<ReleaseInfo>
@ -211,7 +211,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.GetRssDecision(_reports);
Mocker.GetMock<IParsingService>().Verify(c => c.Map(It.IsAny<ParsedAlbumInfo>(), It.IsAny<SearchCriteriaBase>()), Times.Exactly(_reports.Count));
Mocker.GetMock<IParsingService>().Verify(c => c.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()), Times.Exactly(_reports.Count));
ExceptionVerification.ExpectedErrors(3);
}
@ -221,7 +221,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Artist = null;
_remoteAlbum.Author = null;
var result = Subject.GetRssDecision(_reports);
@ -239,7 +239,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(v => v.Author, new LazyLoaded<Author>(artist))
.BuildList();
var criteria = new ArtistSearchCriteria { Albums = albums.Take(1).ToList() };
var criteria = new AuthorSearchCriteria { Books = albums.Take(1).ToList() };
var reports = albums.Select(v =>
new ReleaseInfo()
@ -248,14 +248,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
}).ToList();
Mocker.GetMock<IParsingService>()
.Setup(v => v.Map(It.IsAny<ParsedAlbumInfo>(), It.IsAny<SearchCriteriaBase>()))
.Returns<ParsedAlbumInfo, SearchCriteriaBase>((p, c) =>
new RemoteAlbum
.Setup(v => v.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()))
.Returns<ParsedBookInfo, SearchCriteriaBase>((p, c) =>
new RemoteBook
{
DownloadAllowed = true,
ParsedAlbumInfo = p,
Artist = artist,
Albums = albums.Where(v => v.Title == p.AlbumTitle).ToList()
ParsedBookInfo = p,
Author = artist,
Books = albums.Where(v => v.Title == p.BookTitle).ToList()
});
Mocker.SetConstant<IEnumerable<IDecisionEngineSpecification>>(new List<IDecisionEngineSpecification>
@ -275,13 +275,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Artist = null;
_remoteAlbum.Author = null;
var result = Subject.GetRssDecision(_reports);
result.Should().HaveCount(1);
result.First().RemoteAlbum.DownloadAllowed.Should().BeFalse();
result.First().RemoteBook.DownloadAllowed.Should().BeFalse();
}
[Test]
@ -289,13 +289,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1, _pass2, _pass3);
_remoteAlbum.Albums = new List<Book>();
_remoteAlbum.Books = new List<Book>();
var result = Subject.GetRssDecision(_reports);
result.Should().HaveCount(1);
result.First().RemoteAlbum.DownloadAllowed.Should().BeFalse();
result.First().RemoteBook.DownloadAllowed.Should().BeFalse();
}
[Test]
@ -303,7 +303,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenSpecifications(_pass1);
Mocker.GetMock<IParsingService>().Setup(c => c.Map(It.IsAny<ParsedAlbumInfo>(), It.IsAny<SearchCriteriaBase>()))
Mocker.GetMock<IParsingService>().Setup(c => c.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()))
.Throws<TestException>();
_reports = new List<ReleaseInfo>

@ -4,11 +4,11 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Indexers.TorrentRss;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Test.Common;
@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private Author _artist;
private Book _album1;
private Book _album2;
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
private IndexerDefinition _indexerDefinition;
[SetUp]
@ -30,10 +30,10 @@ 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 RemoteAlbum
_remoteAlbum = new RemoteBook
{
Artist = _artist,
Albums = new List<Book> { _album1 },
Author = _artist,
Books = new List<Book> { _album1 },
Release = new TorrentInfo
{
IndexerId = 1,
@ -68,7 +68,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_release_contains_multiple_albums()
{
_remoteAlbum.Albums.Add(_album2);
_remoteAlbum.Books.Add(_album2);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}

@ -4,12 +4,12 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.DecisionEngine.Specifications.RssSync;
using NzbDrone.Core.History;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -25,8 +25,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private HistorySpecification _upgradeHistory;
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private RemoteBook _parseResultMulti;
private RemoteBook _parseResultSingle;
private QualityModel _upgradableQuality;
private QualityModel _notupgradableQuality;
private Author _fakeArtist;
@ -54,18 +54,18 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
})
.Build();
_parseResultMulti = new RemoteAlbum
_parseResultMulti = new RemoteBook
{
Artist = _fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = doubleAlbumList
Author = _fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Books = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
_parseResultSingle = new RemoteBook
{
Artist = _fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = singleAlbumList
Author = _fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Books = singleAlbumList
};
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
@ -78,7 +78,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private void GivenMostRecentForAlbum(int bookId, string downloadId, QualityModel quality, DateTime date, HistoryEventType eventType)
{
Mocker.GetMock<IHistoryService>().Setup(s => s.MostRecentForAlbum(bookId))
Mocker.GetMock<IHistoryService>().Setup(s => s.MostRecentForBook(bookId))
.Returns(new History.History { DownloadId = downloadId, Quality = quality, Date = date, EventType = eventType });
}
@ -92,13 +92,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_it_is_a_search()
{
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, new AlbumSearchCriteria()).Accepted.Should().BeTrue();
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, new BookSearchCriteria()).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_latest_history_item_is_null()
{
Mocker.GetMock<IHistoryService>().Setup(s => s.MostRecentForAlbum(It.IsAny<int>())).Returns((History.History)null);
Mocker.GetMock<IHistoryService>().Setup(s => s.MostRecentForBook(It.IsAny<int>())).Returns((History.History)null);
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
}
@ -165,7 +165,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_not_be_upgradable_if_album_is_of_same_quality_as_existing()
{
_fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
_parseResultSingle.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
@ -177,7 +177,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_not_be_upgradable_if_cutoff_already_met()
{
_fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
_parseResultSingle.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
@ -205,7 +205,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
GivenCdhDisabled();
_fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
_parseResultSingle.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
GivenMostRecentForAlbum(FIRST_ALBUM_ID, "test", _upgradableQuality, DateTime.UtcNow.AddDays(-100), HistoryEventType.Grabbed);

@ -9,12 +9,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
public class MaximumSizeSpecificationFixture : CoreTest<MaximumSizeSpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteAlbum() { Release = new ReleaseInfo() };
_remoteAlbum = new RemoteBook() { Release = new ReleaseInfo() };
}
private void WithMaximumSize(int size)

@ -13,12 +13,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class MinimumAgeSpecificationFixture : CoreTest<MinimumAgeSpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteAlbum
_remoteAlbum = new RemoteBook
{
Release = new ReleaseInfo() { DownloadProtocol = DownloadProtocol.Usenet }
};

@ -2,9 +2,9 @@ using System.Collections.Generic;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications.RssSync;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -16,8 +16,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
private MonitoredAlbumSpecification _monitoredAlbumSpecification;
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private RemoteBook _parseResultMulti;
private RemoteBook _parseResultSingle;
private Author _fakeArtist;
private Book _firstAlbum;
private Book _secondAlbum;
@ -37,16 +37,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var singleAlbumList = new List<Book> { _firstAlbum };
var doubleAlbumList = new List<Book> { _firstAlbum, _secondAlbum };
_parseResultMulti = new RemoteAlbum
_parseResultMulti = new RemoteBook
{
Artist = _fakeArtist,
Albums = doubleAlbumList
Author = _fakeArtist,
Books = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
_parseResultSingle = new RemoteBook
{
Artist = _fakeArtist,
Albums = singleAlbumList
Author = _fakeArtist,
Books = singleAlbumList
};
}
@ -107,28 +107,28 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_true_for_single_album_search()
{
_fakeArtist.Monitored = false;
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new AlbumSearchCriteria()).Accepted.Should().BeTrue();
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria()).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_if_album_is_not_monitored_and_monitoredEpisodesOnly_flag_is_false()
{
WithFirstAlbumUnmonitored();
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new AlbumSearchCriteria { MonitoredEpisodesOnly = false }).Accepted.Should().BeTrue();
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria { MonitoredBooksOnly = false }).Accepted.Should().BeTrue();
}
[Test]
public void should_return_false_if_album_is_not_monitored_and_monitoredEpisodesOnly_flag_is_true()
{
WithFirstAlbumUnmonitored();
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new AlbumSearchCriteria { MonitoredEpisodesOnly = true }).Accepted.Should().BeFalse();
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria { MonitoredBooksOnly = true }).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_all_albums_are_not_monitored_for_discography_pack_release()
{
WithSecondAlbumUnmonitored();
_parseResultMulti.ParsedAlbumInfo = new ParsedAlbumInfo()
_parseResultMulti.ParsedBookInfo = new ParsedBookInfo()
{
Discography = true
};

@ -6,10 +6,10 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Delay;
using NzbDrone.Core.Profiles.Qualities;
@ -34,21 +34,21 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Build();
}
private RemoteAlbum GivenRemoteAlbum(List<Book> albums, QualityModel quality, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
private RemoteBook GivenRemoteAlbum(List<Book> albums, QualityModel quality, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
{
var remoteAlbum = new RemoteAlbum();
remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo();
remoteAlbum.ParsedAlbumInfo.Quality = quality;
var remoteAlbum = new RemoteBook();
remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
remoteAlbum.ParsedBookInfo.Quality = quality;
remoteAlbum.Albums = new List<Book>();
remoteAlbum.Albums.AddRange(albums);
remoteAlbum.Books = new List<Book>();
remoteAlbum.Books.AddRange(albums);
remoteAlbum.Release = new ReleaseInfo();
remoteAlbum.Release.PublishDate = DateTime.Now.AddDays(-age);
remoteAlbum.Release.Size = size;
remoteAlbum.Release.DownloadProtocol = downloadProtocol;
remoteAlbum.Artist = Builder<Author>.CreateNew()
remoteAlbum.Author = Builder<Author>.CreateNew()
.With(e => e.QualityProfile = new QualityProfile
{
Items = Qualities.QualityFixture.GetDefaultQualities()
@ -80,7 +80,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Revision.Version.Should().Be(2);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Version.Should().Be(2);
}
[Test]
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Quality.Should().Be(Quality.MP3_320);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Quality.Should().Be(Quality.MP3_320);
}
[Test]
@ -112,7 +112,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbumHdLargeYoung));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.Should().Be(remoteAlbumHdLargeYoung);
qualifiedReports.First().RemoteBook.Should().Be(remoteAlbumHdLargeYoung);
}
[Test]
@ -126,7 +126,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.Should().Be(remoteAlbum2);
qualifiedReports.First().RemoteBook.Should().Be(remoteAlbum2);
}
[Test]
@ -135,7 +135,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
remoteAlbum1.Albums = new List<Book>();
remoteAlbum1.Books = new List<Book>();
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
@ -157,7 +157,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.Release.DownloadProtocol.Should().Be(DownloadProtocol.Usenet);
qualifiedReports.First().RemoteBook.Release.DownloadProtocol.Should().Be(DownloadProtocol.Usenet);
}
[Test]
@ -173,7 +173,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.Release.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
qualifiedReports.First().RemoteBook.Release.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
}
[Test]
@ -182,14 +182,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.FLAC));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
remoteAlbum1.ParsedAlbumInfo.Discography = true;
remoteAlbum1.ParsedBookInfo.Discography = true;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Discography.Should().BeTrue();
qualifiedReports.First().RemoteBook.ParsedBookInfo.Discography.Should().BeTrue();
}
[Test]
@ -198,14 +198,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320));
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
remoteAlbum1.ParsedAlbumInfo.Discography = true;
remoteAlbum1.ParsedBookInfo.Discography = true;
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum1));
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Discography.Should().BeFalse();
qualifiedReports.First().RemoteBook.ParsedBookInfo.Discography.Should().BeFalse();
}
[Test]
@ -219,7 +219,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.Albums.Count.Should().Be(remoteAlbum2.Albums.Count);
qualifiedReports.First().RemoteBook.Books.Count.Should().Be(remoteAlbum2.Books.Count);
}
[Test]
@ -245,7 +245,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteAlbum.Release).Seeders.Should().Be(torrentInfo2.Seeders);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Seeders.Should().Be(torrentInfo2.Seeders);
}
[Test]
@ -272,7 +272,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteAlbum.Release).Peers.Should().Be(torrentInfo2.Peers);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Peers.Should().Be(torrentInfo2.Peers);
}
[Test]
@ -300,7 +300,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteAlbum.Release).Peers.Should().Be(torrentInfo2.Peers);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Peers.Should().Be(torrentInfo2.Peers);
}
[Test]
@ -329,7 +329,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteAlbum.Release).Should().Be(torrentInfo1);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Should().Be(torrentInfo1);
}
[Test]
@ -349,7 +349,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.Release.Should().Be(remoteAlbum1.Release);
qualifiedReports.First().RemoteBook.Release.Should().Be(remoteAlbum1.Release);
}
[Test]
@ -378,7 +378,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
((TorrentInfo)qualifiedReports.First().RemoteAlbum.Release).Should().Be(torrentInfo1);
((TorrentInfo)qualifiedReports.First().RemoteBook.Release).Should().Be(torrentInfo1);
}
[Test]
@ -392,7 +392,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Quality.Should().Be(Quality.MP3_320);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Quality.Should().Be(Quality.MP3_320);
}
[Test]
@ -409,7 +409,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.PreferredWordScore.Should().Be(10);
qualifiedReports.First().RemoteBook.PreferredWordScore.Should().Be(10);
}
[Test]
@ -430,7 +430,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Revision.Version.Should().Be(2);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Version.Should().Be(2);
}
[Test]
@ -451,7 +451,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Revision.Version.Should().Be(2);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Version.Should().Be(2);
}
[Test]
@ -472,9 +472,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
decisions.Add(new DownloadDecision(remoteAlbum2));
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Quality.Should().Be(Quality.FLAC);
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Revision.Version.Should().Be(1);
qualifiedReports.First().RemoteAlbum.PreferredWordScore.Should().Be(10);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Quality.Should().Be(Quality.FLAC);
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Version.Should().Be(1);
qualifiedReports.First().RemoteBook.PreferredWordScore.Should().Be(10);
}
}
}

@ -2,9 +2,9 @@
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Delay;
using NzbDrone.Core.Test.Framework;
@ -14,15 +14,15 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class ProtocolSpecificationFixture : CoreTest<ProtocolSpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
private DelayProfile _delayProfile;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteAlbum();
_remoteAlbum = new RemoteBook();
_remoteAlbum.Release = new ReleaseInfo();
_remoteAlbum.Artist = new Author();
_remoteAlbum.Author = new Author();
_delayProfile = new DelayProfile();

@ -1,8 +1,8 @@
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -14,7 +14,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class QualityAllowedByProfileSpecificationFixture : CoreTest<QualityAllowedByProfileSpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
public static object[] AllowedTestCases =
{
@ -36,10 +36,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id })
.Build();
_remoteAlbum = new RemoteAlbum
_remoteAlbum = new RemoteBook
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Author = fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
};
}
@ -47,8 +47,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestCaseSource(nameof(AllowedTestCases))]
public void should_allow_if_quality_is_defined_in_profile(Quality qualityType)
{
_remoteAlbum.ParsedAlbumInfo.Quality.Quality = qualityType;
_remoteAlbum.Artist.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
_remoteAlbum.ParsedBookInfo.Quality.Quality = qualityType;
_remoteAlbum.Author.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
@ -57,8 +57,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestCaseSource(nameof(DeniedTestCases))]
public void should_not_allow_if_quality_is_not_defined_in_profile(Quality qualityType)
{
_remoteAlbum.ParsedAlbumInfo.Quality.Quality = qualityType;
_remoteAlbum.Artist.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
_remoteAlbum.ParsedBookInfo.Quality.Quality = qualityType;
_remoteAlbum.Author.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.MP3_320, Quality.MP3_320, Quality.MP3_320);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}

@ -3,9 +3,9 @@ using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -19,7 +19,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
private Author _artist;
private Book _album;
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
private Author _otherArtist;
private Book _otherAlbum;
@ -55,10 +55,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_releaseInfo = Builder<ReleaseInfo>.CreateNew()
.Build();
_remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320) })
_remoteAlbum = 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) })
.With(r => r.PreferredWordScore = 0)
.Build();
}
@ -70,11 +70,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Returns(new List<Queue.Queue>());
}
private void GivenQueue(IEnumerable<RemoteAlbum> remoteAlbums, TrackedDownloadState trackedDownloadState = TrackedDownloadState.Downloading)
private void GivenQueue(IEnumerable<RemoteBook> remoteAlbums, TrackedDownloadState trackedDownloadState = TrackedDownloadState.Downloading)
{
var queue = remoteAlbums.Select(remoteAlbum => new Queue.Queue
{
RemoteAlbum = remoteAlbum,
RemoteBook = remoteAlbum,
TrackedDownloadState = trackedDownloadState
});
@ -93,13 +93,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_when_artist_doesnt_match()
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _otherArtist)
.With(r => r.Albums = new List<Book> { _album })
var remoteAlbum = 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<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
@ -108,17 +108,17 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = 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)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
@ -128,34 +128,34 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_artist.QualityProfile.Value.Cutoff = Quality.MP3_320.Id;
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = 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.AZW3)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_true_when_album_doesnt_match()
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _otherAlbum })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _otherAlbum })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
{
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
@ -164,34 +164,34 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_remoteAlbum.PreferredWordScore = 1;
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = 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)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
[Test]
public void should_return_false_when_qualities_are_the_same()
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = 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)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
@ -200,93 +200,93 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = 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)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_matching_multi_album_is_in_queue()
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album, _otherAlbum })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album, _otherAlbum })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
{
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_multi_album_has_one_album_in_queue()
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = 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)
})
.With(r => r.Release = _releaseInfo)
.Build();
_remoteAlbum.Albums.Add(_otherAlbum);
_remoteAlbum.Books.Add(_otherAlbum);
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_multi_part_album_is_already_in_queue()
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album, _otherAlbum })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = _artist)
.With(r => r.Books = new List<Book> { _album, _otherAlbum })
.With(r => r.ParsedBookInfo = new ParsedBookInfo
{
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.Build();
_remoteAlbum.Albums.Add(_otherAlbum);
_remoteAlbum.Books.Add(_otherAlbum);
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
[Test]
public void should_return_false_if_multi_part_album_has_two_albums_in_queue()
{
var remoteAlbums = Builder<RemoteAlbum>.CreateListOfSize(2)
var remoteAlbums = Builder<RemoteBook>.CreateListOfSize(2)
.All()
.With(r => r.Artist = _artist)
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
.With(r => r.Author = _artist)
.With(r => r.ParsedBookInfo = new ParsedBookInfo
{
Quality = new QualityModel(Quality.MP3_320)
})
.With(r => r.Release = _releaseInfo)
.TheFirst(1)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.Books = new List<Book> { _album })
.TheNext(1)
.With(r => r.Albums = new List<Book> { _otherAlbum })
.With(r => r.Books = new List<Book> { _otherAlbum })
.Build();
_remoteAlbum.Albums.Add(_otherAlbum);
_remoteAlbum.Books.Add(_otherAlbum);
GivenQueue(remoteAlbums);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
@ -297,17 +297,17 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
_artist.QualityProfile.Value.UpgradeAllowed = false;
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = 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.FLAC)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum });
GivenQueue(new List<RemoteBook> { remoteAlbum });
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeFalse();
}
@ -316,17 +316,17 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = _artist)
.With(r => r.Albums = new List<Book> { _album })
.With(r => r.ParsedAlbumInfo = new ParsedAlbumInfo
var remoteAlbum = 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)
})
.With(r => r.Release = _releaseInfo)
.Build();
GivenQueue(new List<RemoteAlbum> { remoteAlbum }, TrackedDownloadState.DownloadFailedPending);
GivenQueue(new List<RemoteBook> { remoteAlbum }, TrackedDownloadState.DownloadFailedPending);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}

@ -11,12 +11,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class RawDiskSpecificationFixture : CoreTest<RawDiskSpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteAlbum
_remoteAlbum = new RemoteBook
{
Release = new ReleaseInfo() { DownloadProtocol = DownloadProtocol.Torrent }
};

@ -2,8 +2,8 @@ using System.Collections.Generic;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Releases;
using NzbDrone.Core.Test.Framework;
@ -13,14 +13,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class ReleaseRestrictionsSpecificationFixture : CoreTest<ReleaseRestrictionsSpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteAlbum
_remoteAlbum = new RemoteBook
{
Artist = new Author
Author = new Author
{
Tags = new HashSet<int>()
},

@ -4,9 +4,9 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
@ -16,7 +16,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class RepackSpecificationFixture : CoreTest<RepackSpecification>
{
private ParsedAlbumInfo _parsedAlbumInfo;
private ParsedBookInfo _parsedAlbumInfo;
private List<Book> _albums;
private List<BookFile> _trackFiles;
@ -25,7 +25,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
Mocker.Resolve<UpgradableSpecification>();
_parsedAlbumInfo = Builder<ParsedAlbumInfo>.CreateNew()
_parsedAlbumInfo = Builder<ParsedBookInfo>.CreateNew()
.With(p => p.Quality = new QualityModel(Quality.FLAC,
new Revision(2, 0, false)))
.With(p => p.ReleaseGroup = "Readarr")
@ -41,16 +41,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.BuildList();
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
.Returns(_trackFiles);
}
[Test]
public void should_return_true_if_it_is_not_a_repack()
{
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(e => e.ParsedAlbumInfo = _parsedAlbumInfo)
.With(e => e.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
@ -63,14 +63,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_true_if_there_are_is_no_track_files()
{
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile>());
_parsedAlbumInfo.Quality.Revision.IsRepack = true;
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(e => e.ParsedAlbumInfo = _parsedAlbumInfo)
.With(e => e.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
@ -95,9 +95,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(e => e.ParsedAlbumInfo = _parsedAlbumInfo)
.With(e => e.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
@ -122,9 +122,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(e => e.ParsedAlbumInfo = _parsedAlbumInfo)
.With(e => e.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
@ -151,9 +151,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_trackFiles.First().ReleaseGroup = "NotReadarr";
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(e => e.ParsedAlbumInfo = _parsedAlbumInfo)
.With(e => e.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
@ -178,9 +178,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(e => e.ParsedAlbumInfo = _parsedAlbumInfo)
.With(e => e.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
@ -205,9 +205,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(e => e.ParsedAlbumInfo = _parsedAlbumInfo)
.With(e => e.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)
@ -234,9 +234,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
return c;
}).ToList();
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(e => e.ParsedAlbumInfo = _parsedAlbumInfo)
.With(e => e.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(e => e.ParsedBookInfo = _parsedAlbumInfo)
.With(e => e.Books = _albums)
.Build();
Subject.IsSatisfiedBy(remoteAlbum, null)

@ -13,12 +13,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public class RetentionSpecificationFixture : CoreTest<RetentionSpecification>
{
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
{
_remoteAlbum = new RemoteAlbum
_remoteAlbum = new RemoteBook
{
Release = new ReleaseInfo() { DownloadProtocol = DownloadProtocol.Usenet }
};

@ -5,13 +5,13 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.DecisionEngine.Specifications.RssSync;
using NzbDrone.Core.Download.Pending;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Delay;
using NzbDrone.Core.Profiles.Qualities;
@ -25,7 +25,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
{
private QualityProfile _profile;
private DelayProfile _delayProfile;
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
@ -41,8 +41,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.With(s => s.QualityProfile = _profile)
.Build();
_remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Artist = artist)
_remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(r => r.Author = artist)
.Build();
_profile.Items = new List<QualityProfileQualityItem>();
@ -52,14 +52,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
_profile.Cutoff = Quality.AZW3.Id;
_remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo();
_remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
_remoteAlbum.Release = new ReleaseInfo();
_remoteAlbum.Release.DownloadProtocol = DownloadProtocol.Usenet;
_remoteAlbum.Albums = Builder<Book>.CreateListOfSize(1).Build().ToList();
_remoteAlbum.Books = Builder<Book>.CreateListOfSize(1).Build().ToList();
Mocker.GetMock<IMediaFileService>()
.Setup(s => s.GetFilesByAlbum(It.IsAny<int>()))
.Setup(s => s.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile> { });
Mocker.GetMock<IDelayProfileService>()
@ -67,14 +67,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.Returns(_delayProfile);
Mocker.GetMock<IPendingReleaseService>()
.Setup(s => s.GetPendingRemoteAlbums(It.IsAny<int>()))
.Returns(new List<RemoteAlbum>());
.Setup(s => s.GetPendingRemoteBooks(It.IsAny<int>()))
.Returns(new List<RemoteBook>());
}
private void GivenExistingFile(QualityModel quality)
{
Mocker.GetMock<IMediaFileService>()
.Setup(s => s.GetFilesByAlbum(It.IsAny<int>()))
.Setup(s => s.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile>
{
new BookFile
@ -94,18 +94,18 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_true_when_user_invoked_search()
{
Subject.IsSatisfiedBy(new RemoteAlbum(), new AlbumSearchCriteria { UserInvokedSearch = true }).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(new RemoteBook(), new BookSearchCriteria { UserInvokedSearch = true }).Accepted.Should().BeTrue();
}
[Test]
public void should_be_false_when_system_invoked_search_and_release_is_younger_than_delay()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_delayProfile.UsenetDelay = 720;
Subject.IsSatisfiedBy(_remoteAlbum, new AlbumSearchCriteria()).Accepted.Should().BeFalse();
Subject.IsSatisfiedBy(_remoteAlbum, new BookSearchCriteria()).Accepted.Should().BeFalse();
}
[Test]
@ -119,7 +119,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_true_when_quality_is_last_allowed_in_profile()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
Subject.IsSatisfiedBy(_remoteAlbum, null).Accepted.Should().BeTrue();
}
@ -127,7 +127,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_true_when_release_is_older_than_delay()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow.AddHours(-10);
_delayProfile.UsenetDelay = 60;
@ -138,7 +138,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_false_when_release_is_younger_than_delay()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MOBI);
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
_delayProfile.UsenetDelay = 720;
@ -149,7 +149,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_true_when_release_is_a_proper_for_existing_album()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.MP3_320));
@ -167,7 +167,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_true_when_release_is_a_real_for_existing_album()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(real: 1));
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(real: 1));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.MP3_320));
@ -185,7 +185,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_be_false_when_release_is_proper_for_existing_album_of_different_quality()
{
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.AZW3, new Revision(version: 2));
_remoteAlbum.ParsedBookInfo.Quality = new QualityModel(Quality.AZW3, new Revision(version: 2));
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
GivenExistingFile(new QualityModel(Quality.PDF));

@ -5,11 +5,11 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.DecisionEngine.Specifications.RssSync;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -19,10 +19,10 @@ using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
{
[TestFixture]
public class DeletedTrackFileSpecificationFixture : CoreTest<DeletedTrackFileSpecification>
public class DeletedTrackFileSpecificationFixture : CoreTest<DeletedBookFileSpecification>
{
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private RemoteBook _parseResultMulti;
private RemoteBook _parseResultSingle;
private BookFile _firstFile;
private BookFile _secondFile;
@ -60,18 +60,18 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.With(c => c.Path = @"C:\Music\My.Artist".AsOsAgnostic())
.Build();
_parseResultMulti = new RemoteAlbum
_parseResultMulti = new RemoteBook
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = doubleAlbumList
Author = fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Books = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
_parseResultSingle = new RemoteBook
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = singleAlbumList
Author = fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Books = singleAlbumList
};
GivenUnmonitorDeletedTracks(true);
@ -87,7 +87,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
private void SetupMediaFile(List<BookFile> files)
{
Mocker.GetMock<IMediaFileService>()
.Setup(v => v.GetFilesByAlbum(It.IsAny<int>()))
.Setup(v => v.GetFilesByBook(It.IsAny<int>()))
.Returns(files);
}
@ -111,7 +111,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
[Test]
public void should_return_true_when_searching()
{
Subject.IsSatisfiedBy(_parseResultSingle, new ArtistSearchCriteria()).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_parseResultSingle, new AuthorSearchCriteria()).Accepted.Should().BeTrue();
}
[Test]

@ -4,12 +4,12 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.DecisionEngine.Specifications.RssSync;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -21,8 +21,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
public class ProperSpecificationFixture : CoreTest<ProperSpecification>
{
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private RemoteBook _parseResultMulti;
private RemoteBook _parseResultSingle;
private BookFile _firstFile;
private BookFile _secondFile;
@ -42,21 +42,21 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
.Build();
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile> { _firstFile, _secondFile });
_parseResultMulti = new RemoteAlbum
_parseResultMulti = new RemoteBook
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
Albums = doubleAlbumList
Author = fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
Books = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
_parseResultSingle = new RemoteBook
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
Albums = singleAlbumList
Author = fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
Books = singleAlbumList
};
}
@ -109,7 +109,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
WithFirstFileUpgradable();
_firstFile.DateAdded = DateTime.Today.AddDays(-30);
Subject.IsSatisfiedBy(_parseResultSingle, new AlbumSearchCriteria()).Accepted.Should().BeTrue();
Subject.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria()).Accepted.Should().BeTrue();
}
[Test]

@ -1,21 +1,21 @@
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications.Search;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
[TestFixture]
public class ArtistSpecificationFixture : TestBase<ArtistSpecification>
public class ArtistSpecificationFixture : TestBase<AuthorSpecification>
{
private Author _artist1;
private Author _artist2;
private RemoteAlbum _remoteAlbum = new RemoteAlbum();
private SearchCriteriaBase _searchCriteria = new AlbumSearchCriteria();
private RemoteBook _remoteAlbum = new RemoteBook();
private SearchCriteriaBase _searchCriteria = new BookSearchCriteria();
[SetUp]
public void Setup()
@ -23,13 +23,13 @@ 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.Artist = _artist1;
_remoteAlbum.Author = _artist1;
}
[Test]
public void should_return_false_if_artist_doesnt_match()
{
_searchCriteria.Artist = _artist2;
_searchCriteria.Author = _artist2;
Subject.IsSatisfiedBy(_remoteAlbum, _searchCriteria).Accepted.Should().BeFalse();
}
@ -37,7 +37,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
[Test]
public void should_return_true_when_artist_ids_match()
{
_searchCriteria.Artist = _artist1;
_searchCriteria.Author = _artist1;
Subject.IsSatisfiedBy(_remoteAlbum, _searchCriteria).Accepted.Should().BeTrue();
}

@ -2,11 +2,11 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Indexers.TorrentRss;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Test.Common;
@ -16,7 +16,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
public class TorrentSeedingSpecificationFixture : TestBase<TorrentSeedingSpecification>
{
private Author _artist;
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
private IndexerDefinition _indexerDefinition;
[SetUp]
@ -24,9 +24,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
{
_artist = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
_remoteAlbum = new RemoteAlbum
_remoteAlbum = new RemoteBook
{
Artist = _artist,
Author = _artist,
Release = new TorrentInfo
{
IndexerId = 1,

@ -5,9 +5,9 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -19,8 +19,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Ignore("Pending Readarr fixes")]
public class UpgradeDiskSpecificationFixture : CoreTest<UpgradeDiskSpecification>
{
private RemoteAlbum _parseResultMulti;
private RemoteAlbum _parseResultSingle;
private RemoteBook _parseResultMulti;
private RemoteBook _parseResultSingle;
private BookFile _firstFile;
private BookFile _secondFile;
@ -45,21 +45,21 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Build();
Mocker.GetMock<IMediaFileService>()
.Setup(c => c.GetFilesByAlbum(It.IsAny<int>()))
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile> { _firstFile, _secondFile });
_parseResultMulti = new RemoteAlbum
_parseResultMulti = new RemoteBook
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = doubleAlbumList
Author = fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Books = doubleAlbumList
};
_parseResultSingle = new RemoteAlbum
_parseResultSingle = new RemoteBook
{
Artist = fakeArtist,
ParsedAlbumInfo = new ParsedAlbumInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Albums = singleAlbumList
Author = fakeArtist,
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
Books = singleAlbumList
};
}
@ -76,7 +76,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_album_has_no_existing_file()
{
_parseResultSingle.Albums.First().BookFiles = new List<BookFile>();
_parseResultSingle.Books.First().BookFiles = new List<BookFile>();
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
@ -97,7 +97,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
public void should_return_true_if_single_album_doesnt_exist_on_disk()
{
_parseResultSingle.Albums = new List<Book>();
_parseResultSingle.Books = new List<Book>();
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
@ -115,7 +115,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
_firstFile.Quality = new QualityModel(Quality.MP3_320);
_secondFile.Quality = new QualityModel(Quality.MP3_320);
_parseResultSingle.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
}
@ -129,7 +129,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_be_true_if_some_tracks_are_upgradable_and_none_are_downgrades()
{
WithFirstFileUpgradable();
_parseResultSingle.ParsedAlbumInfo.Quality = _secondFile.Quality;
_parseResultSingle.ParsedBookInfo.Quality = _secondFile.Quality;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
@ -137,7 +137,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_be_false_if_some_tracks_are_upgradable_and_some_are_downgrades()
{
WithFirstFileUpgradable();
_parseResultSingle.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
}
}

@ -5,8 +5,8 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.DiskSpace;
using NzbDrone.Core.Music;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -52,8 +52,8 @@ namespace NzbDrone.Core.Test.DiskSpace
private void GivenArtist(params Author[] artist)
{
Mocker.GetMock<IArtistService>()
.Setup(v => v.GetAllArtists())
Mocker.GetMock<IAuthorService>()
.Setup(v => v.GetAllAuthors())
.Returns(artist.ToList());
}

@ -4,14 +4,14 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.History;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.MediaFiles.BookImport;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -38,7 +38,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(c => c.State = TrackedDownloadState.Downloading)
.With(c => c.DownloadItem = completed)
.With(c => c.RemoteAlbum = remoteAlbum)
.With(c => c.RemoteBook = remoteAlbum)
.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.Artist);
.Returns(remoteAlbum.Author);
}
private Book CreateAlbum(int id)
@ -66,18 +66,18 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
};
}
private RemoteAlbum BuildRemoteAlbum()
private RemoteBook BuildRemoteAlbum()
{
return new RemoteAlbum
return new RemoteBook
{
Artist = new Author(),
Albums = new List<Book> { CreateAlbum(1) }
Author = new Author(),
Books = new List<Book> { CreateAlbum(1) }
};
}
private void GivenABadlyNamedDownload()
{
_trackedDownload.RemoteAlbum.Artist = null;
_trackedDownload.RemoteBook.Author = null;
_trackedDownload.DownloadItem.DownloadId = "1234";
_trackedDownload.DownloadItem.Title = "Droned Pilot"; // Set a badly named download
Mocker.GetMock<IHistoryService>()
@ -90,30 +90,30 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetArtist("Droned S01E01"))
.Returns(BuildRemoteAlbum().Artist);
.Returns(BuildRemoteAlbum().Author);
}
private void GivenArtistMatch()
{
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetArtist(It.IsAny<string>()))
.Returns(_trackedDownload.RemoteAlbum.Artist);
.Returns(_trackedDownload.RemoteBook.Author);
}
[Test]
public void should_not_mark_as_imported_if_all_files_were_rejected()
{
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(
new ImportDecision<LocalTrack>(
new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }, new Rejection("Rejected!")), "Test Failure"),
new ImportDecision<LocalBook>(
new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }, new Rejection("Rejected!")), "Test Failure"),
new ImportResult(
new ImportDecision<LocalTrack>(
new LocalTrack { Path = @"C:\TestPath\Droned.S01E02.mkv".AsOsAgnostic() }, new Rejection("Rejected!")), "Test Failure")
new ImportDecision<LocalBook>(
new LocalBook { Path = @"C:\TestPath\Droned.S01E02.mkv".AsOsAgnostic() }, new Rejection("Rejected!")), "Test Failure")
});
Subject.Import(_trackedDownload);
@ -127,20 +127,20 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
[Test]
public void should_not_mark_as_imported_if_no_tracks_were_parsed()
{
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(
new ImportDecision<LocalTrack>(
new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }, new Rejection("Rejected!")), "Test Failure"),
new ImportDecision<LocalBook>(
new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }, new Rejection("Rejected!")), "Test Failure"),
new ImportResult(
new ImportDecision<LocalTrack>(
new LocalTrack { Path = @"C:\TestPath\Droned.S01E02.mkv".AsOsAgnostic() }, new Rejection("Rejected!")), "Test Failure")
new ImportDecision<LocalBook>(
new LocalBook { Path = @"C:\TestPath\Droned.S01E02.mkv".AsOsAgnostic() }, new Rejection("Rejected!")), "Test Failure")
});
_trackedDownload.RemoteAlbum.Albums.Clear();
_trackedDownload.RemoteBook.Books.Clear();
Subject.Import(_trackedDownload);
@ -150,12 +150,12 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
[Test]
public void should_not_mark_as_imported_if_all_files_were_skipped()
{
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure"),
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure")
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure"),
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure")
});
Subject.Import(_trackedDownload);
@ -168,17 +168,17 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
{
GivenArtistMatch();
_trackedDownload.RemoteAlbum.Albums = new List<Book>
_trackedDownload.RemoteBook.Books = new List<Book>
{
CreateAlbum(1)
};
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() })),
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure")
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() })),
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure")
});
Subject.Import(_trackedDownload);
@ -189,22 +189,22 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
[Test]
public void should_not_mark_as_imported_if_some_tracks_were_not_imported()
{
_trackedDownload.RemoteAlbum.Albums = new List<Book>
_trackedDownload.RemoteBook.Books = new List<Book>
{
CreateAlbum(1),
CreateAlbum(1),
CreateAlbum(1)
};
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() })),
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() })),
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure"),
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure"),
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure")
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() })),
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() })),
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure"),
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure"),
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }), "Test Failure")
});
var history = Builder<History.History>.CreateListOfSize(2)
@ -228,15 +228,15 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
{
var albums = Builder<Book>.CreateListOfSize(3).BuildList();
_trackedDownload.RemoteAlbum.Albums = albums;
_trackedDownload.RemoteBook.Books = albums;
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv" })),
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv" }), "Test Failure"),
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv" }), "Test Failure")
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv" })),
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv" }), "Test Failure"),
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv" }), "Test Failure")
});
var history = Builder<History.History>.CreateListOfSize(2)
@ -258,22 +258,22 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
[Test]
public void should_mark_as_imported_if_all_tracks_were_imported()
{
_trackedDownload.RemoteAlbum.Albums = new List<Book>
_trackedDownload.RemoteBook.Books = new List<Book>
{
CreateAlbum(1)
};
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(
new ImportDecision<LocalTrack>(
new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() })),
new ImportDecision<LocalBook>(
new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() })),
new ImportResult(
new ImportDecision<LocalTrack>(
new LocalTrack { Path = @"C:\TestPath\Droned.S01E02.mkv".AsOsAgnostic() }))
new ImportDecision<LocalBook>(
new LocalBook { Path = @"C:\TestPath\Droned.S01E02.mkv".AsOsAgnostic() }))
});
Subject.Import(_trackedDownload);
@ -286,19 +286,19 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
{
var albums = Builder<Book>.CreateListOfSize(2).BuildList();
_trackedDownload.RemoteAlbum.Albums = albums;
_trackedDownload.RemoteBook.Books = albums;
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(
new ImportDecision<LocalTrack>(
new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv", Album = albums[0] })),
new ImportDecision<LocalBook>(
new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv", Book = albums[0] })),
new ImportResult(
new ImportDecision<LocalTrack>(
new LocalTrack { Path = @"C:\TestPath\Droned.S01E02.mkv", Album = albums[1] }), "Test Failure")
new ImportDecision<LocalBook>(
new LocalBook { Path = @"C:\TestPath\Droned.S01E02.mkv", Book = albums[1] }), "Test Failure")
});
var history = Builder<History.History>.CreateListOfSize(2)
@ -322,11 +322,11 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
{
GivenABadlyNamedDownload();
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>
{
new ImportResult(new ImportDecision<LocalTrack>(new LocalTrack { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }))
new ImportResult(new ImportDecision<LocalBook>(new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv".AsOsAgnostic() }))
});
Subject.Import(_trackedDownload);
@ -344,8 +344,8 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
private void AssertImported()
{
Mocker.GetMock<IDownloadedTracksImportService>()
.Verify(v => v.ProcessPath(_trackedDownload.DownloadItem.OutputPath.FullPath, ImportMode.Auto, _trackedDownload.RemoteAlbum.Artist, _trackedDownload.DownloadItem), Times.Once());
Mocker.GetMock<IDownloadedBooksImportService>()
.Verify(v => v.ProcessPath(_trackedDownload.DownloadItem.OutputPath.FullPath, ImportMode.Auto, _trackedDownload.RemoteBook.Author, _trackedDownload.DownloadItem), Times.Once());
Mocker.GetMock<IEventAggregator>()
.Verify(v => v.PublishEvent(It.IsAny<DownloadCompletedEvent>()), Times.Once());

@ -4,10 +4,10 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.History;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -34,7 +34,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(c => c.State = TrackedDownloadState.Downloading)
.With(c => c.DownloadItem = completed)
.With(c => c.RemoteAlbum = remoteAlbum)
.With(c => c.RemoteBook = remoteAlbum)
.Build();
Mocker.GetMock<IDownloadClient>()
@ -51,15 +51,15 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetArtist("Drone.S01E01.HDTV"))
.Returns(remoteAlbum.Artist);
.Returns(remoteAlbum.Author);
}
private RemoteAlbum BuildRemoteAlbum()
private RemoteBook BuildRemoteAlbum()
{
return new RemoteAlbum
return new RemoteBook
{
Artist = new Author(),
Albums = new List<Book> { new Book { Id = 1 } }
Author = new Author(),
Books = new List<Book> { new Book { Id = 1 } }
};
}
@ -74,7 +74,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
{
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetArtist(It.IsAny<string>()))
.Returns(_trackedDownload.RemoteAlbum.Artist);
.Returns(_trackedDownload.RemoteBook.Author);
}
private void GivenABadlyNamedDownload()
@ -91,7 +91,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetArtist("Droned S01E01"))
.Returns(BuildRemoteAlbum().Artist);
.Returns(BuildRemoteAlbum().Author);
}
[TestCase(DownloadItemStatus.Downloading)]
@ -145,7 +145,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
public void should_not_process_if_the_download_cannot_be_tracked_using_the_source_title_as_it_was_initiated_externally()
{
GivenABadlyNamedDownload();
_trackedDownload.RemoteAlbum.Artist = null;
_trackedDownload.RemoteBook.Author = null;
Mocker.GetMock<IHistoryService>()
.Setup(s => s.MostRecentForDownloadId(It.Is<string>(i => i == "1234")));
@ -158,7 +158,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
[Test]
public void should_not_process_when_there_is_a_title_mismatch()
{
_trackedDownload.RemoteAlbum.Artist = null;
_trackedDownload.RemoteBook.Author = null;
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetArtist("Drone.S01E01.HDTV"))
.Returns((Author)null);

@ -4,13 +4,13 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.Clients;
using NzbDrone.Core.Download.Pending;
using NzbDrone.Core.Exceptions;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -37,20 +37,20 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
.Build();
}
private RemoteAlbum GetRemoteAlbum(List<Book> albums, QualityModel quality, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
private RemoteBook GetRemoteAlbum(List<Book> albums, QualityModel quality, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
{
var remoteAlbum = new RemoteAlbum();
remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo();
remoteAlbum.ParsedAlbumInfo.Quality = quality;
var remoteAlbum = new RemoteBook();
remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
remoteAlbum.ParsedBookInfo.Quality = quality;
remoteAlbum.Albums = new List<Book>();
remoteAlbum.Albums.AddRange(albums);
remoteAlbum.Books = new List<Book>();
remoteAlbum.Books.AddRange(albums);
remoteAlbum.Release = new ReleaseInfo();
remoteAlbum.Release.DownloadProtocol = downloadProtocol;
remoteAlbum.Release.PublishDate = DateTime.UtcNow;
remoteAlbum.Artist = Builder<Author>.CreateNew()
remoteAlbum.Author = Builder<Author>.CreateNew()
.With(e => e.QualityProfile = new QualityProfile { Items = Qualities.QualityFixture.GetDefaultQualities() })
.Build();
@ -67,7 +67,7 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
decisions.Add(new DownloadDecision(remoteAlbum));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteAlbum>()), Times.Once());
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Once());
}
[Test]
@ -81,7 +81,7 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
decisions.Add(new DownloadDecision(remoteAlbum));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteAlbum>()), Times.Once());
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Once());
}
[Test]
@ -100,7 +100,7 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
decisions.Add(new DownloadDecision(remoteAlbum2));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteAlbum>()), Times.Once());
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Once());
}
[Test]
@ -165,7 +165,7 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(remoteAlbum));
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.IsAny<RemoteAlbum>())).Throws(new Exception());
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.IsAny<RemoteBook>())).Throws(new Exception());
Subject.ProcessDecisions(decisions).Grabbed.Should().BeEmpty();
ExceptionVerification.ExpectedWarns(1);
}
@ -174,8 +174,8 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
public void should_return_an_empty_list_when_none_are_appproved()
{
var decisions = new List<DownloadDecision>();
decisions.Add(new DownloadDecision(new RemoteAlbum(), new Rejection("Failure!")));
decisions.Add(new DownloadDecision(new RemoteAlbum(), new Rejection("Failure!")));
decisions.Add(new DownloadDecision(new RemoteBook(), new Rejection("Failure!")));
decisions.Add(new DownloadDecision(new RemoteBook(), new Rejection("Failure!")));
Subject.GetQualifiedReports(decisions).Should().BeEmpty();
}
@ -190,7 +190,7 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
decisions.Add(new DownloadDecision(remoteAlbum, new Rejection("Failure!", RejectionType.Temporary)));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteAlbum>()), Times.Never());
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Never());
}
[Test]
@ -231,11 +231,11 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteAlbum));
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.IsAny<RemoteAlbum>()))
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.IsAny<RemoteBook>()))
.Throws(new DownloadClientUnavailableException("Download client failed"));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteAlbum>()), Times.Once());
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.IsAny<RemoteBook>()), Times.Once());
}
[Test]
@ -249,12 +249,12 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
decisions.Add(new DownloadDecision(remoteAlbum));
decisions.Add(new DownloadDecision(remoteAlbum2));
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.Is<RemoteAlbum>(r => r.Release.DownloadProtocol == DownloadProtocol.Usenet)))
Mocker.GetMock<IDownloadService>().Setup(s => s.DownloadReport(It.Is<RemoteBook>(r => r.Release.DownloadProtocol == DownloadProtocol.Usenet)))
.Throws(new DownloadClientUnavailableException("Download client failed"));
Subject.ProcessDecisions(decisions);
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.Is<RemoteAlbum>(r => r.Release.DownloadProtocol == DownloadProtocol.Usenet)), Times.Once());
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.Is<RemoteAlbum>(r => r.Release.DownloadProtocol == DownloadProtocol.Torrent)), Times.Once());
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.Is<RemoteBook>(r => r.Release.DownloadProtocol == DownloadProtocol.Usenet)), Times.Once());
Mocker.GetMock<IDownloadService>().Verify(v => v.DownloadReport(It.Is<RemoteBook>(r => r.Release.DownloadProtocol == DownloadProtocol.Torrent)), Times.Once());
}
[Test]
@ -267,7 +267,7 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
decisions.Add(new DownloadDecision(remoteAlbum));
Mocker.GetMock<IDownloadService>()
.Setup(s => s.DownloadReport(It.IsAny<RemoteAlbum>()))
.Setup(s => s.DownloadReport(It.IsAny<RemoteBook>()))
.Throws(new ReleaseUnavailableException(remoteAlbum.Release, "That 404 Error is not just a Quirk"));
var result = Subject.ProcessDecisions(decisions);

@ -87,7 +87,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
_magnetFilePath = Path.ChangeExtension(_filePath, extension);
}
protected override RemoteAlbum CreateRemoteAlbum()
protected override RemoteBook CreateRemoteAlbum()
{
var remoteAlbum = base.CreateRemoteAlbum();
var torrentInfo = new TorrentInfo();

@ -5,10 +5,10 @@ using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Http;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Download;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.RemotePathMappings;
@ -30,7 +30,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
.Returns(30);
Mocker.GetMock<IParsingService>()
.Setup(s => s.Map(It.IsAny<ParsedAlbumInfo>(), null))
.Setup(s => s.Map(It.IsAny<ParsedBookInfo>(), null))
.Returns(() => CreateRemoteAlbum());
Mocker.GetMock<IHttpClient>()
@ -42,19 +42,19 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
.Returns<string, OsPath>((h, r) => r);
}
protected virtual RemoteAlbum CreateRemoteAlbum()
protected virtual RemoteBook CreateRemoteAlbum()
{
var remoteAlbum = new RemoteAlbum();
var remoteAlbum = new RemoteBook();
remoteAlbum.Release = new ReleaseInfo();
remoteAlbum.Release.Title = _title;
remoteAlbum.Release.DownloadUrl = _downloadUrl;
remoteAlbum.Release.DownloadProtocol = Subject.Protocol;
remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo();
remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
remoteAlbum.Albums = new List<Book>();
remoteAlbum.Books = new List<Book>();
remoteAlbum.Artist = new Author();
remoteAlbum.Author = new Author();
return remoteAlbum;
}

@ -360,7 +360,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
.Callback(PrepareClientToReturnQueuedItem);
}
protected override RemoteAlbum CreateRemoteAlbum()
protected override RemoteBook CreateRemoteAlbum()
{
var album = base.CreateRemoteAlbum();

@ -33,7 +33,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
protected string _defaultDestination = "somepath";
protected OsPath _physicalPath = new OsPath("/mnt/sdb1/mydata");
protected RemoteAlbum _remoteAlbum;
protected RemoteBook _remoteAlbum;
protected Dictionary<string, object> _downloadStationConfigItems;

@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
private string _pneumaticFolder;
private string _strmFolder;
private string _nzbPath;
private RemoteAlbum _remoteAlbum;
private RemoteBook _remoteAlbum;
[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 RemoteAlbum();
_remoteAlbum = new RemoteBook();
_remoteAlbum.Release = new ReleaseInfo();
_remoteAlbum.Release.Title = _title;
_remoteAlbum.Release.DownloadUrl = _nzbUrl;
_remoteAlbum.ParsedAlbumInfo = new ParsedAlbumInfo();
_remoteAlbum.ParsedBookInfo = new ParsedBookInfo();
Subject.Definition = new DownloadClientDefinition();
Subject.Definition.Settings = new PneumaticSettings
@ -70,7 +70,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
public void should_throw_if_discography_download()
{
_remoteAlbum.Release.Title = "Alien Ant Farm - Discography";
_remoteAlbum.ParsedAlbumInfo.Discography = true;
_remoteAlbum.ParsedBookInfo.Discography = true;
Assert.Throws<NotSupportedException>(() => Subject.Download(_remoteAlbum));
}

@ -6,10 +6,10 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.Clients.Sabnzbd;
using NzbDrone.Core.Download.Clients.Sabnzbd.Responses;
using NzbDrone.Core.Music;
using NzbDrone.Core.RemotePathMappings;
using NzbDrone.Core.Validation;
using NzbDrone.Test.Common;
@ -354,7 +354,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests
.Returns(new SabnzbdAddResponse { Ids = new List<string> { "readarrtest" } });
var remoteAlbum = CreateRemoteAlbum();
remoteAlbum.Albums = Builder<Book>.CreateListOfSize(1)
remoteAlbum.Books = Builder<Book>.CreateListOfSize(1)
.All()
.With(e => e.ReleaseDate = DateTime.Today)
.Build()

@ -6,11 +6,11 @@ using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Http;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.Clients;
using NzbDrone.Core.Exceptions;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -19,7 +19,7 @@ namespace NzbDrone.Core.Test.Download
[TestFixture]
public class DownloadServiceFixture : CoreTest<DownloadService>
{
private RemoteAlbum _parseResult;
private RemoteBook _parseResult;
private List<IDownloadClient> _downloadClients;
[SetUp]
public void Setup()
@ -45,10 +45,10 @@ namespace NzbDrone.Core.Test.Download
.With(v => v.DownloadUrl = "http://test.site/download1.ext")
.Build();
_parseResult = Builder<RemoteAlbum>.CreateNew()
.With(c => c.Artist = Builder<Author>.CreateNew().Build())
_parseResult = Builder<RemoteBook>.CreateNew()
.With(c => c.Author = Builder<Author>.CreateNew().Build())
.With(c => c.Release = releaseInfo)
.With(c => c.Albums = episodes)
.With(c => c.Books = episodes)
.Build();
}
@ -80,42 +80,42 @@ namespace NzbDrone.Core.Test.Download
public void Download_report_should_publish_on_grab_event()
{
var mock = WithUsenetClient();
mock.Setup(s => s.Download(It.IsAny<RemoteAlbum>()));
mock.Setup(s => s.Download(It.IsAny<RemoteBook>()));
Subject.DownloadReport(_parseResult);
VerifyEventPublished<AlbumGrabbedEvent>();
VerifyEventPublished<BookGrabbedEvent>();
}
[Test]
public void Download_report_should_grab_using_client()
{
var mock = WithUsenetClient();
mock.Setup(s => s.Download(It.IsAny<RemoteAlbum>()));
mock.Setup(s => s.Download(It.IsAny<RemoteBook>()));
Subject.DownloadReport(_parseResult);
mock.Verify(s => s.Download(It.IsAny<RemoteAlbum>()), Times.Once());
mock.Verify(s => s.Download(It.IsAny<RemoteBook>()), Times.Once());
}
[Test]
public void Download_report_should_not_publish_on_failed_grab_event()
{
var mock = WithUsenetClient();
mock.Setup(s => s.Download(It.IsAny<RemoteAlbum>()))
mock.Setup(s => s.Download(It.IsAny<RemoteBook>()))
.Throws(new WebException());
Assert.Throws<WebException>(() => Subject.DownloadReport(_parseResult));
VerifyEventNotPublished<AlbumGrabbedEvent>();
VerifyEventNotPublished<BookGrabbedEvent>();
}
[Test]
public void Download_report_should_trigger_indexer_backoff_on_indexer_error()
{
var mock = WithUsenetClient();
mock.Setup(s => s.Download(It.IsAny<RemoteAlbum>()))
.Callback<RemoteAlbum>(v =>
mock.Setup(s => s.Download(It.IsAny<RemoteBook>()))
.Callback<RemoteBook>(v =>
{
throw new ReleaseDownloadException(v.Release, "Error", new WebException());
});
@ -134,8 +134,8 @@ namespace NzbDrone.Core.Test.Download
response.Headers["Retry-After"] = "300";
var mock = WithUsenetClient();
mock.Setup(s => s.Download(It.IsAny<RemoteAlbum>()))
.Callback<RemoteAlbum>(v =>
mock.Setup(s => s.Download(It.IsAny<RemoteBook>()))
.Callback<RemoteBook>(v =>
{
throw new ReleaseDownloadException(v.Release, "Error", new TooManyRequestsException(request, response));
});
@ -154,8 +154,8 @@ namespace NzbDrone.Core.Test.Download
response.Headers["Retry-After"] = DateTime.UtcNow.AddSeconds(300).ToString("r");
var mock = WithUsenetClient();
mock.Setup(s => s.Download(It.IsAny<RemoteAlbum>()))
.Callback<RemoteAlbum>(v =>
mock.Setup(s => s.Download(It.IsAny<RemoteBook>()))
.Callback<RemoteBook>(v =>
{
throw new ReleaseDownloadException(v.Release, "Error", new TooManyRequestsException(request, response));
});
@ -171,7 +171,7 @@ namespace NzbDrone.Core.Test.Download
public void Download_report_should_not_trigger_indexer_backoff_on_downloadclient_error()
{
var mock = WithUsenetClient();
mock.Setup(s => s.Download(It.IsAny<RemoteAlbum>()))
mock.Setup(s => s.Download(It.IsAny<RemoteBook>()))
.Throws(new DownloadClientException("Some Error"));
Assert.Throws<DownloadClientException>(() => Subject.DownloadReport(_parseResult));
@ -184,8 +184,8 @@ namespace NzbDrone.Core.Test.Download
public void Download_report_should_not_trigger_indexer_backoff_on_indexer_404_error()
{
var mock = WithUsenetClient();
mock.Setup(s => s.Download(It.IsAny<RemoteAlbum>()))
.Callback<RemoteAlbum>(v =>
mock.Setup(s => s.Download(It.IsAny<RemoteBook>()))
.Callback<RemoteBook>(v =>
{
throw new ReleaseUnavailableException(v.Release, "Error", new WebException());
});
@ -201,8 +201,8 @@ namespace NzbDrone.Core.Test.Download
{
Assert.Throws<DownloadClientUnavailableException>(() => Subject.DownloadReport(_parseResult));
Mocker.GetMock<IDownloadClient>().Verify(c => c.Download(It.IsAny<RemoteAlbum>()), Times.Never());
VerifyEventNotPublished<AlbumGrabbedEvent>();
Mocker.GetMock<IDownloadClient>().Verify(c => c.Download(It.IsAny<RemoteBook>()), Times.Never());
VerifyEventNotPublished<BookGrabbedEvent>();
}
[Test]
@ -224,8 +224,8 @@ namespace NzbDrone.Core.Test.Download
Subject.DownloadReport(_parseResult);
Mocker.GetMock<IDownloadClientStatusService>().Verify(c => c.GetBlockedProviders(), Times.Never());
mockUsenet.Verify(c => c.Download(It.IsAny<RemoteAlbum>()), Times.Once());
VerifyEventPublished<AlbumGrabbedEvent>();
mockUsenet.Verify(c => c.Download(It.IsAny<RemoteBook>()), Times.Once());
VerifyEventPublished<BookGrabbedEvent>();
}
[Test]
@ -236,8 +236,8 @@ namespace NzbDrone.Core.Test.Download
Subject.DownloadReport(_parseResult);
mockTorrent.Verify(c => c.Download(It.IsAny<RemoteAlbum>()), Times.Never());
mockUsenet.Verify(c => c.Download(It.IsAny<RemoteAlbum>()), Times.Once());
mockTorrent.Verify(c => c.Download(It.IsAny<RemoteBook>()), Times.Never());
mockUsenet.Verify(c => c.Download(It.IsAny<RemoteBook>()), Times.Once());
}
[Test]
@ -250,8 +250,8 @@ namespace NzbDrone.Core.Test.Download
Subject.DownloadReport(_parseResult);
mockTorrent.Verify(c => c.Download(It.IsAny<RemoteAlbum>()), Times.Once());
mockUsenet.Verify(c => c.Download(It.IsAny<RemoteAlbum>()), Times.Never());
mockTorrent.Verify(c => c.Download(It.IsAny<RemoteBook>()), Times.Once());
mockUsenet.Verify(c => c.Download(It.IsAny<RemoteBook>()), Times.Never());
}
}
}

@ -4,11 +4,11 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.History;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -32,16 +32,16 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
_grabHistory = Builder<History.History>.CreateListOfSize(2).BuildList();
var remoteAlbum = new RemoteAlbum
var remoteAlbum = new RemoteBook
{
Artist = new Author(),
Albums = new List<Book> { new Book { Id = 1 } }
Author = new Author(),
Books = new List<Book> { new Book { Id = 1 } }
};
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(c => c.State = TrackedDownloadState.DownloadFailedPending)
.With(c => c.DownloadItem = completed)
.With(c => c.RemoteAlbum = remoteAlbum)
.With(c => c.RemoteBook = remoteAlbum)
.Build();
Mocker.GetMock<IHistoryService>()

@ -4,11 +4,11 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.History;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -32,16 +32,16 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
_grabHistory = Builder<History.History>.CreateListOfSize(2).BuildList();
var remoteAlbum = new RemoteAlbum
var remoteAlbum = new RemoteBook
{
Artist = new Author(),
Albums = new List<Book> { new Book { Id = 1 } }
Author = new Author(),
Books = new List<Book> { new Book { Id = 1 } }
};
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(c => c.State = TrackedDownloadState.Downloading)
.With(c => c.DownloadItem = completed)
.With(c => c.RemoteAlbum = remoteAlbum)
.With(c => c.RemoteBook = remoteAlbum)
.Build();
Mocker.GetMock<IHistoryService>()

@ -5,10 +5,10 @@ using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download.Pending;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
@ -25,8 +25,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
private Book _album;
private QualityProfile _profile;
private ReleaseInfo _release;
private ParsedAlbumInfo _parsedAlbumInfo;
private RemoteAlbum _remoteAlbum;
private ParsedBookInfo _parsedAlbumInfo;
private RemoteBook _remoteAlbum;
private List<PendingRelease> _heldReleases;
[SetUp]
@ -54,13 +54,13 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
_release = Builder<ReleaseInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedAlbumInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_remoteAlbum = new RemoteAlbum();
_remoteAlbum.Albums = new List<Book> { _album };
_remoteAlbum.Artist = _artist;
_remoteAlbum.ParsedAlbumInfo = _parsedAlbumInfo;
_remoteAlbum = new RemoteBook();
_remoteAlbum.Books = new List<Book> { _album };
_remoteAlbum.Author = _artist;
_remoteAlbum.ParsedBookInfo = _parsedAlbumInfo;
_remoteAlbum.Release = _release;
_temporarilyRejected = new DownloadDecision(_remoteAlbum, new Rejection("Temp Rejected", RejectionType.Temporary));
@ -75,16 +75,16 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
.Setup(s => s.AllByAuthorId(It.IsAny<int>()))
.Returns<int>(i => _heldReleases.Where(v => v.AuthorId == i).ToList());
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtist(It.IsAny<int>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthor(It.IsAny<int>()))
.Returns(_artist);
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtists(It.IsAny<IEnumerable<int>>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
.Returns(new List<Author> { _artist });
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetAlbums(It.IsAny<ParsedAlbumInfo>(), _artist, null))
.Setup(s => s.GetAlbums(It.IsAny<ParsedBookInfo>(), _artist, null))
.Returns(new List<Book> { _album });
Mocker.GetMock<IPrioritizeDownloadDecision>()

@ -4,11 +4,11 @@ using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.Pending;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
@ -25,8 +25,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
private Book _album;
private QualityProfile _profile;
private ReleaseInfo _release;
private ParsedAlbumInfo _parsedAlbumInfo;
private RemoteAlbum _remoteAlbum;
private ParsedBookInfo _parsedAlbumInfo;
private RemoteBook _remoteAlbum;
private List<PendingRelease> _heldReleases;
[SetUp]
@ -54,13 +54,13 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
_release = Builder<ReleaseInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedAlbumInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_remoteAlbum = new RemoteAlbum();
_remoteAlbum.Albums = new List<Book> { _album };
_remoteAlbum.Artist = _artist;
_remoteAlbum.ParsedAlbumInfo = _parsedAlbumInfo;
_remoteAlbum = new RemoteBook();
_remoteAlbum.Books = new List<Book> { _album };
_remoteAlbum.Author = _artist;
_remoteAlbum.ParsedBookInfo = _parsedAlbumInfo;
_remoteAlbum.Release = _release;
_temporarilyRejected = new DownloadDecision(_remoteAlbum, new Rejection("Temp Rejected", RejectionType.Temporary));
@ -75,16 +75,16 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
.Setup(s => s.AllByAuthorId(It.IsAny<int>()))
.Returns<int>(i => _heldReleases.Where(v => v.AuthorId == i).ToList());
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtist(It.IsAny<int>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthor(It.IsAny<int>()))
.Returns(_artist);
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtists(It.IsAny<IEnumerable<int>>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
.Returns(new List<Author> { _artist });
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetAlbums(It.IsAny<ParsedAlbumInfo>(), _artist, null))
.Setup(s => s.GetAlbums(It.IsAny<ParsedBookInfo>(), _artist, null))
.Returns(new List<Book> { _album });
Mocker.GetMock<IPrioritizeDownloadDecision>()
@ -101,7 +101,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
.All()
.With(h => h.AuthorId = _artist.Id)
.With(h => h.Release = _release.JsonClone())
.With(h => h.ParsedAlbumInfo = parsedEpisodeInfo)
.With(h => h.ParsedBookInfo = parsedEpisodeInfo)
.Build();
_heldReleases.AddRange(heldReleases);
@ -112,7 +112,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
{
GivenHeldRelease(_parsedAlbumInfo.Quality);
Subject.Handle(new AlbumGrabbedEvent(_remoteAlbum));
Subject.Handle(new BookGrabbedEvent(_remoteAlbum));
VerifyDelete();
}
@ -122,7 +122,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
{
GivenHeldRelease(new QualityModel(Quality.MP3_320));
Subject.Handle(new AlbumGrabbedEvent(_remoteAlbum));
Subject.Handle(new BookGrabbedEvent(_remoteAlbum));
VerifyDelete();
}
@ -132,7 +132,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
{
GivenHeldRelease(new QualityModel(Quality.FLAC));
Subject.Handle(new AlbumGrabbedEvent(_remoteAlbum));
Subject.Handle(new BookGrabbedEvent(_remoteAlbum));
VerifyNoDelete();
}

@ -4,8 +4,8 @@ using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Crypto;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download.Pending;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -34,16 +34,16 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
.Setup(s => s.All())
.Returns(_pending);
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtist(It.IsAny<int>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthor(It.IsAny<int>()))
.Returns(new Author());
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtists(It.IsAny<IEnumerable<int>>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
.Returns(new List<Author> { new Author() });
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetAlbums(It.IsAny<ParsedAlbumInfo>(), It.IsAny<Author>(), null))
.Setup(s => s.GetAlbums(It.IsAny<ParsedBookInfo>(), It.IsAny<Author>(), null))
.Returns(new List<Book> { _album });
}
@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
_pending.Add(new PendingRelease
{
Id = id,
ParsedAlbumInfo = new ParsedAlbumInfo { AlbumTitle = album }
ParsedBookInfo = new ParsedBookInfo { BookTitle = album }
});
}
@ -61,7 +61,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
{
AddPending(id: 1, album: "Album");
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-album{1}", 1, _album.Id));
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 1, _album.Id));
Subject.RemovePendingQueueItems(queueId);
@ -76,7 +76,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
AddPending(id: 3, album: "Album 3");
AddPending(id: 4, album: "Album 3");
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-album{1}", 3, _album.Id));
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 3, _album.Id));
Subject.RemovePendingQueueItems(queueId);
@ -91,7 +91,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
AddPending(id: 3, album: "Album 2");
AddPending(id: 4, album: "Album 3");
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-album{1}", 1, _album.Id));
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 1, _album.Id));
Subject.RemovePendingQueueItems(queueId);

@ -4,12 +4,12 @@ using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.Pending;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
@ -26,8 +26,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
private Book _album;
private QualityProfile _profile;
private ReleaseInfo _release;
private ParsedAlbumInfo _parsedAlbumInfo;
private RemoteAlbum _remoteAlbum;
private ParsedBookInfo _parsedAlbumInfo;
private RemoteBook _remoteAlbum;
[SetUp]
public void Setup()
@ -54,13 +54,13 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
_release = Builder<ReleaseInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedAlbumInfo>.CreateNew().Build();
_parsedAlbumInfo = Builder<ParsedBookInfo>.CreateNew().Build();
_parsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320);
_remoteAlbum = new RemoteAlbum();
_remoteAlbum.Albums = new List<Book> { _album };
_remoteAlbum.Artist = _artist;
_remoteAlbum.ParsedAlbumInfo = _parsedAlbumInfo;
_remoteAlbum = new RemoteBook();
_remoteAlbum.Books = new List<Book> { _album };
_remoteAlbum.Author = _artist;
_remoteAlbum.ParsedBookInfo = _parsedAlbumInfo;
_remoteAlbum.Release = _release;
_temporarilyRejected = new DownloadDecision(_remoteAlbum, new Rejection("Temp Rejected", RejectionType.Temporary));
@ -69,16 +69,16 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
.Setup(s => s.All())
.Returns(new List<PendingRelease>());
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtist(It.IsAny<int>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthor(It.IsAny<int>()))
.Returns(_artist);
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtists(It.IsAny<IEnumerable<int>>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
.Returns(new List<Author> { _artist });
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetAlbums(It.IsAny<ParsedAlbumInfo>(), _artist, null))
.Setup(s => s.GetAlbums(It.IsAny<ParsedBookInfo>(), _artist, null))
.Returns(new List<Book> { _album });
Mocker.GetMock<IPrioritizeDownloadDecision>()

@ -2,11 +2,11 @@ using System.Collections.Generic;
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Download;
using NzbDrone.Core.IndexerSearch;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Download
@ -21,8 +21,8 @@ namespace NzbDrone.Core.Test.Download
.Setup(x => x.AutoRedownloadFailed)
.Returns(true);
Mocker.GetMock<IAlbumService>()
.Setup(x => x.GetAlbumsByArtist(It.IsAny<int>()))
Mocker.GetMock<IBookService>()
.Setup(x => x.GetBooksByAuthor(It.IsAny<int>()))
.Returns(Builder<Book>.CreateListOfSize(3).Build() as List<Book>);
}
@ -75,14 +75,14 @@ namespace NzbDrone.Core.Test.Download
Subject.Handle(failedEvent);
Mocker.GetMock<IManageCommandQueue>()
.Verify(x => x.Push(It.Is<AlbumSearchCommand>(c => c.BookIds.Count == 1 &&
.Verify(x => x.Push(It.Is<BookSearchCommand>(c => c.BookIds.Count == 1 &&
c.BookIds[0] == 2),
It.IsAny<CommandPriority>(),
It.IsAny<CommandTrigger>()),
Times.Once());
Mocker.GetMock<IManageCommandQueue>()
.Verify(x => x.Push(It.IsAny<ArtistSearchCommand>(), It.IsAny<CommandPriority>(), It.IsAny<CommandTrigger>()),
.Verify(x => x.Push(It.IsAny<AuthorSearchCommand>(), It.IsAny<CommandPriority>(), It.IsAny<CommandTrigger>()),
Times.Never());
}
@ -98,7 +98,7 @@ namespace NzbDrone.Core.Test.Download
Subject.Handle(failedEvent);
Mocker.GetMock<IManageCommandQueue>()
.Verify(x => x.Push(It.Is<AlbumSearchCommand>(c => c.BookIds.Count == 2 &&
.Verify(x => x.Push(It.Is<BookSearchCommand>(c => c.BookIds.Count == 2 &&
c.BookIds[0] == 2 &&
c.BookIds[1] == 3),
It.IsAny<CommandPriority>(),
@ -106,7 +106,7 @@ namespace NzbDrone.Core.Test.Download
Times.Once());
Mocker.GetMock<IManageCommandQueue>()
.Verify(x => x.Push(It.IsAny<ArtistSearchCommand>(), It.IsAny<CommandPriority>(), It.IsAny<CommandTrigger>()),
.Verify(x => x.Push(It.IsAny<AuthorSearchCommand>(), It.IsAny<CommandPriority>(), It.IsAny<CommandTrigger>()),
Times.Never());
}
@ -123,13 +123,13 @@ namespace NzbDrone.Core.Test.Download
Subject.Handle(failedEvent);
Mocker.GetMock<IManageCommandQueue>()
.Verify(x => x.Push(It.Is<ArtistSearchCommand>(c => c.AuthorId == failedEvent.AuthorId),
.Verify(x => x.Push(It.Is<AuthorSearchCommand>(c => c.AuthorId == failedEvent.AuthorId),
It.IsAny<CommandPriority>(),
It.IsAny<CommandTrigger>()),
Times.Once());
Mocker.GetMock<IManageCommandQueue>()
.Verify(x => x.Push(It.IsAny<AlbumSearchCommand>(), It.IsAny<CommandPriority>(), It.IsAny<CommandTrigger>()),
.Verify(x => x.Push(It.IsAny<BookSearchCommand>(), It.IsAny<CommandPriority>(), It.IsAny<CommandTrigger>()),
Times.Never());
}
}

@ -2,9 +2,9 @@
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.History;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -22,12 +22,12 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
_albums = new List<Book>();
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(r => r.Albums = _albums)
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(r => r.Books = _albums)
.Build();
_trackedDownload = Builder<TrackedDownload>.CreateNew()
.With(t => t.RemoteAlbum = remoteAlbum)
.With(t => t.RemoteBook = remoteAlbum)
.Build();
_historyItems = new List<History.History>();

@ -3,12 +3,12 @@ using System.Linq;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Books.Events;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.History;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Music.Events;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -39,19 +39,19 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenDownloadHistory();
var remoteAlbum = new RemoteAlbum
var remoteAlbum = new RemoteBook
{
Artist = new Author() { Id = 5 },
Albums = new List<Book> { new Book { Id = 4 } },
ParsedAlbumInfo = new ParsedAlbumInfo()
Author = new Author() { Id = 5 },
Books = new List<Book> { new Book { Id = 4 } },
ParsedBookInfo = new ParsedBookInfo()
{
AlbumTitle = "Audio Album",
ArtistName = "Audio Artist"
BookTitle = "Audio Album",
AuthorName = "Audio Artist"
}
};
Mocker.GetMock<IParsingService>()
.Setup(s => s.Map(It.Is<ParsedAlbumInfo>(i => i.AlbumTitle == "Audio Album" && i.ArtistName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
.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);
var client = new DownloadClientDefinition()
@ -69,10 +69,10 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
var trackedDownload = Subject.TrackDownload(client, item);
trackedDownload.Should().NotBeNull();
trackedDownload.RemoteAlbum.Should().NotBeNull();
trackedDownload.RemoteAlbum.Artist.Should().NotBeNull();
trackedDownload.RemoteAlbum.Artist.Id.Should().Be(5);
trackedDownload.RemoteAlbum.Albums.First().Id.Should().Be(4);
trackedDownload.RemoteBook.Should().NotBeNull();
trackedDownload.RemoteBook.Author.Should().NotBeNull();
trackedDownload.RemoteBook.Author.Id.Should().Be(5);
trackedDownload.RemoteBook.Books.First().Id.Should().Be(4);
}
[Test]
@ -80,19 +80,19 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenDownloadHistory();
var remoteAlbum = new RemoteAlbum
var remoteAlbum = new RemoteBook
{
Artist = new Author() { Id = 5 },
Albums = new List<Book> { new Book { Id = 4 } },
ParsedAlbumInfo = new ParsedAlbumInfo()
Author = new Author() { Id = 5 },
Books = new List<Book> { new Book { Id = 4 } },
ParsedBookInfo = new ParsedBookInfo()
{
AlbumTitle = "Audio Album",
ArtistName = "Audio Artist"
BookTitle = "Audio Album",
AuthorName = "Audio Artist"
}
};
Mocker.GetMock<IParsingService>()
.Setup(s => s.Map(It.Is<ParsedAlbumInfo>(i => i.AlbumTitle == "Audio Album" && i.ArtistName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
.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);
var client = new DownloadClientDefinition()
@ -113,16 +113,16 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
// simulate deletion - album no longer maps
Mocker.GetMock<IParsingService>()
.Setup(s => s.Map(It.Is<ParsedAlbumInfo>(i => i.AlbumTitle == "Audio Album" && i.ArtistName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
.Returns(default(RemoteAlbum));
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Album" && i.AuthorName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
.Returns(default(RemoteBook));
// handle deletion event
Subject.Handle(new AlbumDeletedEvent(remoteAlbum.Albums.First(), false, false));
Subject.Handle(new BookDeletedEvent(remoteAlbum.Books.First(), false, false));
// verify download has null remote album
var trackedDownloads = Subject.GetTrackedDownloads();
trackedDownloads.Should().HaveCount(1);
trackedDownloads.First().RemoteAlbum.Should().BeNull();
trackedDownloads.First().RemoteBook.Should().BeNull();
}
}
}

@ -6,11 +6,11 @@ using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Extras.Metadata;
using NzbDrone.Core.Extras.Metadata.Files;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -33,8 +33,8 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
_metadata = Builder<MetadataFile>.CreateListOfSize(1)
.Build().ToList();
Mocker.GetMock<IArtistService>()
.Setup(c => c.GetAllArtists())
Mocker.GetMock<IAuthorService>()
.Setup(c => c.GetAllAuthors())
.Returns(_artist);
Mocker.GetMock<IMetadataFileService>()
@ -73,7 +73,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
Subject.Clean();
Mocker.GetMock<IConfigService>().VerifySet(c => c.CleanupMetadataImages = true, Times.Never());
Mocker.GetMock<IArtistService>().Verify(c => c.GetAllArtists(), Times.Never());
Mocker.GetMock<IAuthorService>().Verify(c => c.GetAllAuthors(), Times.Never());
AssertImageWasNotRemoved();
}

@ -166,7 +166,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
public void should_return_ok_on_track_imported_event()
{
GivenFolderExists(_downloadRootPath);
var importEvent = new TrackImportedEvent(new LocalTrack(), new BookFile(), new List<BookFile>(), true, new DownloadClientItem());
var importEvent = new TrackImportedEvent(new LocalBook(), new BookFile(), new List<BookFile>(), true, new DownloadClientItem());
Subject.Check(importEvent).ShouldBeOk();
}
@ -174,7 +174,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
[Test]
public void should_return_permissions_error_on_track_import_failed_event_if_file_exists()
{
var localTrack = new LocalTrack
var localTrack = new LocalBook
{
Path = Path.Combine(_downloadItemPath, "file.mp3")
};

@ -4,9 +4,9 @@ using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.HealthCheck.Checks;
using NzbDrone.Core.ImportLists;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.HealthCheck.Checks
@ -24,8 +24,8 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
.Build()
.ToList();
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetAllArtists())
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAllAuthors())
.Returns(artist);
Mocker.GetMock<IImportListFactory>()
@ -44,8 +44,8 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
[Test]
public void should_not_return_error_when_no_artist()
{
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetAllArtists())
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAllAuthors())
.Returns(new List<Author>());
Mocker.GetMock<IImportListFactory>()

@ -4,11 +4,11 @@ using System.Linq;
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download;
using NzbDrone.Core.History;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -44,13 +44,13 @@ namespace NzbDrone.Core.Test.HistoryTests
var artist = Builder<Author>.CreateNew().Build();
var trackFile = Builder<BookFile>.CreateNew()
.With(f => f.SceneName = null)
.With(f => f.Artist = artist)
.With(f => f.Author = artist)
.Build();
var localTrack = new LocalTrack
var localTrack = new LocalBook
{
Artist = artist,
Album = new Book(),
Author = artist,
Book = new Book(),
Path = @"C:\Test\Unsorted\Artist.01.Hymn.mp3"
};

@ -18,7 +18,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var pendingRelease = Builder<PendingRelease>.CreateNew()
.With(h => h.Reason = PendingReleaseReason.DownloadClientUnavailable)
.With(h => h.Added = DateTime.UtcNow.AddDays(-21))
.With(h => h.ParsedAlbumInfo = new ParsedAlbumInfo())
.With(h => h.ParsedBookInfo = new ParsedBookInfo())
.With(h => h.Release = new ReleaseInfo())
.BuildNew();
@ -33,7 +33,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var pendingRelease = Builder<PendingRelease>.CreateNew()
.With(h => h.Reason = PendingReleaseReason.Fallback)
.With(h => h.Added = DateTime.UtcNow.AddDays(-21))
.With(h => h.ParsedAlbumInfo = new ParsedAlbumInfo())
.With(h => h.ParsedBookInfo = new ParsedBookInfo())
.With(h => h.Release = new ReleaseInfo())
.BuildNew();
@ -48,7 +48,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var pendingRelease = Builder<PendingRelease>.CreateNew()
.With(h => h.Reason = PendingReleaseReason.Delay)
.With(h => h.Added = DateTime.UtcNow.AddDays(-21))
.With(h => h.ParsedAlbumInfo = new ParsedAlbumInfo())
.With(h => h.ParsedBookInfo = new ParsedBookInfo())
.With(h => h.Release = new ReleaseInfo())
.BuildNew();

@ -128,7 +128,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.TrackMetadata)
.With(m => m.TrackFileId = 1)
.With(m => m.BookFileId = 1)
.BuildListOfNew();
Db.InsertMany(files);
@ -156,7 +156,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var files = Builder<MetadataFile>.CreateListOfSize(2)
.All()
.With(m => m.Type = MetadataType.TrackMetadata)
.With(m => m.TrackFileId = 1)
.With(m => m.BookFileId = 1)
.With(m => m.Consumer = "XbmcMetadata")
.BuildListOfNew();

@ -3,8 +3,8 @@ using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Blacklisting;
using NzbDrone.Core.Books;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;

@ -2,16 +2,16 @@ using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
[TestFixture]
public class CleanupOrphanedTrackFilesFixture : DbTest<CleanupOrphanedBookFiles, BookFile>
public class CleanupOrphanedBookFilesFixture : DbTest<CleanupOrphanedBookFiles, BookFile>
{
[Test]
public void should_unlink_orphaned_track_files()

@ -1,14 +1,14 @@
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
[TestFixture]
public class CleanupOrphanedAlbumsFixture : DbTest<CleanupOrphanedBooks, Book>
public class CleanupOrphanedBooksFixture : DbTest<CleanupOrphanedBooks, Book>
{
[Test]
public void should_delete_orphaned_albums()

@ -1,8 +1,8 @@
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;

@ -1,11 +1,11 @@
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Extras.Metadata;
using NzbDrone.Core.Extras.Metadata.Files;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
@ -18,7 +18,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
public void should_delete_metadata_files_that_dont_have_a_coresponding_artist()
{
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.TrackFileId = null)
.With(m => m.BookFileId = null)
.BuildNew();
Db.Insert(metadataFile);
@ -36,7 +36,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.AuthorId = artist.Id)
.With(m => m.TrackFileId = null)
.With(m => m.BookFileId = null)
.BuildNew();
Db.Insert(metadataFile);
@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.AuthorId = artist.Id)
.With(m => m.BookId = null)
.With(m => m.TrackFileId = null)
.With(m => m.BookFileId = null)
.BuildNew();
Db.Insert(metadataFile);
@ -79,7 +79,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.AuthorId = artist.Id)
.With(m => m.BookId = album.Id)
.With(m => m.TrackFileId = null)
.With(m => m.BookFileId = null)
.BuildNew();
Db.Insert(metadataFile);
@ -102,7 +102,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.AuthorId = artist.Id)
.With(m => m.BookId = album.Id)
.With(m => m.TrackFileId = 10)
.With(m => m.BookFileId = 10)
.BuildNew();
Db.Insert(metadataFile);
@ -130,7 +130,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var metadataFile = Builder<MetadataFile>.CreateNew()
.With(m => m.AuthorId = artist.Id)
.With(m => m.BookId = album.Id)
.With(m => m.TrackFileId = trackFile.Id)
.With(m => m.BookFileId = trackFile.Id)
.BuildNew();
Db.Insert(metadataFile);
@ -150,7 +150,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
.With(m => m.AuthorId = artist.Id)
.With(m => m.Type = MetadataType.AlbumMetadata)
.With(m => m.BookId = 0)
.With(m => m.TrackFileId = null)
.With(m => m.BookFileId = null)
.BuildNew();
Db.Insert(metadataFile);
@ -170,7 +170,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
.With(m => m.AuthorId = artist.Id)
.With(m => m.Type = MetadataType.AlbumImage)
.With(m => m.BookId = 0)
.With(m => m.TrackFileId = null)
.With(m => m.BookFileId = null)
.BuildNew();
Db.Insert(metadataFile);
@ -189,7 +189,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.TrackFileId = 0)
.With(m => m.BookFileId = 0)
.BuildNew();
Db.Insert(metadataFile);

@ -1,9 +1,9 @@
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download.Pending;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -16,7 +16,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
public void should_delete_orphaned_pending_items()
{
var pendingRelease = Builder<PendingRelease>.CreateNew()
.With(h => h.ParsedAlbumInfo = new ParsedAlbumInfo())
.With(h => h.ParsedBookInfo = new ParsedBookInfo())
.With(h => h.Release = new ReleaseInfo())
.BuildNew();
@ -34,7 +34,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
var pendingRelease = Builder<PendingRelease>.CreateNew()
.With(h => h.AuthorId = artist.Id)
.With(h => h.ParsedAlbumInfo = new ParsedAlbumInfo())
.With(h => h.ParsedBookInfo = new ParsedBookInfo())
.With(h => h.Release = new ReleaseInfo())
.BuildNew();

@ -1,14 +1,14 @@
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
[TestFixture]
public class UpdateCleanTitleForArtistFixture : CoreTest<UpdateCleanTitleForArtist>
public class UpdateCleanTitleForAuthorFixture : CoreTest<UpdateCleanTitleForAuthor>
{
[Test]
public void should_update_clean_title()
@ -18,13 +18,13 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
.With(s => s.CleanName = "unclean")
.Build();
Mocker.GetMock<IArtistRepository>()
Mocker.GetMock<IAuthorRepository>()
.Setup(s => s.All())
.Returns(new[] { artist });
Subject.Clean();
Mocker.GetMock<IArtistRepository>()
Mocker.GetMock<IAuthorRepository>()
.Verify(v => v.Update(It.Is<Author>(s => s.CleanName == "fullname")), Times.Once());
}
@ -36,13 +36,13 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
.With(s => s.CleanName = "fullname")
.Build();
Mocker.GetMock<IArtistRepository>()
Mocker.GetMock<IAuthorRepository>()
.Setup(s => s.All())
.Returns(new[] { artist });
Subject.Clean();
Mocker.GetMock<IArtistRepository>()
Mocker.GetMock<IAuthorRepository>()
.Verify(v => v.Update(It.Is<Author>(s => s.CleanName == "fullname")), Times.Never());
}
}

@ -3,10 +3,10 @@ using System.Linq;
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.ImportLists;
using NzbDrone.Core.ImportLists.Exclusions;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -21,7 +21,7 @@ namespace NzbDrone.Core.Test.ImportListTests
{
var importListItem1 = new ImportListItemInfo
{
Artist = "Linkin Park"
Author = "Linkin Park"
};
_importListReports = new List<ImportListItemInfo> { importListItem1 };
@ -59,18 +59,18 @@ namespace NzbDrone.Core.Test.ImportListTests
.Setup(v => v.All())
.Returns(new List<ImportListExclusion>());
Mocker.GetMock<IAddAlbumService>()
.Setup(v => v.AddAlbums(It.IsAny<List<Book>>(), false))
Mocker.GetMock<IAddBookService>()
.Setup(v => v.AddBooks(It.IsAny<List<Book>>(), false))
.Returns<List<Book>, bool>((x, y) => x);
Mocker.GetMock<IAddArtistService>()
.Setup(v => v.AddArtists(It.IsAny<List<Author>>(), false))
Mocker.GetMock<IAddAuthorService>()
.Setup(v => v.AddAuthors(It.IsAny<List<Author>>(), false))
.Returns<List<Author>, bool>((x, y) => x);
}
private void WithAlbum()
{
_importListReports.First().Album = "Meteora";
_importListReports.First().Book = "Meteora";
}
private void WithAuthorId()
@ -85,14 +85,14 @@ namespace NzbDrone.Core.Test.ImportListTests
private void WithExistingArtist()
{
Mocker.GetMock<IArtistService>()
Mocker.GetMock<IAuthorService>()
.Setup(v => v.FindById(_importListReports.First().ArtistMusicBrainzId))
.Returns(new Author { ForeignAuthorId = _importListReports.First().ArtistMusicBrainzId });
}
private void WithExistingAlbum()
{
Mocker.GetMock<IAlbumService>()
Mocker.GetMock<IBookService>()
.Setup(v => v.FindById(_importListReports.First().AlbumMusicBrainzId))
.Returns(new Book { ForeignBookId = _importListReports.First().AlbumMusicBrainzId });
}
@ -193,8 +193,8 @@ namespace NzbDrone.Core.Test.ImportListTests
Subject.Execute(new ImportListSyncCommand());
Mocker.GetMock<IAddArtistService>()
.Verify(v => v.AddArtists(It.Is<List<Author>>(t => t.Count == 0), false));
Mocker.GetMock<IAddAuthorService>()
.Verify(v => v.AddAuthors(It.Is<List<Author>>(t => t.Count == 0), false));
}
[Test]
@ -205,8 +205,8 @@ namespace NzbDrone.Core.Test.ImportListTests
Subject.Execute(new ImportListSyncCommand());
Mocker.GetMock<IAddArtistService>()
.Verify(v => v.AddArtists(It.Is<List<Author>>(t => t.Count == 0), false));
Mocker.GetMock<IAddAuthorService>()
.Verify(v => v.AddAuthors(It.Is<List<Author>>(t => t.Count == 0), false));
}
[Test]
@ -217,8 +217,8 @@ namespace NzbDrone.Core.Test.ImportListTests
Subject.Execute(new ImportListSyncCommand());
Mocker.GetMock<IAddAlbumService>()
.Verify(v => v.AddAlbums(It.Is<List<Book>>(t => t.Count == 1), false));
Mocker.GetMock<IAddBookService>()
.Verify(v => v.AddBooks(It.Is<List<Book>>(t => t.Count == 1), false));
}
[TestCase(ImportListMonitorType.None, false)]
@ -231,8 +231,8 @@ namespace NzbDrone.Core.Test.ImportListTests
Subject.Execute(new ImportListSyncCommand());
Mocker.GetMock<IAddArtistService>()
.Verify(v => v.AddArtists(It.Is<List<Author>>(t => t.Count == 1 && t.First().Monitored == expectedArtistMonitored), false));
Mocker.GetMock<IAddAuthorService>()
.Verify(v => v.AddAuthors(It.Is<List<Author>>(t => t.Count == 1 && t.First().Monitored == expectedArtistMonitored), false));
}
[TestCase(ImportListMonitorType.None, false)]
@ -245,8 +245,8 @@ namespace NzbDrone.Core.Test.ImportListTests
Subject.Execute(new ImportListSyncCommand());
Mocker.GetMock<IAddAlbumService>()
.Verify(v => v.AddAlbums(It.Is<List<Book>>(t => t.Count == 1 && t.First().Monitored == expectedAlbumMonitored), false));
Mocker.GetMock<IAddBookService>()
.Verify(v => v.AddBooks(It.Is<List<Book>>(t => t.Count == 1 && t.First().Monitored == expectedAlbumMonitored), false));
}
[Test]
@ -257,8 +257,8 @@ namespace NzbDrone.Core.Test.ImportListTests
Subject.Execute(new ImportListSyncCommand());
Mocker.GetMock<IAddArtistService>()
.Verify(v => v.AddArtists(It.Is<List<Author>>(t => t.Count == 0), false));
Mocker.GetMock<IAddAuthorService>()
.Verify(v => v.AddAuthors(It.Is<List<Author>>(t => t.Count == 0), false));
}
[Test]
@ -269,8 +269,8 @@ namespace NzbDrone.Core.Test.ImportListTests
Subject.Execute(new ImportListSyncCommand());
Mocker.GetMock<IAddAlbumService>()
.Verify(v => v.AddAlbums(It.Is<List<Book>>(t => t.Count == 0), false));
Mocker.GetMock<IAddBookService>()
.Verify(v => v.AddBooks(It.Is<List<Book>>(t => t.Count == 0), false));
}
[Test]
@ -282,8 +282,8 @@ namespace NzbDrone.Core.Test.ImportListTests
Subject.Execute(new ImportListSyncCommand());
Mocker.GetMock<IAddAlbumService>()
.Verify(v => v.AddAlbums(It.Is<List<Book>>(t => t.Count == 0), false));
Mocker.GetMock<IAddBookService>()
.Verify(v => v.AddBooks(It.Is<List<Book>>(t => t.Count == 0), false));
}
}
}

@ -2,17 +2,17 @@ using System.Collections.Generic;
using System.Linq;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.IndexerSearch;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.IndexerSearchTests
{
[TestFixture]
public class ArtistSearchServiceFixture : CoreTest<ArtistSearchService>
public class ArtistSearchServiceFixture : CoreTest<AuthorSearchService>
{
private Author _artist;
@ -21,8 +21,8 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
{
_artist = new Author();
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtist(It.IsAny<int>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthor(It.IsAny<int>()))
.Returns(_artist);
Mocker.GetMock<ISearchForNzb>()
@ -43,7 +43,7 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
new Book { Monitored = true }
};
Subject.Execute(new ArtistSearchCommand { AuthorId = _artist.Id, Trigger = CommandTrigger.Manual });
Subject.Execute(new AuthorSearchCommand { AuthorId = _artist.Id, Trigger = CommandTrigger.Manual });
Mocker.GetMock<ISearchForNzb>()
.Verify(v => v.ArtistSearch(_artist.Id, false, true, false),

@ -1,18 +1,18 @@
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.IndexerSearchTests
{
public class AlbumSearchDefinitionFixture : CoreTest<AlbumSearchCriteria>
public class AlbumSearchDefinitionFixture : CoreTest<BookSearchCriteria>
{
[TestCase("Mötley Crüe", "Motley+Crue")]
[TestCase("방탄소년단", "방탄소년단")]
public void should_replace_some_special_characters_artist(string artist, string expected)
{
Subject.Artist = new Author { Name = artist };
Subject.Author = new Author { Name = artist };
Subject.ArtistQuery.Should().Be(expected);
}
@ -24,14 +24,14 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
[TestCase("Section.80", "Section+80")]
public void should_replace_some_special_characters(string album, string expected)
{
Subject.AlbumTitle = album;
Subject.BookTitle = album;
Subject.AlbumQuery.Should().Be(expected);
}
[TestCase("+", "+")]
public void should_not_replace_some_special_characters_if_result_empty_string(string album, string expected)
{
Subject.AlbumTitle = album;
Subject.BookTitle = album;
Subject.AlbumQuery.Should().Be(expected);
}
}

@ -14,14 +14,14 @@ namespace NzbDrone.Core.Test.IndexerTests.IntegrationTests
[IntegrationTest]
public class IndexerIntegrationTests : CoreTest
{
private AlbumSearchCriteria _albumSearchCriteria;
private BookSearchCriteria _albumSearchCriteria;
[SetUp]
public void SetUp()
{
UseRealHttp();
_albumSearchCriteria = new AlbumSearchCriteria()
_albumSearchCriteria = new BookSearchCriteria()
{
};
}

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
{
public class NewznabRequestGeneratorFixture : CoreTest<NewznabRequestGenerator>
{
private AlbumSearchCriteria _singleAlbumSearchCriteria;
private BookSearchCriteria _singleAlbumSearchCriteria;
private NewznabCapabilities _capabilities;
[SetUp]
@ -23,10 +23,10 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
ApiKey = "abcd",
};
_singleAlbumSearchCriteria = new AlbumSearchCriteria
_singleAlbumSearchCriteria = new BookSearchCriteria
{
Artist = new Music.Author { Name = "Alien Ant Farm" },
AlbumTitle = "TruANT"
Author = new Books.Author { Name = "Alien Ant Farm" },
BookTitle = "TruANT"
};
_capabilities = new NewznabCapabilities();
@ -51,15 +51,15 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
[Test]
public void should_search_by_artist_and_album_if_supported()
{
_capabilities.SupportedAudioSearchParameters = new[] { "q", "artist", "album" };
_capabilities.SupportedAudioSearchParameters = new[] { "q", "author", "book" };
var results = Subject.GetSearchRequests(_singleAlbumSearchCriteria);
results.GetTier(0).Should().HaveCount(1);
var page = results.GetAllTiers().First().First();
page.Url.Query.Should().Contain("artist=Alien%20Ant%20Farm");
page.Url.Query.Should().Contain("album=TruANT");
page.Url.Query.Should().Contain("author=Alien%20Ant%20Farm");
page.Url.Query.Should().Contain("book=TruANT");
}
}
}

@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.IndexerTests
.Setup(v => v.Get(It.IsAny<int>()))
.Throws(new ModelNotFoundException(typeof(IndexerDefinition), 0));
var result = Subject.GetSeedConfiguration(new RemoteAlbum
var result = Subject.GetSeedConfiguration(new RemoteBook
{
Release = new ReleaseInfo
{
@ -45,14 +45,14 @@ namespace NzbDrone.Core.Test.IndexerTests
Settings = settings
});
var result = Subject.GetSeedConfiguration(new RemoteAlbum
var result = Subject.GetSeedConfiguration(new RemoteBook
{
Release = new ReleaseInfo()
{
DownloadProtocol = DownloadProtocol.Torrent,
IndexerId = 1
},
ParsedAlbumInfo = new ParsedAlbumInfo
ParsedBookInfo = new ParsedBookInfo
{
Discography = true
}

@ -8,9 +8,9 @@ using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Http;
using NzbDrone.Core.Books;
using NzbDrone.Core.Books.Events;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.Music;
using NzbDrone.Core.Music.Events;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.MediaCoverTests
@ -60,7 +60,7 @@ namespace NzbDrone.Core.Test.MediaCoverTests
Mocker.GetMock<IDiskProvider>().Setup(c => c.FileExists(It.IsAny<string>()))
.Returns(true);
Subject.ConvertToLocalUrls(12, MediaCoverEntity.Artist, covers);
Subject.ConvertToLocalUrls(12, MediaCoverEntity.Author, covers);
covers.Single().Url.Should().Be("/MediaCover/12/banner" + extension + "?lastWrite=1234");
}
@ -84,7 +84,7 @@ namespace NzbDrone.Core.Test.MediaCoverTests
Mocker.GetMock<IDiskProvider>().Setup(c => c.FileExists(It.IsAny<string>()))
.Returns(true);
Subject.ConvertToLocalUrls(12, MediaCoverEntity.Artist, covers);
Subject.ConvertToLocalUrls(12, MediaCoverEntity.Author, covers);
covers.Single().Extension.Should().Be(extension);
}
@ -108,7 +108,7 @@ namespace NzbDrone.Core.Test.MediaCoverTests
Mocker.GetMock<IDiskProvider>().Setup(c => c.FileExists(It.IsAny<string>()))
.Returns(true);
Subject.ConvertToLocalUrls(6, MediaCoverEntity.Album, covers);
Subject.ConvertToLocalUrls(6, MediaCoverEntity.Book, covers);
covers.Single().Url.Should().Be("/MediaCover/Albums/6/disc" + extension + "?lastWrite=1234");
}
@ -126,7 +126,7 @@ namespace NzbDrone.Core.Test.MediaCoverTests
}
};
Subject.ConvertToLocalUrls(12, MediaCoverEntity.Artist, covers);
Subject.ConvertToLocalUrls(12, MediaCoverEntity.Author, covers);
covers.Single().Url.Should().Be("/MediaCover/12/banner" + extension);
}
@ -138,15 +138,15 @@ namespace NzbDrone.Core.Test.MediaCoverTests
.Setup(v => v.AlreadyExists(It.IsAny<DateTime?>(), It.IsAny<long?>(), It.IsAny<string>()))
.Returns(false);
Mocker.GetMock<IAlbumService>()
.Setup(v => v.GetAlbumsByArtist(It.IsAny<int>()))
Mocker.GetMock<IBookService>()
.Setup(v => v.GetBooksByAuthor(It.IsAny<int>()))
.Returns(new List<Book> { _album });
Mocker.GetMock<IDiskProvider>()
.Setup(v => v.FileExists(It.IsAny<string>()))
.Returns(true);
Subject.HandleAsync(new ArtistRefreshCompleteEvent(_artist));
Subject.HandleAsync(new AuthorRefreshCompleteEvent(_artist));
Mocker.GetMock<IImageResizer>()
.Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Exactly(2));
@ -159,15 +159,15 @@ namespace NzbDrone.Core.Test.MediaCoverTests
.Setup(v => v.AlreadyExists(It.IsAny<DateTime?>(), It.IsAny<long?>(), It.IsAny<string>()))
.Returns(true);
Mocker.GetMock<IAlbumService>()
.Setup(v => v.GetAlbumsByArtist(It.IsAny<int>()))
Mocker.GetMock<IBookService>()
.Setup(v => v.GetBooksByAuthor(It.IsAny<int>()))
.Returns(new List<Book> { _album });
Mocker.GetMock<IDiskProvider>()
.Setup(v => v.FileExists(It.IsAny<string>()))
.Returns(false);
Subject.HandleAsync(new ArtistRefreshCompleteEvent(_artist));
Subject.HandleAsync(new AuthorRefreshCompleteEvent(_artist));
Mocker.GetMock<IImageResizer>()
.Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Exactly(2));
@ -184,15 +184,15 @@ namespace NzbDrone.Core.Test.MediaCoverTests
.Setup(v => v.FileExists(It.IsAny<string>()))
.Returns(true);
Mocker.GetMock<IAlbumService>()
.Setup(v => v.GetAlbumsByArtist(It.IsAny<int>()))
Mocker.GetMock<IBookService>()
.Setup(v => v.GetBooksByAuthor(It.IsAny<int>()))
.Returns(new List<Book> { _album });
Mocker.GetMock<IDiskProvider>()
.Setup(v => v.GetFileSize(It.IsAny<string>()))
.Returns(1000);
Subject.HandleAsync(new ArtistRefreshCompleteEvent(_artist));
Subject.HandleAsync(new AuthorRefreshCompleteEvent(_artist));
Mocker.GetMock<IImageResizer>()
.Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Never());
@ -209,15 +209,15 @@ namespace NzbDrone.Core.Test.MediaCoverTests
.Setup(v => v.FileExists(It.IsAny<string>()))
.Returns(true);
Mocker.GetMock<IAlbumService>()
.Setup(v => v.GetAlbumsByArtist(It.IsAny<int>()))
Mocker.GetMock<IBookService>()
.Setup(v => v.GetBooksByAuthor(It.IsAny<int>()))
.Returns(new List<Book> { _album });
Mocker.GetMock<IDiskProvider>()
.Setup(v => v.GetFileSize(It.IsAny<string>()))
.Returns(0);
Subject.HandleAsync(new ArtistRefreshCompleteEvent(_artist));
Subject.HandleAsync(new AuthorRefreshCompleteEvent(_artist));
Mocker.GetMock<IImageResizer>()
.Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Exactly(2));
@ -234,15 +234,15 @@ namespace NzbDrone.Core.Test.MediaCoverTests
.Setup(v => v.FileExists(It.IsAny<string>()))
.Returns(false);
Mocker.GetMock<IAlbumService>()
.Setup(v => v.GetAlbumsByArtist(It.IsAny<int>()))
Mocker.GetMock<IBookService>()
.Setup(v => v.GetBooksByAuthor(It.IsAny<int>()))
.Returns(new List<Book> { _album });
Mocker.GetMock<IImageResizer>()
.Setup(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()))
.Throws<ApplicationException>();
Subject.HandleAsync(new ArtistRefreshCompleteEvent(_artist));
Subject.HandleAsync(new AuthorRefreshCompleteEvent(_artist));
Mocker.GetMock<IImageResizer>()
.Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Exactly(2));

@ -8,9 +8,9 @@ using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -316,8 +316,8 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
.Build();
var file = Builder<BookFile>.CreateNew()
.With(x => x.Album = album)
.With(x => x.Artist = artist)
.With(x => x.Book = album)
.With(x => x.Author = artist)
.Build();
return file;

@ -9,10 +9,10 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.Music;
using NzbDrone.Core.MediaFiles.BookImport;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.RootFolders;
@ -43,16 +43,16 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
.Setup(s => s.GetBestRootFolder(It.IsAny<string>()))
.Returns(new RootFolder { Path = _rootFolder });
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtists(It.IsAny<List<int>>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthors(It.IsAny<List<int>>()))
.Returns(new List<Author>());
Mocker.GetMock<IMakeImportDecision>()
.Setup(v => v.GetImportDecisions(It.IsAny<List<IFileInfo>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerInfo>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns(new List<ImportDecision<LocalTrack>>());
.Returns(new List<ImportDecision<LocalBook>>());
Mocker.GetMock<IMediaFileService>()
.Setup(v => v.GetFilesByArtist(It.IsAny<int>()))
.Setup(v => v.GetFilesByAuthor(It.IsAny<int>()))
.Returns(new List<BookFile>());
Mocker.GetMock<IMediaFileService>()
@ -370,14 +370,14 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
Mocker.GetMock<IMakeImportDecision>()
.Setup(x => x.GetImportDecisions(It.IsAny<List<IFileInfo>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerInfo>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns((List<IFileInfo> fileList, IdentificationOverrides idOverrides, ImportDecisionMakerInfo idInfo, ImportDecisionMakerConfig idConfig) =>
fileList.Select(x => new LocalTrack
fileList.Select(x => new LocalBook
{
Artist = _artist,
Author = _artist,
Path = x.FullName,
Modified = x.LastWriteTimeUtc,
FileTrackInfo = new ParsedTrackInfo()
})
.Select(x => new ImportDecision<LocalTrack>(x, new Rejection("Reject")))
.Select(x => new ImportDecision<LocalBook>(x, new Rejection("Reject")))
.ToList());
}
@ -501,7 +501,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
FileSystem.AddFile(files[0], new MockFileData("".PadRight(100)) { LastWriteTime = new DateTime(2019, 2, 1) });
var localTrack = Builder<LocalTrack>.CreateNew()
var localTrack = Builder<LocalBook>.CreateNew()
.With(x => x.Path = files[0])
.With(x => x.Modified = new DateTime(2019, 2, 1))
.With(x => x.Size = 100)
@ -514,7 +514,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
Mocker.GetMock<IMakeImportDecision>()
.Setup(x => x.GetImportDecisions(It.IsAny<List<IFileInfo>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerInfo>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns(new List<ImportDecision<LocalTrack>> { new ImportDecision<LocalTrack>(localTrack, new Rejection("Reject")) });
.Returns(new List<ImportDecision<LocalBook>> { new ImportDecision<LocalBook>(localTrack, new Rejection("Reject")) });
Subject.Scan(new List<string> { _artist.Path });

@ -5,12 +5,12 @@ using System.IO.Abstractions.TestingHelpers;
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.BookImport;
using NzbDrone.Core.MediaFiles.Commands;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -18,7 +18,7 @@ using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles
{
[TestFixture]
public class DownloadedAlbumsCommandServiceFixture : FileSystemTest<DownloadedAlbumsCommandService>
public class DownloadedAlbumsCommandServiceFixture : FileSystemTest<DownloadedBooksCommandService>
{
private string _downloadFolder = "c:\\drop_other\\Show.S01E01\\".AsOsAgnostic();
private string _downloadFile = "c:\\drop_other\\Show.S01E01.mkv".AsOsAgnostic();
@ -28,11 +28,11 @@ namespace NzbDrone.Core.Test.MediaFiles
[SetUp]
public void Setup()
{
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessRootFolder(It.IsAny<IDirectoryInfo>()))
.Returns(new List<ImportResult>());
Mocker.GetMock<IDownloadedTracksImportService>()
Mocker.GetMock<IDownloadedBooksImportService>()
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
.Returns(new List<ImportResult>());
@ -41,14 +41,14 @@ namespace NzbDrone.Core.Test.MediaFiles
.With(v => v.Status = DownloadItemStatus.Downloading)
.Build();
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(v => v.Artist = new Author())
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(v => v.Author = new Author())
.Build();
_trackedDownload = new TrackedDownload
{
DownloadItem = downloadItem,
RemoteAlbum = remoteAlbum,
RemoteBook = remoteAlbum,
State = TrackedDownloadState.Downloading
};
}
@ -73,9 +73,9 @@ namespace NzbDrone.Core.Test.MediaFiles
[Test]
public void should_skip_import_if_dronefactory_doesnt_exist()
{
Assert.Throws<ArgumentException>(() => Subject.Execute(new DownloadedAlbumsScanCommand()));
Assert.Throws<ArgumentException>(() => Subject.Execute(new DownloadedBooksScanCommand()));
Mocker.GetMock<IDownloadedTracksImportService>().Verify(c => c.ProcessRootFolder(It.IsAny<IDirectoryInfo>()), Times.Never());
Mocker.GetMock<IDownloadedBooksImportService>().Verify(c => c.ProcessRootFolder(It.IsAny<IDirectoryInfo>()), Times.Never());
}
[Test]
@ -83,9 +83,9 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenExistingFolder(_downloadFolder);
Subject.Execute(new DownloadedAlbumsScanCommand() { Path = _downloadFolder });
Subject.Execute(new DownloadedBooksScanCommand() { Path = _downloadFolder });
Mocker.GetMock<IDownloadedTracksImportService>().Verify(c => c.ProcessPath(It.IsAny<string>(), ImportMode.Auto, null, null), Times.Once());
Mocker.GetMock<IDownloadedBooksImportService>().Verify(c => c.ProcessPath(It.IsAny<string>(), ImportMode.Auto, null, null), Times.Once());
}
[Test]
@ -93,9 +93,9 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenExistingFile(_downloadFile);
Subject.Execute(new DownloadedAlbumsScanCommand() { Path = _downloadFile });
Subject.Execute(new DownloadedBooksScanCommand() { Path = _downloadFile });
Mocker.GetMock<IDownloadedTracksImportService>().Verify(c => c.ProcessPath(It.IsAny<string>(), ImportMode.Auto, null, null), Times.Once());
Mocker.GetMock<IDownloadedBooksImportService>().Verify(c => c.ProcessPath(It.IsAny<string>(), ImportMode.Auto, null, null), Times.Once());
}
[Test]
@ -104,9 +104,9 @@ namespace NzbDrone.Core.Test.MediaFiles
GivenExistingFolder(_downloadFolder);
GivenValidQueueItem();
Subject.Execute(new DownloadedAlbumsScanCommand() { Path = _downloadFolder, DownloadClientId = "sab1" });
Subject.Execute(new DownloadedBooksScanCommand() { Path = _downloadFolder, DownloadClientId = "sab1" });
Mocker.GetMock<IDownloadedTracksImportService>().Verify(c => c.ProcessPath(_downloadFolder, ImportMode.Auto, _trackedDownload.RemoteAlbum.Artist, _trackedDownload.DownloadItem), Times.Once());
Mocker.GetMock<IDownloadedBooksImportService>().Verify(c => c.ProcessPath(_downloadFolder, ImportMode.Auto, _trackedDownload.RemoteBook.Author, _trackedDownload.DownloadItem), Times.Once());
}
[Test]
@ -114,9 +114,9 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenExistingFolder(_downloadFolder);
Subject.Execute(new DownloadedAlbumsScanCommand() { Path = _downloadFolder, DownloadClientId = "sab1" });
Subject.Execute(new DownloadedBooksScanCommand() { Path = _downloadFolder, DownloadClientId = "sab1" });
Mocker.GetMock<IDownloadedTracksImportService>().Verify(c => c.ProcessPath(_downloadFolder, ImportMode.Auto, null, null), Times.Once());
Mocker.GetMock<IDownloadedBooksImportService>().Verify(c => c.ProcessPath(_downloadFolder, ImportMode.Auto, null, null), Times.Once());
ExceptionVerification.ExpectedWarns(1);
}
@ -124,9 +124,9 @@ namespace NzbDrone.Core.Test.MediaFiles
[Test]
public void should_warn_if_neither_folder_or_file_exists()
{
Subject.Execute(new DownloadedAlbumsScanCommand() { Path = _downloadFolder });
Subject.Execute(new DownloadedBooksScanCommand() { Path = _downloadFolder });
Mocker.GetMock<IDownloadedTracksImportService>().Verify(c => c.ProcessPath(It.IsAny<string>(), ImportMode.Auto, null, null), Times.Never());
Mocker.GetMock<IDownloadedBooksImportService>().Verify(c => c.ProcessPath(It.IsAny<string>(), ImportMode.Auto, null, null), Times.Never());
ExceptionVerification.ExpectedWarns(1);
}
@ -136,9 +136,9 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenExistingFile(_downloadFile);
Subject.Execute(new DownloadedAlbumsScanCommand() { Path = _downloadFile, ImportMode = ImportMode.Copy });
Subject.Execute(new DownloadedBooksScanCommand() { Path = _downloadFile, ImportMode = ImportMode.Copy });
Mocker.GetMock<IDownloadedTracksImportService>().Verify(c => c.ProcessPath(It.IsAny<string>(), ImportMode.Copy, null, null), Times.Once());
Mocker.GetMock<IDownloadedBooksImportService>().Verify(c => c.ProcessPath(It.IsAny<string>(), ImportMode.Copy, null, null), Times.Once());
}
}
}

@ -8,11 +8,11 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.Music;
using NzbDrone.Core.MediaFiles.BookImport;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -21,7 +21,7 @@ using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles
{
[TestFixture]
public class DownloadedTracksImportServiceFixture : FileSystemTest<DownloadedTracksImportService>
public class DownloadedTracksImportServiceFixture : FileSystemTest<DownloadedBooksImportService>
{
private string _droneFactory = "c:\\drop\\".AsOsAgnostic();
private string[] _subFolders = new[] { "c:\\drop\\foldername".AsOsAgnostic() };
@ -34,14 +34,14 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenAudioFiles(_audioFiles, 10);
Mocker.GetMock<IDiskScanService>().Setup(c => c.GetAudioFiles(It.IsAny<string>(), It.IsAny<bool>()))
Mocker.GetMock<IDiskScanService>().Setup(c => c.GetBookFiles(It.IsAny<string>(), It.IsAny<bool>()))
.Returns(_audioFiles.Select(x => DiskProvider.GetFileInfo(x)).ToArray());
Mocker.GetMock<IDiskScanService>().Setup(c => c.FilterFiles(It.IsAny<string>(), It.IsAny<IEnumerable<IFileInfo>>()))
.Returns<string, IEnumerable<IFileInfo>>((b, s) => s.ToList());
Mocker.GetMock<IImportApprovedTracks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalTrack>>>(), true, null, ImportMode.Auto))
Mocker.GetMock<IImportApprovedBooks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalBook>>>(), true, null, ImportMode.Auto))
.Returns(new List<ImportResult>());
var downloadItem = Builder<DownloadClientItem>.CreateNew()
@ -49,14 +49,14 @@ namespace NzbDrone.Core.Test.MediaFiles
.With(v => v.Status = DownloadItemStatus.Downloading)
.Build();
var remoteAlbum = Builder<RemoteAlbum>.CreateNew()
.With(v => v.Artist = new Author())
var remoteAlbum = Builder<RemoteBook>.CreateNew()
.With(v => v.Author = new Author())
.Build();
_trackedDownload = new TrackedDownload
{
DownloadItem = downloadItem,
RemoteAlbum = remoteAlbum,
RemoteBook = remoteAlbum,
State = TrackedDownloadState.Downloading
};
}
@ -78,24 +78,24 @@ namespace NzbDrone.Core.Test.MediaFiles
private void GivenSuccessfulImport()
{
var localTrack = new LocalTrack();
var localTrack = new LocalBook();
var imported = new List<ImportDecision<LocalTrack>>();
imported.Add(new ImportDecision<LocalTrack>(localTrack));
var imported = new List<ImportDecision<LocalBook>>();
imported.Add(new ImportDecision<LocalBook>(localTrack));
Mocker.GetMock<IMakeImportDecision>()
.Setup(v => v.GetImportDecisions(It.IsAny<List<IFileInfo>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerInfo>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns(imported);
Mocker.GetMock<IImportApprovedTracks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalTrack>>>(), It.IsAny<bool>(), It.IsAny<DownloadClientItem>(), It.IsAny<ImportMode>()))
Mocker.GetMock<IImportApprovedBooks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalBook>>>(), It.IsAny<bool>(), It.IsAny<DownloadClientItem>(), It.IsAny<ImportMode>()))
.Returns(imported.Select(i => new ImportResult(i)).ToList())
.Callback(() => WasImportedResponse());
}
private void WasImportedResponse()
{
Mocker.GetMock<IDiskScanService>().Setup(c => c.GetAudioFiles(It.IsAny<string>(), It.IsAny<bool>()))
Mocker.GetMock<IDiskScanService>().Setup(c => c.GetBookFiles(It.IsAny<string>(), It.IsAny<bool>()))
.Returns(new IFileInfo[0]);
}
@ -141,18 +141,18 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenValidArtist();
Mocker.GetMock<IArtistService>()
.Setup(s => s.ArtistPathExists(It.IsAny<string>()))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.AuthorPathExists(It.IsAny<string>()))
.Returns(true);
Mocker.GetMock<IDiskScanService>()
.Setup(c => c.GetAudioFiles(It.IsAny<string>(), It.IsAny<bool>()))
.Setup(c => c.GetBookFiles(It.IsAny<string>(), It.IsAny<bool>()))
.Returns(new IFileInfo[0]);
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
Mocker.GetMock<IDiskScanService>()
.Verify(v => v.GetAudioFiles(It.IsAny<string>(), true), Times.Never());
.Verify(v => v.GetBookFiles(It.IsAny<string>(), true), Times.Never());
ExceptionVerification.ExpectedWarns(1);
}
@ -160,8 +160,8 @@ namespace NzbDrone.Core.Test.MediaFiles
[Test]
public void should_not_delete_folder_if_no_files_were_imported()
{
Mocker.GetMock<IImportApprovedTracks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalTrack>>>(), false, null, ImportMode.Auto))
Mocker.GetMock<IImportApprovedBooks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalBook>>>(), false, null, ImportMode.Auto))
.Returns(new List<ImportResult>());
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
@ -175,17 +175,17 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenValidArtist();
var localTrack = new LocalTrack();
var localTrack = new LocalBook();
var imported = new List<ImportDecision<LocalTrack>>();
imported.Add(new ImportDecision<LocalTrack>(localTrack));
var imported = new List<ImportDecision<LocalBook>>();
imported.Add(new ImportDecision<LocalBook>(localTrack));
Mocker.GetMock<IMakeImportDecision>()
.Setup(v => v.GetImportDecisions(It.IsAny<List<IFileInfo>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerInfo>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns(imported);
Mocker.GetMock<IImportApprovedTracks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalTrack>>>(), true, null, ImportMode.Auto))
Mocker.GetMock<IImportApprovedBooks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalBook>>>(), true, null, ImportMode.Auto))
.Returns(imported.Select(i => new ImportResult(i)).ToList());
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
@ -232,17 +232,17 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenValidArtist();
var localTrack = new LocalTrack();
var localTrack = new LocalBook();
var imported = new List<ImportDecision<LocalTrack>>();
imported.Add(new ImportDecision<LocalTrack>(localTrack));
var imported = new List<ImportDecision<LocalBook>>();
imported.Add(new ImportDecision<LocalBook>(localTrack));
Mocker.GetMock<IMakeImportDecision>()
.Setup(v => v.GetImportDecisions(It.IsAny<List<IFileInfo>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerInfo>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns(imported);
Mocker.GetMock<IImportApprovedTracks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalTrack>>>(), true, null, ImportMode.Auto))
Mocker.GetMock<IImportApprovedBooks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalBook>>>(), true, null, ImportMode.Auto))
.Returns(imported.Select(i => new ImportResult(i)).ToList());
GivenAudioFiles(new[] { _audioFiles.First().Replace(".ext", ".rar") }, 15.Megabytes());
@ -272,17 +272,17 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenValidArtist();
var localTrack = new LocalTrack();
var localTrack = new LocalBook();
var imported = new List<ImportDecision<LocalTrack>>();
imported.Add(new ImportDecision<LocalTrack>(localTrack));
var imported = new List<ImportDecision<LocalBook>>();
imported.Add(new ImportDecision<LocalBook>(localTrack));
Mocker.GetMock<IMakeImportDecision>()
.Setup(v => v.GetImportDecisions(It.IsAny<List<IFileInfo>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerInfo>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns(imported);
Mocker.GetMock<IImportApprovedTracks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalTrack>>>(), true, null, ImportMode.Auto))
Mocker.GetMock<IImportApprovedBooks>()
.Setup(s => s.Import(It.IsAny<List<ImportDecision<LocalBook>>>(), true, null, ImportMode.Auto))
.Returns(new List<ImportResult>());
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
@ -302,7 +302,7 @@ namespace NzbDrone.Core.Test.MediaFiles
_trackedDownload.DownloadItem.CanMoveFiles = false;
Subject.ProcessPath(_droneFactory, ImportMode.Auto, _trackedDownload.RemoteAlbum.Artist, _trackedDownload.DownloadItem);
Subject.ProcessPath(_droneFactory, ImportMode.Auto, _trackedDownload.RemoteBook.Author, _trackedDownload.DownloadItem);
DiskProvider.FolderExists(_subFolders[0]).Should().BeTrue();
}
@ -316,7 +316,7 @@ namespace NzbDrone.Core.Test.MediaFiles
_trackedDownload.DownloadItem.CanMoveFiles = false;
Subject.ProcessPath(_droneFactory, ImportMode.Move, _trackedDownload.RemoteAlbum.Artist, _trackedDownload.DownloadItem);
Subject.ProcessPath(_droneFactory, ImportMode.Move, _trackedDownload.RemoteBook.Author, _trackedDownload.DownloadItem);
DiskProvider.FolderExists(_subFolders[0]).Should().BeFalse();
}
@ -330,20 +330,20 @@ namespace NzbDrone.Core.Test.MediaFiles
_trackedDownload.DownloadItem.CanMoveFiles = true;
Subject.ProcessPath(_droneFactory, ImportMode.Copy, _trackedDownload.RemoteAlbum.Artist, _trackedDownload.DownloadItem);
Subject.ProcessPath(_droneFactory, ImportMode.Copy, _trackedDownload.RemoteBook.Author, _trackedDownload.DownloadItem);
DiskProvider.FolderExists(_subFolders[0]).Should().BeTrue();
}
private void VerifyNoImport()
{
Mocker.GetMock<IImportApprovedTracks>().Verify(c => c.Import(It.IsAny<List<ImportDecision<LocalTrack>>>(), true, null, ImportMode.Auto),
Mocker.GetMock<IImportApprovedBooks>().Verify(c => c.Import(It.IsAny<List<ImportDecision<LocalBook>>>(), true, null, ImportMode.Auto),
Times.Never());
}
private void VerifyImport()
{
Mocker.GetMock<IImportApprovedTracks>().Verify(c => c.Import(It.IsAny<List<ImportDecision<LocalTrack>>>(), true, null, ImportMode.Auto),
Mocker.GetMock<IImportApprovedBooks>().Verify(c => c.Import(It.IsAny<List<ImportDecision<LocalBook>>>(), true, null, ImportMode.Auto),
Times.Once());
}
}

@ -5,13 +5,13 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.BookImport;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
@ -21,18 +21,18 @@ using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles
{
[TestFixture]
public class ImportApprovedTracksFixture : CoreTest<ImportApprovedTracks>
public class ImportApprovedTracksFixture : CoreTest<ImportApprovedBooks>
{
private List<ImportDecision<LocalTrack>> _rejectedDecisions;
private List<ImportDecision<LocalTrack>> _approvedDecisions;
private List<ImportDecision<LocalBook>> _rejectedDecisions;
private List<ImportDecision<LocalBook>> _approvedDecisions;
private DownloadClientItem _downloadClientItem;
[SetUp]
public void Setup()
{
_rejectedDecisions = new List<ImportDecision<LocalTrack>>();
_approvedDecisions = new List<ImportDecision<LocalTrack>>();
_rejectedDecisions = new List<ImportDecision<LocalBook>>();
_approvedDecisions = new List<ImportDecision<LocalBook>>();
var artist = Builder<Author>.CreateNew()
.With(e => e.QualityProfile = new QualityProfile { Items = Qualities.QualityFixture.GetDefaultQualities() })
@ -43,15 +43,15 @@ namespace NzbDrone.Core.Test.MediaFiles
.With(e => e.Author = artist)
.Build();
_rejectedDecisions.Add(new ImportDecision<LocalTrack>(new LocalTrack(), new Rejection("Rejected!")));
_rejectedDecisions.Add(new ImportDecision<LocalTrack>(new LocalTrack(), new Rejection("Rejected!")));
_rejectedDecisions.Add(new ImportDecision<LocalTrack>(new LocalTrack(), new Rejection("Rejected!")));
_rejectedDecisions.Add(new ImportDecision<LocalBook>(new LocalBook(), new Rejection("Rejected!")));
_rejectedDecisions.Add(new ImportDecision<LocalBook>(new LocalBook(), new Rejection("Rejected!")));
_rejectedDecisions.Add(new ImportDecision<LocalBook>(new LocalBook(), new Rejection("Rejected!")));
_approvedDecisions.Add(new ImportDecision<LocalTrack>(
new LocalTrack
_approvedDecisions.Add(new ImportDecision<LocalBook>(
new LocalBook
{
Artist = artist,
Album = album,
Author = artist,
Book = album,
Path = Path.Combine(artist.Path, "Alien Ant Farm - 01 - Pilot.mp3"),
Quality = new QualityModel(Quality.MP3_320),
FileTrackInfo = new ParsedTrackInfo
@ -61,13 +61,13 @@ namespace NzbDrone.Core.Test.MediaFiles
}));
Mocker.GetMock<IUpgradeMediaFiles>()
.Setup(s => s.UpgradeTrackFile(It.IsAny<BookFile>(), It.IsAny<LocalTrack>(), It.IsAny<bool>()))
.Returns(new TrackFileMoveResult());
.Setup(s => s.UpgradeBookFile(It.IsAny<BookFile>(), It.IsAny<LocalBook>(), It.IsAny<bool>()))
.Returns(new BookFileMoveResult());
_downloadClientItem = Builder<DownloadClientItem>.CreateNew().Build();
Mocker.GetMock<IMediaFileService>()
.Setup(s => s.GetFilesByAlbum(It.IsAny<int>()))
.Setup(s => s.GetFilesByBook(It.IsAny<int>()))
.Returns(new List<BookFile>());
}
@ -88,7 +88,7 @@ namespace NzbDrone.Core.Test.MediaFiles
[Test]
public void should_only_import_approved()
{
var all = new List<ImportDecision<LocalTrack>>();
var all = new List<ImportDecision<LocalBook>>();
all.AddRange(_rejectedDecisions);
all.AddRange(_approvedDecisions);
@ -101,9 +101,9 @@ namespace NzbDrone.Core.Test.MediaFiles
[Test]
public void should_only_import_each_track_once()
{
var all = new List<ImportDecision<LocalTrack>>();
var all = new List<ImportDecision<LocalBook>>();
all.AddRange(_approvedDecisions);
all.Add(new ImportDecision<LocalTrack>(_approvedDecisions.First().Item));
all.Add(new ImportDecision<LocalBook>(_approvedDecisions.First().Item));
var result = Subject.Import(all, false);
@ -113,17 +113,17 @@ namespace NzbDrone.Core.Test.MediaFiles
[Test]
public void should_move_new_downloads()
{
Subject.Import(new List<ImportDecision<LocalTrack>> { _approvedDecisions.First() }, true);
Subject.Import(new List<ImportDecision<LocalBook>> { _approvedDecisions.First() }, true);
Mocker.GetMock<IUpgradeMediaFiles>()
.Verify(v => v.UpgradeTrackFile(It.IsAny<BookFile>(), _approvedDecisions.First().Item, false),
.Verify(v => v.UpgradeBookFile(It.IsAny<BookFile>(), _approvedDecisions.First().Item, false),
Times.Once());
}
[Test]
public void should_publish_TrackImportedEvent_for_new_downloads()
{
Subject.Import(new List<ImportDecision<LocalTrack>> { _approvedDecisions.First() }, true);
Subject.Import(new List<ImportDecision<LocalBook>> { _approvedDecisions.First() }, true);
Mocker.GetMock<IEventAggregator>()
.Verify(v => v.PublishEvent(It.IsAny<TrackImportedEvent>()), Times.Once());
@ -134,10 +134,10 @@ namespace NzbDrone.Core.Test.MediaFiles
{
var track = _approvedDecisions.First();
track.Item.ExistingFile = true;
Subject.Import(new List<ImportDecision<LocalTrack>> { track }, false);
Subject.Import(new List<ImportDecision<LocalBook>> { track }, false);
Mocker.GetMock<IUpgradeMediaFiles>()
.Verify(v => v.UpgradeTrackFile(It.IsAny<BookFile>(), _approvedDecisions.First().Item, false),
.Verify(v => v.UpgradeBookFile(It.IsAny<BookFile>(), _approvedDecisions.First().Item, false),
Times.Never());
}
@ -147,17 +147,17 @@ namespace NzbDrone.Core.Test.MediaFiles
var fileDecision = _approvedDecisions.First();
fileDecision.Item.Size = 1.Gigabytes();
var sampleDecision = new ImportDecision<LocalTrack>(
new LocalTrack
var sampleDecision = new ImportDecision<LocalBook>(
new LocalBook
{
Artist = fileDecision.Item.Artist,
Album = fileDecision.Item.Album,
Author = fileDecision.Item.Author,
Book = fileDecision.Item.Book,
Path = @"C:\Test\Music\Alien Ant Farm\Alien Ant Farm - 01 - Pilot.mp3".AsOsAgnostic(),
Quality = new QualityModel(Quality.MP3_320),
Size = 80.Megabytes()
});
var all = new List<ImportDecision<LocalTrack>>();
var all = new List<ImportDecision<LocalBook>>();
all.Add(fileDecision);
all.Add(sampleDecision);
@ -171,19 +171,19 @@ namespace NzbDrone.Core.Test.MediaFiles
[Test]
public void should_copy_when_cannot_move_files_downloads()
{
Subject.Import(new List<ImportDecision<LocalTrack>> { _approvedDecisions.First() }, true, new DownloadClientItem { Title = "Alien.Ant.Farm-Truant", CanMoveFiles = false });
Subject.Import(new List<ImportDecision<LocalBook>> { _approvedDecisions.First() }, true, new DownloadClientItem { Title = "Alien.Ant.Farm-Truant", CanMoveFiles = false });
Mocker.GetMock<IUpgradeMediaFiles>()
.Verify(v => v.UpgradeTrackFile(It.IsAny<BookFile>(), _approvedDecisions.First().Item, true), Times.Once());
.Verify(v => v.UpgradeBookFile(It.IsAny<BookFile>(), _approvedDecisions.First().Item, true), Times.Once());
}
[Test]
public void should_use_override_importmode()
{
Subject.Import(new List<ImportDecision<LocalTrack>> { _approvedDecisions.First() }, true, new DownloadClientItem { Title = "Alien.Ant.Farm-Truant", CanMoveFiles = false }, ImportMode.Move);
Subject.Import(new List<ImportDecision<LocalBook>> { _approvedDecisions.First() }, true, new DownloadClientItem { Title = "Alien.Ant.Farm-Truant", CanMoveFiles = false }, ImportMode.Move);
Mocker.GetMock<IUpgradeMediaFiles>()
.Verify(v => v.UpgradeTrackFile(It.IsAny<BookFile>(), _approvedDecisions.First().Item, false), Times.Once());
.Verify(v => v.UpgradeBookFile(It.IsAny<BookFile>(), _approvedDecisions.First().Item, false), Times.Once());
}
[Test]
@ -195,7 +195,7 @@ namespace NzbDrone.Core.Test.MediaFiles
var track = _approvedDecisions.First();
track.Item.ExistingFile = true;
Subject.Import(new List<ImportDecision<LocalTrack>> { track }, false);
Subject.Import(new List<ImportDecision<LocalBook>> { track }, false);
Mocker.GetMock<IMediaFileService>()
.Verify(v => v.Delete(It.IsAny<BookFile>(), DeleteMediaFileReason.ManualOverride), Times.Once());

@ -3,9 +3,9 @@ using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Exceptions;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;

@ -3,8 +3,8 @@ using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -55,10 +55,10 @@ namespace NzbDrone.Core.Test.MediaFiles
public void get_files_by_artist()
{
VerifyData();
var artistFiles = Subject.GetFilesByArtist(_artist.Id);
var artistFiles = Subject.GetFilesByAuthor(_artist.Id);
VerifyEagerLoaded(artistFiles);
artistFiles.Should().OnlyContain(c => c.Artist.Value.Id == _artist.Id);
artistFiles.Should().OnlyContain(c => c.Author.Value.Id == _artist.Id);
}
[Test]
@ -109,17 +109,17 @@ namespace NzbDrone.Core.Test.MediaFiles
var file = Subject.GetFileWithPath(@"C:\Test\Path\Artist\somefile2.flac".AsOsAgnostic());
file.Should().NotBeNull();
file.Album.IsLoaded.Should().BeTrue();
file.Album.Value.Should().NotBeNull();
file.Artist.IsLoaded.Should().BeTrue();
file.Artist.Value.Should().NotBeNull();
file.Book.IsLoaded.Should().BeTrue();
file.Book.Value.Should().NotBeNull();
file.Author.IsLoaded.Should().BeTrue();
file.Author.Value.Should().NotBeNull();
}
[Test]
public void get_files_by_album()
{
VerifyData();
var files = Subject.GetFilesByAlbum(_album.Id);
var files = Subject.GetFilesByBook(_album.Id);
VerifyEagerLoaded(files);
files.Should().OnlyContain(c => c.BookId == _album.Id);
@ -136,12 +136,12 @@ namespace NzbDrone.Core.Test.MediaFiles
{
foreach (var file in files)
{
file.Album.IsLoaded.Should().BeTrue();
file.Album.Value.Should().NotBeNull();
file.Artist.IsLoaded.Should().BeTrue();
file.Artist.Value.Should().NotBeNull();
file.Artist.Value.Metadata.IsLoaded.Should().BeTrue();
file.Artist.Value.Metadata.Value.Should().NotBeNull();
file.Book.IsLoaded.Should().BeTrue();
file.Book.Value.Should().NotBeNull();
file.Author.IsLoaded.Should().BeTrue();
file.Author.Value.Should().NotBeNull();
file.Author.Value.Metadata.IsLoaded.Should().BeTrue();
file.Author.Value.Metadata.Value.Should().NotBeNull();
}
}
@ -149,10 +149,10 @@ namespace NzbDrone.Core.Test.MediaFiles
{
foreach (var file in files)
{
file.Album.IsLoaded.Should().BeFalse();
file.Album.Value.Should().BeNull();
file.Artist.IsLoaded.Should().BeFalse();
file.Artist.Value.Should().BeNull();
file.Book.IsLoaded.Should().BeFalse();
file.Book.Value.Should().BeNull();
file.Author.IsLoaded.Should().BeFalse();
file.Author.Value.Should().BeNull();
}
}
@ -160,7 +160,7 @@ namespace NzbDrone.Core.Test.MediaFiles
public void delete_files_by_album_should_work_if_join_fails()
{
Db.Delete(_album);
Subject.DeleteFilesByAlbum(_album.Id);
Subject.DeleteFilesByBook(_album.Id);
Db.All<BookFile>().Where(x => x.BookId == _album.Id).Should().HaveCount(0);
}

@ -7,9 +7,9 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -213,7 +213,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaFileServiceTests
Path = "C:\\file2.avi".AsOsAgnostic(),
Size = 10,
Modified = _lastWrite,
Album = new LazyLoaded<Book>(null)
Book = new LazyLoaded<Book>(null)
}
});
@ -239,7 +239,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaFileServiceTests
Path = "C:\\file2.avi".AsOsAgnostic(),
Size = 10,
Modified = _lastWrite,
Album = Builder<Book>.CreateNew().Build()
Book = Builder<Book>.CreateNew().Build()
}
});

@ -3,9 +3,9 @@ using System.Linq;
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
@ -35,7 +35,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
{
Subject.DeleteMany(_trackFiles, DeleteMediaFileReason.Manual);
VerifyEventPublished<TrackFileDeletedEvent>(Times.Exactly(2));
VerifyEventPublished<BookFileDeletedEvent>(Times.Exactly(2));
}
[Test]
@ -43,7 +43,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
{
Subject.Delete(_trackFiles[0], DeleteMediaFileReason.Manual);
VerifyEventPublished<TrackFileDeletedEvent>(Times.Once());
VerifyEventPublished<BookFileDeletedEvent>(Times.Once());
}
[Test]
@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
{
Subject.AddMany(_trackFiles);
VerifyEventPublished<TrackFileAddedEvent>(Times.Exactly(3));
VerifyEventPublished<BookFileAddedEvent>(Times.Exactly(3));
}
[Test]
@ -59,7 +59,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
{
Subject.Add(_trackFiles[0]);
VerifyEventPublished<TrackFileAddedEvent>(Times.Once());
VerifyEventPublished<BookFileAddedEvent>(Times.Once());
}
}
}

@ -4,8 +4,8 @@ using System.Linq;
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;

@ -3,16 +3,16 @@ using System.Linq;
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.Commands;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.MediaFiles
{
public class RenameTrackFileServiceFixture : CoreTest<RenameTrackFileService>
public class RenameTrackFileServiceFixture : CoreTest<RenameBookFileService>
{
private Author _artist;
private List<BookFile> _trackFiles;
@ -25,12 +25,12 @@ namespace NzbDrone.Core.Test.MediaFiles
_trackFiles = Builder<BookFile>.CreateListOfSize(2)
.All()
.With(e => e.Artist = _artist)
.With(e => e.Author = _artist)
.Build()
.ToList();
Mocker.GetMock<IArtistService>()
.Setup(s => s.GetArtist(_artist.Id))
Mocker.GetMock<IAuthorService>()
.Setup(s => s.GetAuthor(_artist.Id))
.Returns(_artist);
}
@ -50,8 +50,8 @@ namespace NzbDrone.Core.Test.MediaFiles
private void GivenMovedFiles()
{
Mocker.GetMock<IMoveTrackFiles>()
.Setup(s => s.MoveTrackFile(It.IsAny<BookFile>(), _artist));
Mocker.GetMock<IMoveBookFiles>()
.Setup(s => s.MoveBookFile(It.IsAny<BookFile>(), _artist));
}
[Test]
@ -62,7 +62,7 @@ namespace NzbDrone.Core.Test.MediaFiles
Subject.Execute(new RenameFilesCommand(_artist.Id, new List<int> { 1 }));
Mocker.GetMock<IEventAggregator>()
.Verify(v => v.PublishEvent(It.IsAny<ArtistRenamedEvent>()), Times.Never());
.Verify(v => v.PublishEvent(It.IsAny<AuthorRenamedEvent>()), Times.Never());
}
[Test]
@ -70,14 +70,14 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenTrackFiles();
Mocker.GetMock<IMoveTrackFiles>()
.Setup(s => s.MoveTrackFile(It.IsAny<BookFile>(), It.IsAny<Author>()))
Mocker.GetMock<IMoveBookFiles>()
.Setup(s => s.MoveBookFile(It.IsAny<BookFile>(), It.IsAny<Author>()))
.Throws(new SameFilenameException("Same file name", "Filename"));
Subject.Execute(new RenameFilesCommand(_artist.Id, new List<int> { 1 }));
Mocker.GetMock<IEventAggregator>()
.Verify(v => v.PublishEvent(It.IsAny<ArtistRenamedEvent>()), Times.Never());
.Verify(v => v.PublishEvent(It.IsAny<AuthorRenamedEvent>()), Times.Never());
}
[Test]
@ -89,7 +89,7 @@ namespace NzbDrone.Core.Test.MediaFiles
Subject.Execute(new RenameFilesCommand(_artist.Id, new List<int> { 1 }));
Mocker.GetMock<IEventAggregator>()
.Verify(v => v.PublishEvent(It.IsAny<ArtistRenamedEvent>()), Times.Once());
.Verify(v => v.PublishEvent(It.IsAny<AuthorRenamedEvent>()), Times.Once());
}
[Test]

@ -7,10 +7,10 @@ using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Books;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Music;
using NzbDrone.Core.Organizer;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
@ -19,11 +19,11 @@ using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
{
[TestFixture]
public class MoveTrackFileFixture : CoreTest<TrackFileMovingService>
public class MoveTrackFileFixture : CoreTest<BookFileMovingService>
{
private Author _artist;
private BookFile _trackFile;
private LocalTrack _localtrack;
private LocalBook _localtrack;
[SetUp]
public void Setup()
@ -37,21 +37,21 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
.With(f => f.Path = Path.Combine(_artist.Path, @"Album\File.mp3"))
.Build();
_localtrack = Builder<LocalTrack>.CreateNew()
.With(l => l.Artist = _artist)
.With(l => l.Album = Builder<Book>.CreateNew().Build())
_localtrack = Builder<LocalBook>.CreateNew()
.With(l => l.Author = _artist)
.With(l => l.Book = Builder<Book>.CreateNew().Build())
.Build();
Mocker.GetMock<IBuildFileNames>()
.Setup(s => s.BuildTrackFileName(It.IsAny<Author>(), It.IsAny<Book>(), It.IsAny<BookFile>(), null, null))
.Setup(s => s.BuildBookFileName(It.IsAny<Author>(), It.IsAny<Book>(), It.IsAny<BookFile>(), null, null))
.Returns("File Name");
Mocker.GetMock<IBuildFileNames>()
.Setup(s => s.BuildTrackFilePath(It.IsAny<Author>(), It.IsAny<Book>(), It.IsAny<string>(), It.IsAny<string>()))
.Setup(s => s.BuildBookFilePath(It.IsAny<Author>(), It.IsAny<Book>(), It.IsAny<string>(), It.IsAny<string>()))
.Returns(@"C:\Test\Music\Artist\Album\File Name.mp3".AsOsAgnostic());
Mocker.GetMock<IBuildFileNames>()
.Setup(s => s.BuildAlbumPath(It.IsAny<Author>(), It.IsAny<Book>()))
.Setup(s => s.BuildBookPath(It.IsAny<Author>(), It.IsAny<Book>()))
.Returns(@"C:\Test\Music\Artist\Album".AsOsAgnostic());
var rootFolder = @"C:\Test\Music\".AsOsAgnostic();
@ -73,7 +73,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
.Setup(s => s.InheritFolderPermissions(It.IsAny<string>()))
.Throws<UnauthorizedAccessException>();
Subject.MoveTrackFile(_trackFile, _localtrack);
Subject.MoveBookFile(_trackFile, _localtrack);
}
[Test]
@ -85,27 +85,27 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
.Setup(s => s.InheritFolderPermissions(It.IsAny<string>()))
.Throws<InvalidOperationException>();
Subject.MoveTrackFile(_trackFile, _localtrack);
Subject.MoveBookFile(_trackFile, _localtrack);
}
[Test]
public void should_notify_on_artist_folder_creation()
{
Subject.MoveTrackFile(_trackFile, _localtrack);
Subject.MoveBookFile(_trackFile, _localtrack);
Mocker.GetMock<IEventAggregator>()
.Verify(s => s.PublishEvent<TrackFolderCreatedEvent>(It.Is<TrackFolderCreatedEvent>(p =>
p.ArtistFolder.IsNotNullOrWhiteSpace())), Times.Once());
p.AuthorFolder.IsNotNullOrWhiteSpace())), Times.Once());
}
[Test]
public void should_notify_on_album_folder_creation()
{
Subject.MoveTrackFile(_trackFile, _localtrack);
Subject.MoveBookFile(_trackFile, _localtrack);
Mocker.GetMock<IEventAggregator>()
.Verify(s => s.PublishEvent<TrackFolderCreatedEvent>(It.Is<TrackFolderCreatedEvent>(p =>
p.AlbumFolder.IsNotNullOrWhiteSpace())), Times.Once());
p.BookFolder.IsNotNullOrWhiteSpace())), Times.Once());
}
[Test]
@ -115,11 +115,11 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackFileMovingServiceTests
.Setup(s => s.FolderExists(_artist.Path))
.Returns(true);
Subject.MoveTrackFile(_trackFile, _localtrack);
Subject.MoveBookFile(_trackFile, _localtrack);
Mocker.GetMock<IEventAggregator>()
.Verify(s => s.PublishEvent<TrackFolderCreatedEvent>(It.Is<TrackFolderCreatedEvent>(p =>
p.ArtistFolder.IsNotNullOrWhiteSpace())), Times.Never());
p.AuthorFolder.IsNotNullOrWhiteSpace())), Times.Never());
}
}
}

@ -5,19 +5,19 @@ using System.IO;
using System.Linq;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators;
using NzbDrone.Core.MediaFiles.BookImport.Aggregation.Aggregators;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Aggregation.Aggregators
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Aggregation.Aggregators
{
[TestFixture]
public class AggregateFilenameInfoFixture : CoreTest<AggregateFilenameInfo>
{
private LocalAlbumRelease GivenTracks(List<string> files, string root)
{
var tracks = files.Select(x => new LocalTrack
var tracks = files.Select(x => new LocalBook
{
Path = Path.Combine(root, x),
FileTrackInfo = new ParsedTrackInfo
@ -28,7 +28,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Aggregation.Aggregators
return new LocalAlbumRelease(tracks);
}
private void VerifyData(LocalTrack track, string artist, string title, int trackNum, int disc)
private void VerifyData(LocalBook track, string artist, string title, int trackNum, int disc)
{
track.FileTrackInfo.ArtistTitle.Should().Be(artist);
track.FileTrackInfo.Title.Should().Be(title);
@ -49,10 +49,10 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Aggregation.Aggregators
Subject.Aggregate(release, true);
VerifyData(release.LocalTracks[0], "Adele", "Daydreamer", 1, 1);
VerifyData(release.LocalTracks[1], "Adele", "Best for Last", 2, 1);
VerifyData(release.LocalTracks[2], "Adele", "Chasing Pavements", 3, 1);
VerifyData(release.LocalTracks[3], "Adele", "That's It, I Quit, I'm Moving On", 3, 2);
VerifyData(release.LocalBooks[0], "Adele", "Daydreamer", 1, 1);
VerifyData(release.LocalBooks[1], "Adele", "Best for Last", 2, 1);
VerifyData(release.LocalBooks[2], "Adele", "Chasing Pavements", 3, 1);
VerifyData(release.LocalBooks[3], "Adele", "That's It, I Quit, I'm Moving On", 3, 2);
}
public static class TestCaseFactory
@ -159,7 +159,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Aggregation.Aggregators
return outp;
}
private void VerifyDataAuto(List<LocalTrack> tracks, string[] tokens, string whitespace)
private void VerifyDataAuto(List<LocalBook> tracks, string[] tokens, string whitespace)
{
for (int i = 1; i <= tracks.Count; i++)
{
@ -200,7 +200,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Aggregation.Aggregators
Subject.Aggregate(release, true);
VerifyDataAuto(release.LocalTracks, testcase.Item1, testcase.Item3);
VerifyDataAuto(release.LocalBooks, testcase.Item1, testcase.Item3);
}
}
}

@ -1,10 +1,10 @@
using System.Collections.Generic;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.MediaFiles.TrackImport.Identification;
using NzbDrone.Core.MediaFiles.BookImport.Identification;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Identification
{
[TestFixture]
public class DistanceFixture : TestBase

@ -8,32 +8,32 @@ using Moq;
using Newtonsoft.Json;
using NUnit.Framework;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Books;
using NzbDrone.Core.Books.Commands;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.ImportLists.Exclusions;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.MediaFiles.TrackImport.Aggregation;
using NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators;
using NzbDrone.Core.MediaFiles.TrackImport.Identification;
using NzbDrone.Core.MediaFiles.BookImport;
using NzbDrone.Core.MediaFiles.BookImport.Aggregation;
using NzbDrone.Core.MediaFiles.BookImport.Aggregation.Aggregators;
using NzbDrone.Core.MediaFiles.BookImport.Identification;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.MetadataSource.SkyHook;
using NzbDrone.Core.Music;
using NzbDrone.Core.Music.Commands;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Metadata;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Identification
{
[TestFixture]
public class IdentificationServiceFixture : DbTest
{
private ArtistService _artistService;
private AddArtistService _addArtistService;
private RefreshArtistService _refreshArtistService;
private AuthorService _authorService;
private AddArtistService _addAuthorService;
private RefreshAuthorService _refreshArtistService;
private IdentificationService _Subject;
@ -43,18 +43,18 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
UseRealHttp();
// Resolve all the parts we need
Mocker.SetConstant<IArtistRepository>(Mocker.Resolve<ArtistRepository>());
Mocker.SetConstant<IArtistMetadataRepository>(Mocker.Resolve<ArtistMetadataRepository>());
Mocker.SetConstant<IAlbumRepository>(Mocker.Resolve<AlbumRepository>());
Mocker.SetConstant<IAuthorRepository>(Mocker.Resolve<AuthorRepository>());
Mocker.SetConstant<IAuthorMetadataRepository>(Mocker.Resolve<AuthorMetadataRepository>());
Mocker.SetConstant<IBookRepository>(Mocker.Resolve<BookRepository>());
Mocker.SetConstant<IImportListExclusionRepository>(Mocker.Resolve<ImportListExclusionRepository>());
Mocker.SetConstant<IMediaFileRepository>(Mocker.Resolve<MediaFileRepository>());
Mocker.GetMock<IMetadataProfileService>().Setup(x => x.Exists(It.IsAny<int>())).Returns(true);
_artistService = Mocker.Resolve<ArtistService>();
Mocker.SetConstant<IArtistService>(_artistService);
Mocker.SetConstant<IArtistMetadataService>(Mocker.Resolve<ArtistMetadataService>());
Mocker.SetConstant<IAlbumService>(Mocker.Resolve<AlbumService>());
_authorService = Mocker.Resolve<AuthorService>();
Mocker.SetConstant<IAuthorService>(_authorService);
Mocker.SetConstant<IAuthorMetadataService>(Mocker.Resolve<AuthorMetadataService>());
Mocker.SetConstant<IBookService>(Mocker.Resolve<BookService>());
Mocker.SetConstant<IImportListExclusionService>(Mocker.Resolve<ImportListExclusionService>());
Mocker.SetConstant<IMediaFileService>(Mocker.Resolve<MediaFileService>());
@ -62,12 +62,12 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
Mocker.SetConstant<IProvideAuthorInfo>(Mocker.Resolve<SkyHookProxy>());
Mocker.SetConstant<IProvideBookInfo>(Mocker.Resolve<SkyHookProxy>());
_addArtistService = Mocker.Resolve<AddArtistService>();
_addAuthorService = Mocker.Resolve<AddArtistService>();
Mocker.SetConstant<IRefreshAlbumService>(Mocker.Resolve<RefreshAlbumService>());
_refreshArtistService = Mocker.Resolve<RefreshArtistService>();
Mocker.SetConstant<IRefreshBookService>(Mocker.Resolve<RefreshBookService>());
_refreshArtistService = Mocker.Resolve<RefreshAuthorService>();
Mocker.GetMock<IAddArtistValidator>().Setup(x => x.Validate(It.IsAny<Author>())).Returns(new ValidationResult());
Mocker.GetMock<IAddAuthorValidator>().Setup(x => x.Validate(It.IsAny<Author>())).Returns(new ValidationResult());
Mocker.SetConstant<ITrackGroupingService>(Mocker.Resolve<TrackGroupingService>());
Mocker.SetConstant<ICandidateService>(Mocker.Resolve<CandidateService>());
@ -88,7 +88,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
Mocker.GetMock<IMetadataProfileService>().Setup(x => x.Get(profile.Id)).Returns(profile);
}
private List<Author> GivenArtists(List<ArtistTestCase> artists)
private List<Author> GivenArtists(List<AuthorTestCase> artists)
{
var outp = new List<Author>();
for (int i = 0; i < artists.Count; i++)
@ -96,7 +96,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var meta = artists[i].MetadataProfile;
meta.Id = i + 1;
GivenMetadataProfile(meta);
outp.Add(GivenArtist(artists[i].Artist, meta.Id));
outp.Add(GivenArtist(artists[i].Author, meta.Id));
}
return outp;
@ -104,7 +104,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
private Author GivenArtist(string foreignAuthorId, int metadataProfileId)
{
var artist = _addArtistService.AddArtist(new Author
var artist = _addAuthorService.AddAuthor(new Author
{
Metadata = new AuthorMetadata
{
@ -114,7 +114,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
MetadataProfileId = metadataProfileId
});
var command = new RefreshArtistCommand
var command = new RefreshAuthorCommand
{
AuthorId = artist.Id,
Trigger = CommandTrigger.Unspecified
@ -122,7 +122,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
_refreshArtistService.Execute(command);
return _artistService.FindById(foreignAuthorId);
return _authorService.FindById(foreignAuthorId);
}
private void GivenFingerprints(List<AcoustIdTestCase> fingerprints)
@ -131,8 +131,8 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
Mocker.GetMock<IFingerprintingService>().Setup(x => x.IsSetup()).Returns(true);
Mocker.GetMock<IFingerprintingService>()
.Setup(x => x.Lookup(It.IsAny<List<LocalTrack>>(), It.IsAny<double>()))
.Callback((List<LocalTrack> track, double thres) =>
.Setup(x => x.Lookup(It.IsAny<List<LocalBook>>(), It.IsAny<double>()))
.Callback((List<LocalBook> track, double thres) =>
{
track.ForEach(x => x.AcoustIdResults = fingerprints.SingleOrDefault(f => f.Path == x.Path).AcoustIdResults);
});
@ -172,11 +172,11 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Identification", file);
var testcase = JsonConvert.DeserializeObject<IdTestCase>(File.ReadAllText(path));
var artists = GivenArtists(testcase.LibraryArtists);
var specifiedArtist = artists.SingleOrDefault(x => x.Metadata.Value.ForeignAuthorId == testcase.Artist);
var idOverrides = new IdentificationOverrides { Artist = specifiedArtist };
var artists = GivenArtists(testcase.LibraryAuthors);
var specifiedArtist = artists.SingleOrDefault(x => x.Metadata.Value.ForeignAuthorId == testcase.Author);
var idOverrides = new IdentificationOverrides { Author = specifiedArtist };
var tracks = testcase.Tracks.Select(x => new LocalTrack
var tracks = testcase.Tracks.Select(x => new LocalBook
{
Path = x.Path.AsOsAgnostic(),
FileTrackInfo = x.FileTrackInfo

@ -1,9 +1,9 @@
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.MediaFiles.TrackImport.Identification;
using NzbDrone.Core.MediaFiles.BookImport.Identification;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Identification
{
[TestFixture]
public class MunkresFixture : TestBase

@ -7,12 +7,12 @@ using FizzWare.NBuilder;
using FizzWare.NBuilder.PropertyNaming;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.MediaFiles.TrackImport.Identification;
using NzbDrone.Core.MediaFiles.BookImport.Identification;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Identification
{
// we need to use random strings to test the va (so we don't just get artist1, artist2 etc which are too similar)
// but the standard random value namer would give paths that are too long on windows
@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
[TestFixture]
public class TrackGroupingServiceFixture : CoreTest<TrackGroupingService>
{
private List<LocalTrack> GivenTracks(string root, string artist, string album, int count)
private List<LocalBook> GivenTracks(string root, string artist, string album, int count)
{
var fileInfos = Builder<ParsedTrackInfo>
.CreateListOfSize(count)
@ -77,7 +77,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
.With(f => f.ReleaseMBId = null)
.Build();
var tracks = fileInfos.Select(x => Builder<LocalTrack>
var tracks = fileInfos.Select(x => Builder<LocalBook>
.CreateNew()
.With(y => y.FileTrackInfo = x)
.With(y => y.Path = Path.Combine(root, x.Title))
@ -86,13 +86,13 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
return tracks;
}
private List<LocalTrack> GivenTracksWithNoTags(string root, int count)
private List<LocalBook> GivenTracksWithNoTags(string root, int count)
{
var outp = new List<LocalTrack>();
var outp = new List<LocalBook>();
for (int i = 0; i < count; i++)
{
var track = Builder<LocalTrack>
var track = Builder<LocalBook>
.CreateNew()
.With(y => y.FileTrackInfo = new ParsedTrackInfo())
.With(y => y.Path = Path.Combine(root, $"{i}.mp3"))
@ -104,7 +104,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
}
[Repeat(100)]
private List<LocalTrack> GivenVaTracks(string root, string album, int count)
private List<LocalBook> GivenVaTracks(string root, string album, int count)
{
var settings = new BuilderSettings();
settings.SetPropertyNamerFor<ParsedTrackInfo>(new RandomValueNamerShortStrings(settings));
@ -119,7 +119,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
.With(f => f.ReleaseMBId = null)
.Build();
var tracks = fileInfos.Select(x => Builder<LocalTrack>
var tracks = fileInfos.Select(x => Builder<LocalBook>
.CreateNew()
.With(y => y.FileTrackInfo = x)
.With(y => y.Path = Path.Combine(@"C:\music\incoming".AsOsAgnostic(), x.Title))
@ -199,7 +199,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
TrackGroupingService.LooksLikeSingleRelease(tracks).Should().Be(true);
output.Count.Should().Be(1);
output[0].LocalTracks.Count.Should().Be(count);
output[0].LocalBooks.Count.Should().Be(count);
}
[TestCase("cd")]
@ -215,7 +215,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(1);
output[0].LocalTracks.Count.Should().Be(15);
output[0].LocalBooks.Count.Should().Be(15);
}
[Test]
@ -229,8 +229,8 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(2);
output[0].LocalTracks.Count.Should().Be(10);
output[1].LocalTracks.Count.Should().Be(5);
output[0].LocalBooks.Count.Should().Be(10);
output[1].LocalBooks.Count.Should().Be(5);
}
[Test]
@ -244,7 +244,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(1);
output[0].LocalTracks.Count.Should().Be(15);
output[0].LocalBooks.Count.Should().Be(15);
}
[Test]
@ -258,8 +258,8 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(2);
output[0].LocalTracks.Count.Should().Be(1);
output[1].LocalTracks.Count.Should().Be(1);
output[0].LocalBooks.Count.Should().Be(1);
output[1].LocalBooks.Count.Should().Be(1);
}
[Test]
@ -273,14 +273,14 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(2);
output[0].LocalTracks.Count.Should().Be(10);
output[1].LocalTracks.Count.Should().Be(5);
output[0].LocalBooks.Count.Should().Be(10);
output[1].LocalBooks.Count.Should().Be(5);
}
[Test]
public void should_separate_many_albums_in_same_directory()
{
var tracks = new List<LocalTrack>();
var tracks = new List<LocalBook>();
for (int i = 0; i < 100; i++)
{
tracks.AddRange(GivenTracks($"C:\\music".AsOsAgnostic(), "artist" + i, "album" + i, 10));
@ -291,7 +291,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(100);
output.Select(x => x.LocalTracks.Count).Distinct().Should().BeEquivalentTo(new List<int> { 10 });
output.Select(x => x.LocalBooks.Count).Distinct().Should().BeEquivalentTo(new List<int> { 10 });
}
[Test]
@ -305,8 +305,8 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(2);
output[0].LocalTracks.Count.Should().Be(10);
output[1].LocalTracks.Count.Should().Be(5);
output[0].LocalBooks.Count.Should().Be(10);
output[1].LocalBooks.Count.Should().Be(5);
}
[Test]
@ -320,7 +320,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(1);
output[0].LocalTracks.Count.Should().Be(10);
output[0].LocalBooks.Count.Should().Be(10);
}
[Test]
@ -335,8 +335,8 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(2);
output[0].LocalTracks.Count.Should().Be(10);
output[1].LocalTracks.Count.Should().Be(5);
output[0].LocalBooks.Count.Should().Be(10);
output[1].LocalBooks.Count.Should().Be(5);
}
[Test]
@ -349,7 +349,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(1);
output[0].LocalTracks.Count.Should().Be(10);
output[0].LocalBooks.Count.Should().Be(10);
}
[Test]
@ -363,7 +363,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
var output = Subject.GroupTracks(tracks);
output.Count.Should().Be(1);
output[0].LocalTracks.Count.Should().Be(12);
output[0].LocalBooks.Count.Should().Be(12);
}
[Test]
@ -380,12 +380,12 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Identification
foreach (var group in output)
{
TestLogger.Debug($"*** group {group} ***");
TestLogger.Debug(string.Join("\n", group.LocalTracks.Select(x => x.Path)));
TestLogger.Debug(string.Join("\n", group.LocalBooks.Select(x => x.Path)));
}
output.Count.Should().Be(2);
output[0].LocalTracks.Count.Should().Be(10);
output[1].LocalTracks.Count.Should().Be(10);
output[0].LocalBooks.Count.Should().Be(10);
output[1].LocalBooks.Count.Should().Be(10);
}
}
}

@ -6,26 +6,26 @@ using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.TrackImport;
using NzbDrone.Core.MediaFiles.TrackImport.Aggregation;
using NzbDrone.Core.MediaFiles.TrackImport.Identification;
using NzbDrone.Core.Music;
using NzbDrone.Core.MediaFiles.BookImport;
using NzbDrone.Core.MediaFiles.BookImport.Aggregation;
using NzbDrone.Core.MediaFiles.BookImport.Identification;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport
namespace NzbDrone.Core.Test.MediaFiles.BookImport
{
[TestFixture]
public class ImportDecisionMakerFixture : FileSystemTest<ImportDecisionMaker>
{
private List<IFileInfo> _fileInfos;
private LocalTrack _localTrack;
private LocalBook _localTrack;
private Author _artist;
private Book _album;
private QualityModel _quality;
@ -41,13 +41,13 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
private Mock<IImportDecisionEngineSpecification<LocalAlbumRelease>> _albumfail2;
private Mock<IImportDecisionEngineSpecification<LocalAlbumRelease>> _albumfail3;
private Mock<IImportDecisionEngineSpecification<LocalTrack>> _pass1;
private Mock<IImportDecisionEngineSpecification<LocalTrack>> _pass2;
private Mock<IImportDecisionEngineSpecification<LocalTrack>> _pass3;
private Mock<IImportDecisionEngineSpecification<LocalBook>> _pass1;
private Mock<IImportDecisionEngineSpecification<LocalBook>> _pass2;
private Mock<IImportDecisionEngineSpecification<LocalBook>> _pass3;
private Mock<IImportDecisionEngineSpecification<LocalTrack>> _fail1;
private Mock<IImportDecisionEngineSpecification<LocalTrack>> _fail2;
private Mock<IImportDecisionEngineSpecification<LocalTrack>> _fail3;
private Mock<IImportDecisionEngineSpecification<LocalBook>> _fail1;
private Mock<IImportDecisionEngineSpecification<LocalBook>> _fail2;
private Mock<IImportDecisionEngineSpecification<LocalBook>> _fail3;
[SetUp]
public void Setup()
@ -60,13 +60,13 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
_albumfail2 = new Mock<IImportDecisionEngineSpecification<LocalAlbumRelease>>();
_albumfail3 = new Mock<IImportDecisionEngineSpecification<LocalAlbumRelease>>();
_pass1 = new Mock<IImportDecisionEngineSpecification<LocalTrack>>();
_pass2 = new Mock<IImportDecisionEngineSpecification<LocalTrack>>();
_pass3 = new Mock<IImportDecisionEngineSpecification<LocalTrack>>();
_pass1 = new Mock<IImportDecisionEngineSpecification<LocalBook>>();
_pass2 = new Mock<IImportDecisionEngineSpecification<LocalBook>>();
_pass3 = new Mock<IImportDecisionEngineSpecification<LocalBook>>();
_fail1 = new Mock<IImportDecisionEngineSpecification<LocalTrack>>();
_fail2 = new Mock<IImportDecisionEngineSpecification<LocalTrack>>();
_fail3 = new Mock<IImportDecisionEngineSpecification<LocalTrack>>();
_fail1 = new Mock<IImportDecisionEngineSpecification<LocalBook>>();
_fail2 = new Mock<IImportDecisionEngineSpecification<LocalBook>>();
_fail3 = new Mock<IImportDecisionEngineSpecification<LocalBook>>();
_albumpass1.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalAlbumRelease>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Accept());
_albumpass2.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalAlbumRelease>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Accept());
@ -76,13 +76,13 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
_albumfail2.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalAlbumRelease>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Reject("_albumfail2"));
_albumfail3.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalAlbumRelease>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Reject("_albumfail3"));
_pass1.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Accept());
_pass2.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Accept());
_pass3.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Accept());
_pass1.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Accept());
_pass2.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Accept());
_pass3.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Accept());
_fail1.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Reject("_fail1"));
_fail2.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Reject("_fail2"));
_fail3.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Reject("_fail3"));
_fail1.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Reject("_fail1"));
_fail2.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Reject("_fail2"));
_fail3.Setup(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>())).Returns(Decision.Reject("_fail3"));
_artist = Builder<Author>.CreateNew()
.With(e => e.QualityProfileId = 1)
@ -95,17 +95,17 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
_quality = new QualityModel(Quality.MP3_320);
_localTrack = new LocalTrack
_localTrack = new LocalBook
{
Artist = _artist,
Author = _artist,
Quality = _quality,
Album = new Book(),
Book = new Book(),
Path = @"C:\Test\Unsorted\The.Office.S03E115.DVDRip.XviD-OSiTV.avi".AsOsAgnostic()
};
_idOverrides = new IdentificationOverrides
{
Artist = _artist
Author = _artist
};
_idConfig = new ImportDecisionMakerConfig();
@ -113,8 +113,8 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
GivenAudioFiles(new List<string> { @"C:\Test\Unsorted\The.Office.S03E115.DVDRip.XviD-OSiTV.avi".AsOsAgnostic() });
Mocker.GetMock<IIdentificationService>()
.Setup(s => s.Identify(It.IsAny<List<LocalTrack>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns((List<LocalTrack> tracks, IdentificationOverrides idOverrides, ImportDecisionMakerConfig config) =>
.Setup(s => s.Identify(It.IsAny<List<LocalBook>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns((List<LocalBook> tracks, IdentificationOverrides idOverrides, ImportDecisionMakerConfig config) =>
{
var ret = new LocalAlbumRelease(tracks);
ret.Book = _album;
@ -146,10 +146,10 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
private void GivenAugmentationSuccess()
{
Mocker.GetMock<IAugmentingService>()
.Setup(s => s.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()))
.Callback<LocalTrack, bool>((localTrack, otherFiles) =>
.Setup(s => s.Augment(It.IsAny<LocalBook>(), It.IsAny<bool>()))
.Callback<LocalBook, bool>((localTrack, otherFiles) =>
{
localTrack.Album = _localTrack.Album;
localTrack.Book = _localTrack.Book;
});
}
@ -183,12 +183,12 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
Subject.GetImportDecisions(_fileInfos, null, itemInfo, _idConfig);
_fail1.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Once());
_fail2.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Once());
_fail3.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Once());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Once());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Once());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Once());
_fail1.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Once());
_fail2.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Once());
_fail3.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Once());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Once());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Once());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Once());
}
[Test]
@ -203,12 +203,12 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
Subject.GetImportDecisions(_fileInfos, null, itemInfo, _idConfig);
_fail1.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Never());
_fail2.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Never());
_fail3.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Never());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Never());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Never());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>()), Times.Never());
_fail1.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Never());
_fail2.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Never());
_fail3.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Never());
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Never());
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Never());
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<LocalBook>(), It.IsAny<DownloadClientItem>()), Times.Never());
}
[Test]
@ -283,7 +283,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
GivenSpecifications(_pass1);
Mocker.GetMock<IAugmentingService>()
.Setup(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()))
.Setup(c => c.Augment(It.IsAny<LocalBook>(), It.IsAny<bool>()))
.Throws<TestException>();
GivenAudioFiles(new[]
@ -296,7 +296,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig);
Mocker.GetMock<IAugmentingService>()
.Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
.Verify(c => c.Augment(It.IsAny<LocalBook>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
ExceptionVerification.ExpectedErrors(3);
}
@ -314,8 +314,8 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
});
Mocker.GetMock<IIdentificationService>()
.Setup(s => s.Identify(It.IsAny<List<LocalTrack>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns((List<LocalTrack> tracks, IdentificationOverrides idOverrides, ImportDecisionMakerConfig config) =>
.Setup(s => s.Identify(It.IsAny<List<LocalBook>>(), It.IsAny<IdentificationOverrides>(), It.IsAny<ImportDecisionMakerConfig>()))
.Returns((List<LocalBook> tracks, IdentificationOverrides idOverrides, ImportDecisionMakerConfig config) =>
{
return new List<LocalAlbumRelease> { new LocalAlbumRelease(tracks) };
});
@ -323,7 +323,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig);
Mocker.GetMock<IAugmentingService>()
.Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
.Verify(c => c.Augment(It.IsAny<LocalBook>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
decisions.Should().HaveCount(3);
decisions.First().Rejections.Should().NotBeEmpty();
@ -344,7 +344,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig);
Mocker.GetMock<IAugmentingService>()
.Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
.Verify(c => c.Augment(It.IsAny<LocalBook>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
decisions.Should().HaveCount(3);
decisions.First().Rejections.Should().NotBeEmpty();
@ -354,7 +354,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
public void should_return_a_decision_when_exception_is_caught()
{
Mocker.GetMock<IAugmentingService>()
.Setup(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()))
.Setup(c => c.Augment(It.IsAny<LocalBook>(), It.IsAny<bool>()))
.Throws<TestException>();
GivenAudioFiles(new[]

@ -4,20 +4,20 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.MediaFiles.TrackImport.Specifications;
using NzbDrone.Core.Music;
using NzbDrone.Core.MediaFiles.BookImport.Specifications;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Specifications
{
[TestFixture]
public class FreeSpaceSpecificationFixture : CoreTest<FreeSpaceSpecification>
{
private Author _artist;
private LocalTrack _localTrack;
private LocalBook _localTrack;
private string _rootFolder;
[SetUp]
@ -29,11 +29,11 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
.With(s => s.Path = Path.Combine(_rootFolder, "Alice in Chains"))
.Build();
_localTrack = new LocalTrack
_localTrack = new LocalBook
{
Path = @"C:\Test\Unsorted\Alice in Chains\Alice in Chains - track1.mp3".AsOsAgnostic(),
Album = new Book(),
Artist = _artist
Book = new Book(),
Author = _artist
};
}

@ -4,19 +4,19 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.MediaFiles.TrackImport.Specifications;
using NzbDrone.Core.Music;
using NzbDrone.Core.MediaFiles.BookImport.Specifications;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Specifications
{
[TestFixture]
public class NotUnpackingSpecificationFixture : CoreTest<NotUnpackingSpecification>
{
private LocalTrack _localTrack;
private LocalBook _localTrack;
[SetUp]
public void Setup()
@ -25,11 +25,11 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
.SetupGet(s => s.DownloadClientWorkingFolders)
.Returns("_UNPACK_|_FAILED_");
_localTrack = new LocalTrack
_localTrack = new LocalBook
{
Path = @"C:\Test\Unsorted Music\Kid.Rock\Kid.Rock.Cowboy.mp3".AsOsAgnostic(),
Size = 100,
Artist = Builder<Author>.CreateNew().Build()
Author = Builder<Author>.CreateNew().Build()
};
}

@ -2,24 +2,24 @@ using System.Collections.Generic;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.TrackImport.Specifications;
using NzbDrone.Core.Music;
using NzbDrone.Core.MediaFiles.BookImport.Specifications;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Specifications
{
[TestFixture]
public class SameFileSpecificationFixture : CoreTest<SameFileSpecification>
{
private LocalTrack _localTrack;
private LocalBook _localTrack;
[SetUp]
public void Setup()
{
_localTrack = Builder<LocalTrack>.CreateNew()
_localTrack = Builder<LocalBook>.CreateNew()
.With(l => l.Size = 150.Megabytes())
.Build();
}
@ -27,7 +27,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
[Test]
public void should_be_accepted_if_no_existing_file()
{
_localTrack.Album = Builder<Book>.CreateNew()
_localTrack.Book = Builder<Book>.CreateNew()
.Build();
Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue();
@ -61,7 +61,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
[Test]
public void should_be_accepted_if_file_size_is_different()
{
_localTrack.Album = Builder<Book>.CreateNew()
_localTrack.Book = Builder<Book>.CreateNew()
.With(e => e.BookFiles = new LazyLoaded<List<BookFile>>(
new List<BookFile>
{
@ -78,7 +78,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
[Test]
public void should_be_reject_if_file_size_is_the_same()
{
_localTrack.Album = Builder<Book>.CreateNew()
_localTrack.Book = Builder<Book>.CreateNew()
.With(e => e.BookFiles = new LazyLoaded<List<BookFile>>(
new List<BookFile>
{

@ -2,17 +2,17 @@ using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.TrackImport.Specifications;
using NzbDrone.Core.Music;
using NzbDrone.Core.MediaFiles.BookImport.Specifications;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Specifications
{
[TestFixture]
public class UpgradeSpecificationFixture : CoreTest<UpgradeSpecification>

@ -5,9 +5,9 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Books;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Music;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Test.Framework;
@ -18,14 +18,14 @@ namespace NzbDrone.Core.Test.MediaFiles
public class UpgradeMediaFileServiceFixture : CoreTest<UpgradeMediaFileService>
{
private BookFile _trackFile;
private LocalTrack _localTrack;
private LocalBook _localTrack;
private string _rootPath = @"C:\Test\Music\Artist".AsOsAgnostic();
[SetUp]
public void Setup()
{
_localTrack = new LocalTrack();
_localTrack.Artist = new Author
_localTrack = new LocalBook();
_localTrack.Author = new Author
{
Path = _rootPath
};
@ -53,7 +53,7 @@ namespace NzbDrone.Core.Test.MediaFiles
private void GivenSingleTrackWithSingleTrackFile()
{
_localTrack.Album = Builder<Book>.CreateNew()
_localTrack.Book = Builder<Book>.CreateNew()
.With(e => e.BookFiles = new LazyLoaded<List<BookFile>>(
new List<BookFile>
{
@ -71,7 +71,7 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenSingleTrackWithSingleTrackFile();
Subject.UpgradeTrackFile(_trackFile, _localTrack);
Subject.UpgradeBookFile(_trackFile, _localTrack);
Mocker.GetMock<IRecycleBinProvider>().Verify(v => v.DeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once());
}
@ -81,7 +81,7 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenSingleTrackWithSingleTrackFile();
Subject.UpgradeTrackFile(_trackFile, _localTrack);
Subject.UpgradeBookFile(_trackFile, _localTrack);
Mocker.GetMock<IMediaFileService>().Verify(v => v.Delete(It.IsAny<BookFile>(), DeleteMediaFileReason.Upgrade), Times.Once());
}
@ -95,7 +95,7 @@ namespace NzbDrone.Core.Test.MediaFiles
.Setup(c => c.FileExists(It.IsAny<string>()))
.Returns(false);
Subject.UpgradeTrackFile(_trackFile, _localTrack);
Subject.UpgradeBookFile(_trackFile, _localTrack);
// Mocker.GetMock<IMediaFileService>().Verify(v => v.Delete(_localTrack.Album.BookFiles.Value, DeleteMediaFileReason.Upgrade), Times.Once());
}
@ -109,7 +109,7 @@ namespace NzbDrone.Core.Test.MediaFiles
.Setup(c => c.FileExists(It.IsAny<string>()))
.Returns(false);
Subject.UpgradeTrackFile(_trackFile, _localTrack);
Subject.UpgradeBookFile(_trackFile, _localTrack);
Mocker.GetMock<IRecycleBinProvider>().Verify(v => v.DeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Never());
}
@ -119,18 +119,18 @@ namespace NzbDrone.Core.Test.MediaFiles
{
GivenSingleTrackWithSingleTrackFile();
Subject.UpgradeTrackFile(_trackFile, _localTrack).OldFiles.Count.Should().Be(1);
Subject.UpgradeBookFile(_trackFile, _localTrack).OldFiles.Count.Should().Be(1);
}
[Test]
[Ignore("Pending readarr fix")]
public void should_import_if_existing_file_doesnt_exist_in_db()
{
_localTrack.Album = Builder<Book>.CreateNew()
_localTrack.Book = Builder<Book>.CreateNew()
.With(e => e.BookFiles = new LazyLoaded<List<BookFile>>())
.Build();
Subject.UpgradeTrackFile(_trackFile, _localTrack);
Subject.UpgradeBookFile(_trackFile, _localTrack);
// Mocker.GetMock<IMediaFileService>().Verify(v => v.Delete(_localTrack.Album.BookFiles.Value, It.IsAny<DeleteMediaFileReason>()), Times.Never());
}

@ -8,8 +8,8 @@ using NUnit.Framework;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.IndexerSearch;
using NzbDrone.Core.MediaFiles.BookImport.Manual;
using NzbDrone.Core.MediaFiles.Commands;
using NzbDrone.Core.MediaFiles.TrackImport.Manual;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Update.Commands;
using NzbDrone.Test.Common;
@ -27,8 +27,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
[Test]
public void should_return_true_when_there_are_no_properties()
{
var command1 = new DownloadedAlbumsScanCommand();
var command2 = new DownloadedAlbumsScanCommand();
var command1 = new DownloadedBooksScanCommand();
var command2 = new DownloadedBooksScanCommand();
CommandEqualityComparer.Instance.Equals(command1, command2).Should().BeTrue();
}
@ -36,8 +36,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
[Test]
public void should_return_true_when_single_property_matches()
{
var command1 = new AlbumSearchCommand { BookIds = new List<int> { 1 } };
var command2 = new AlbumSearchCommand { BookIds = new List<int> { 1 } };
var command1 = new BookSearchCommand { BookIds = new List<int> { 1 } };
var command2 = new BookSearchCommand { BookIds = new List<int> { 1 } };
CommandEqualityComparer.Instance.Equals(command1, command2).Should().BeTrue();
}
@ -45,8 +45,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
[Test]
public void should_return_false_when_single_property_doesnt_match()
{
var command1 = new AlbumSearchCommand { BookIds = new List<int> { 1 } };
var command2 = new AlbumSearchCommand { BookIds = new List<int> { 2 } };
var command1 = new BookSearchCommand { BookIds = new List<int> { 1 } };
var command2 = new BookSearchCommand { BookIds = new List<int> { 2 } };
CommandEqualityComparer.Instance.Equals(command1, command2).Should().BeFalse();
}
@ -54,8 +54,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
[Test]
public void should_return_false_when_only_one_has_properties()
{
var command1 = new ArtistSearchCommand();
var command2 = new ArtistSearchCommand { AuthorId = 2 };
var command1 = new AuthorSearchCommand();
var command2 = new AuthorSearchCommand { AuthorId = 2 };
CommandEqualityComparer.Instance.Equals(command1, command2).Should().BeFalse();
}
@ -63,8 +63,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
[Test]
public void should_return_false_when_only_one_has_null_property()
{
var command1 = new AlbumSearchCommand(null);
var command2 = new AlbumSearchCommand(new List<int>());
var command1 = new BookSearchCommand(null);
var command2 = new BookSearchCommand(new List<int>());
CommandEqualityComparer.Instance.Equals(command1, command2).Should().BeFalse();
}
@ -78,8 +78,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
[Test]
public void should_return_false_when_commands_list_are_different_lengths()
{
var command1 = new AlbumSearchCommand { BookIds = new List<int> { 1 } };
var command2 = new AlbumSearchCommand { BookIds = new List<int> { 1, 2 } };
var command1 = new BookSearchCommand { BookIds = new List<int> { 1 } };
var command2 = new BookSearchCommand { BookIds = new List<int> { 1, 2 } };
CommandEqualityComparer.Instance.Equals(command1, command2).Should().BeFalse();
}
@ -87,8 +87,8 @@ namespace NzbDrone.Core.Test.Messaging.Commands
[Test]
public void should_return_false_when_commands_list_dont_match()
{
var command1 = new AlbumSearchCommand { BookIds = new List<int> { 1 } };
var command2 = new AlbumSearchCommand { BookIds = new List<int> { 2 } };
var command1 = new BookSearchCommand { BookIds = new List<int> { 1 } };
var command2 = new BookSearchCommand { BookIds = new List<int> { 2 } };
CommandEqualityComparer.Instance.Equals(command1, command2).Should().BeFalse();
}

@ -1,10 +1,10 @@
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books.Commands;
using NzbDrone.Core.Download;
using NzbDrone.Core.ImportLists;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Music.Commands;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Update.Commands;
@ -131,7 +131,7 @@ namespace NzbDrone.Core.Test.Messaging.Commands
var newCommandModel = Builder<CommandModel>
.CreateNew()
.With(c => c.Name = "RefreshArtist")
.With(c => c.Body = new RefreshArtistCommand())
.With(c => c.Body = new RefreshAuthorCommand())
.Build();
Subject.Add(newCommandModel);
@ -168,7 +168,7 @@ namespace NzbDrone.Core.Test.Messaging.Commands
var newCommandModel = Builder<CommandModel>
.CreateNew()
.With(c => c.Name = "RefreshArtist")
.With(c => c.Body = new RefreshArtistCommand())
.With(c => c.Body = new RefreshAuthorCommand())
.Build();
Subject.Add(newCommandModel);

@ -2,8 +2,8 @@ using System.Collections.Generic;
using System.Linq;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Music;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.MetadataSource
@ -30,7 +30,7 @@ namespace NzbDrone.Core.Test.MetadataSource
WithSeries("Talking Dead");
WithSeries("The Walking Dead");
_artist.Sort(new SearchArtistComparer("the walking dead"));
_artist.Sort(new SearchAuthorComparer("the walking dead"));
_artist.First().Name.Should().Be("The Walking Dead");
}
@ -41,7 +41,7 @@ namespace NzbDrone.Core.Test.MetadataSource
WithSeries("Talking Dead");
WithSeries("The Walking Dead");
_artist.Sort(new SearchArtistComparer("walking dead"));
_artist.Sort(new SearchAuthorComparer("walking dead"));
_artist.First().Name.Should().Be("The Walking Dead");
}
@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.MetadataSource
WithSeries("The Blacklist");
WithSeries("Blacklist");
_artist.Sort(new SearchArtistComparer("blacklist"));
_artist.Sort(new SearchAuthorComparer("blacklist"));
_artist.First().Name.Should().Be("Blacklist");
}
@ -63,7 +63,7 @@ namespace NzbDrone.Core.Test.MetadataSource
WithSeries("Blacklist");
WithSeries("The Blacklist");
_artist.Sort(new SearchArtistComparer("the blacklist"));
_artist.Sort(new SearchAuthorComparer("the blacklist"));
_artist.First().Name.Should().Be("The Blacklist");
}

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

Loading…
Cancel
Save