@ -34,11 +34,7 @@ namespace NzbDrone.Core.Test.Download
. With ( h = > h . Title = "Drone.S01E01.HDTV" )
. Build ( ) ;
var remoteEpisode = new RemoteEpisode
{
Series = new Series ( ) ,
Episodes = new List < Episode > { new Episode { Id = 1 } }
} ;
var remoteEpisode = BuildRemoteEpisode ( ) ;
_trackedDownload = Builder < TrackedDownload > . CreateNew ( )
. With ( c = > c . State = TrackedDownloadStage . Downloading )
@ -65,6 +61,16 @@ namespace NzbDrone.Core.Test.Download
}
private RemoteEpisode BuildRemoteEpisode ( )
{
return new RemoteEpisode
{
Series = new Series ( ) ,
Episodes = new List < Episode > { new Episode { Id = 1 } }
} ;
}
private void GivenNoGrabbedHistory ( )
{
Mocker . GetMock < IHistoryService > ( )
@ -82,6 +88,24 @@ namespace NzbDrone.Core.Test.Download
} ) ;
}
private void GivenABadlyNamedDownload ( )
{
_trackedDownload . DownloadItem . DownloadId = "1234" ;
_trackedDownload . DownloadItem . Title = "Droned Pilot" ; // Set a badly named download
Mocker . GetMock < IHistoryService > ( )
. Setup ( s = > s . MostRecentForDownloadId ( It . Is < string > ( i = > i = = "1234" ) ) )
. Returns ( new History . History ( ) { SourceTitle = "Droned S01E01" } ) ;
Mocker . GetMock < IParsingService > ( )
. Setup ( s = > s . GetSeries ( It . IsAny < string > ( ) ) )
. Returns ( ( Series ) null ) ;
Mocker . GetMock < IParsingService > ( )
. Setup ( s = > s . GetSeries ( "Droned S01E01" ) )
. Returns ( BuildRemoteEpisode ( ) . Series ) ;
}
private void GivenSeriesMatch ( )
{
Mocker . GetMock < IParsingService > ( )
@ -284,6 +308,47 @@ namespace NzbDrone.Core.Test.Download
AssertNoCompletedDownload ( ) ;
}
[Test]
public void should_mark_as_imported_if_the_download_can_be_tracked_using_the_source_seriesid ( )
{
GivenABadlyNamedDownload ( ) ;
Mocker . GetMock < IDownloadedEpisodesImportService > ( )
. Setup ( v = > v . ProcessPath ( It . IsAny < string > ( ) , It . IsAny < Series > ( ) , It . IsAny < DownloadClientItem > ( ) ) )
. Returns ( new List < ImportResult >
{
new ImportResult ( new ImportDecision ( new LocalEpisode { Path = @"C:\TestPath\Droned.S01E01.mkv" } ) )
} ) ;
Mocker . GetMock < ISeriesService > ( )
. Setup ( v = > v . GetSeries ( It . IsAny < int > ( ) ) )
. Returns ( BuildRemoteEpisode ( ) . Series ) ;
Subject . Process ( _trackedDownload ) ;
AssertCompletedDownload ( ) ;
}
[Test]
public void should_not_mark_as_imported_if_the_download_cannot_be_tracked_using_the_source_title_as_it_was_initiated_externally ( )
{
GivenABadlyNamedDownload ( ) ;
Mocker . GetMock < IDownloadedEpisodesImportService > ( )
. Setup ( v = > v . ProcessPath ( It . IsAny < string > ( ) , It . IsAny < Series > ( ) , It . IsAny < DownloadClientItem > ( ) ) )
. Returns ( new List < ImportResult >
{
new ImportResult ( new ImportDecision ( new LocalEpisode { Path = @"C:\TestPath\Droned.S01E01.mkv" } ) )
} ) ;
Mocker . GetMock < IHistoryService > ( )
. Setup ( s = > s . MostRecentForDownloadId ( It . Is < string > ( i = > i = = "1234" ) ) ) ;
Subject . Process ( _trackedDownload ) ;
AssertNoCompletedDownload ( ) ;
}
[Test]
public void should_not_import_when_there_is_a_title_mismatch ( )
{