mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-21 14:03:29 -07:00
Fixed Renaming of episodes to include extension.
PostDownload Importing setup, need to setup job for period scan.
This commit is contained in:
parent
96670d0567
commit
560706ae8f
15 changed files with 807 additions and 312 deletions
|
@ -1,6 +1,7 @@
|
|||
// ReSharper disable RedundantUsingDirective
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq.Expressions;
|
||||
using System.Linq;
|
||||
using AutoMoq;
|
||||
|
@ -8,6 +9,7 @@ using FizzWare.NBuilder;
|
|||
using FluentAssertions;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Model.Notification;
|
||||
using NzbDrone.Core.Providers;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
|
@ -132,7 +134,6 @@ namespace NzbDrone.Core.Test
|
|||
Assert.AreNotEqual(new DateTime(), result.DateAdded);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
[Description("Verifies that a new file imported properly")]
|
||||
public void import_existing_season_file()
|
||||
|
@ -165,7 +166,6 @@ namespace NzbDrone.Core.Test
|
|||
result.Should().BeNull();
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
[Description("Verifies that a un-parsable file isn't imported")]
|
||||
public void import_unparsable_file()
|
||||
|
@ -251,7 +251,6 @@ namespace NzbDrone.Core.Test
|
|||
var fakeSeries = Builder<Series>.CreateNew().Build();
|
||||
|
||||
//Mocks
|
||||
|
||||
var mocker = new AutoMoqer();
|
||||
mocker.GetMock<IRepository>(MockBehavior.Strict)
|
||||
.Setup(r => r.Exists(It.IsAny<Expression<Func<EpisodeFile, Boolean>>>())).Returns(true).Verifiable();
|
||||
|
@ -361,5 +360,120 @@ namespace NzbDrone.Core.Test
|
|||
|
||||
result.Should().HaveSameCount(firstSeriesFiles);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Description("Verifies that a new download will import successfully")]
|
||||
public void import_new_download_success()
|
||||
{
|
||||
//Fakes
|
||||
var fakeSeries = Builder<Series>.CreateNew()
|
||||
.With(s => s.Title = "30 Rock")
|
||||
.With(s => s.Path = @"C:\Test\TV\30 Rock")
|
||||
.Build();
|
||||
|
||||
var fakeEpisode = Builder<Episode>.CreateNew()
|
||||
.With(e => e.SeriesId = fakeSeries.SeriesId)
|
||||
.With(e => e.EpisodeFileId = 0)
|
||||
.With(e => e.SeasonNumber = 1)
|
||||
.With(e => e.EpisodeNumber = 5)
|
||||
.Build();
|
||||
|
||||
//Mocks
|
||||
var mocker = new AutoMoqer();
|
||||
|
||||
var diskProvider = mocker.GetMock<DiskProvider>();
|
||||
diskProvider.Setup(d => d.GetFiles(It.IsAny<string>(), "*.*", SearchOption.AllDirectories)).Returns(new string[] { @"C:\Test\30 Rock - 1x05 - Episode Title\30.Rock.S01E05.Gibberish.XviD.avi" });
|
||||
diskProvider.Setup(d => d.GetSize(It.IsAny<string>())).Returns(90000000000);
|
||||
diskProvider.Setup(d => d.CreateDirectory(It.IsAny<string>())).Returns("ok");
|
||||
diskProvider.Setup(d => d.RenameFile(It.IsAny<string>(), It.IsAny<string>()));
|
||||
diskProvider.Setup(d => d.GetExtension(It.IsAny<string>())).Returns(".avi");
|
||||
|
||||
var episodeProvider = mocker.GetMock<EpisodeProvider>();
|
||||
episodeProvider.Setup(e => e.GetEpisodes(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> {fakeEpisode});
|
||||
episodeProvider.Setup(e => e.GetEpisode(fakeSeries.SeriesId, 1, 5)).Returns(fakeEpisode);
|
||||
|
||||
var configProvider = mocker.GetMock<ConfigProvider>();
|
||||
configProvider.SetupGet(c => c.UseSeasonFolder).Returns(true);
|
||||
configProvider.SetupGet(c => c.SeasonFolderFormat).Returns(@"Season %0s");
|
||||
configProvider.SetupGet(c => c.SeriesName).Returns(true);
|
||||
configProvider.SetupGet(c => c.EpisodeName).Returns(true);
|
||||
configProvider.SetupGet(c => c.AppendQuality).Returns(true);
|
||||
configProvider.SetupGet(c => c.SeparatorStyle).Returns(0);
|
||||
configProvider.SetupGet(c => c.NumberStyle).Returns(2);
|
||||
configProvider.SetupGet(c => c.ReplaceSpaces).Returns(false);
|
||||
|
||||
var repo = mocker.GetMock<IRepository>();
|
||||
repo.Setup(r => r.Exists(It.IsAny<Expression<Func<EpisodeFile, Boolean>>>())).Returns(false).Verifiable();
|
||||
repo.Setup(r => r.Add<EpisodeFile>(It.IsAny<EpisodeFile>())).Returns(1);
|
||||
|
||||
//Act
|
||||
var result = mocker.Resolve<MediaFileProvider>().ImportNewFiles(@"C:\Test\30 Rock - 1x05 - Episode Title", fakeSeries);
|
||||
|
||||
//Assert
|
||||
mocker.VerifyAllMocks();
|
||||
Assert.AreEqual(1, result.Count);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Description("Verifies that a new download will import successfully, deletes previous episode")]
|
||||
public void import_new_download_success_delete_equal_quality()
|
||||
{
|
||||
//Fakes
|
||||
var fakeSeries = Builder<Series>.CreateNew()
|
||||
.With(s => s.Title = "30 Rock")
|
||||
.With(s => s.Path = @"C:\Test\TV\30 Rock")
|
||||
.Build();
|
||||
|
||||
var fakeEpisode = Builder<Episode>.CreateNew()
|
||||
.With(e => e.SeriesId = fakeSeries.SeriesId)
|
||||
.With(e => e.SeasonNumber = 1)
|
||||
.With(e => e.EpisodeNumber = 5)
|
||||
.With(e => e.EpisodeFileId = 1)
|
||||
.Build();
|
||||
|
||||
var fakeEpisodeFile = Builder<EpisodeFile>.CreateNew()
|
||||
.With(e => e.SeriesId = fakeSeries.SeriesId)
|
||||
.With(e => e.EpisodeFileId = 1)
|
||||
.With(e => e.Quality = QualityTypes.SDTV)
|
||||
.With(e => e.Episodes = new List<Episode>{ fakeEpisode })
|
||||
.Build();
|
||||
|
||||
fakeEpisode.EpisodeFile = fakeEpisodeFile;
|
||||
|
||||
//Mocks
|
||||
var mocker = new AutoMoqer();
|
||||
|
||||
var diskProvider = mocker.GetMock<DiskProvider>();
|
||||
diskProvider.Setup(d => d.GetFiles(It.IsAny<string>(), "*.*", SearchOption.AllDirectories)).Returns(new string[] { @"C:\Test\30 Rock - 1x05 - Episode Title\30.Rock.S01E05.Gibberish.XviD.avi" });
|
||||
diskProvider.Setup(d => d.GetSize(It.IsAny<string>())).Returns(90000000000);
|
||||
diskProvider.Setup(d => d.CreateDirectory(It.IsAny<string>())).Returns("ok");
|
||||
diskProvider.Setup(d => d.RenameFile(It.IsAny<string>(), It.IsAny<string>()));
|
||||
diskProvider.Setup(d => d.GetExtension(It.IsAny<string>())).Returns(".avi");
|
||||
|
||||
var episodeProvider = mocker.GetMock<EpisodeProvider>();
|
||||
episodeProvider.Setup(e => e.GetEpisodes(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> { fakeEpisode });
|
||||
episodeProvider.Setup(e => e.GetEpisode(fakeSeries.SeriesId, 1, 5)).Returns(fakeEpisode);
|
||||
|
||||
var configProvider = mocker.GetMock<ConfigProvider>();
|
||||
configProvider.SetupGet(c => c.UseSeasonFolder).Returns(true);
|
||||
configProvider.SetupGet(c => c.SeasonFolderFormat).Returns(@"Season %0s");
|
||||
configProvider.SetupGet(c => c.SeriesName).Returns(true);
|
||||
configProvider.SetupGet(c => c.EpisodeName).Returns(true);
|
||||
configProvider.SetupGet(c => c.AppendQuality).Returns(true);
|
||||
configProvider.SetupGet(c => c.SeparatorStyle).Returns(0);
|
||||
configProvider.SetupGet(c => c.NumberStyle).Returns(2);
|
||||
configProvider.SetupGet(c => c.ReplaceSpaces).Returns(false);
|
||||
|
||||
var repo = mocker.GetMock<IRepository>();
|
||||
repo.Setup(r => r.Exists(It.IsAny<Expression<Func<EpisodeFile, Boolean>>>())).Returns(false).Verifiable();
|
||||
repo.Setup(r => r.Add<EpisodeFile>(It.IsAny<EpisodeFile>())).Returns(1);
|
||||
|
||||
//Act
|
||||
var result = mocker.Resolve<MediaFileProvider>().ImportNewFiles(@"C:\Test\30 Rock - 1x05 - Episode Title", fakeSeries);
|
||||
|
||||
//Assert
|
||||
mocker.VerifyAllMocks();
|
||||
Assert.AreEqual(1, result.Count);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue