mirror of https://github.com/Sonarr/Sonarr
Fixed an issue with auto unmonitor episodes
This commit is contained in:
parent
c354ed230f
commit
7ae7c488f3
|
@ -183,6 +183,7 @@
|
|||
<Compile Include="ProviderTests\RecycleBinProviderTests\DeleteFileFixture.cs" />
|
||||
<Compile Include="ProviderTests\RecycleBinProviderTests\DeleteDirectoryFixture.cs" />
|
||||
<Compile Include="NotificationTests\PlexProviderTest.cs" />
|
||||
<Compile Include="TvTests\EpisodeProviderTests\HandleEpisodeFileDeletedFixture.cs" />
|
||||
<Compile Include="TvTests\EpisodeRepositoryTests\EpisodesRepositoryReadFixture.cs" />
|
||||
<Compile Include="TvTests\EpisodeRepositoryTests\EpisodesWithoutFilesFixture.cs" />
|
||||
<Compile Include="TvTests\EpisodeRepositoryTests\EpisodesBetweenDatesFixture.cs" />
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using FizzWare.NBuilder;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.MediaFiles;
|
||||
using NzbDrone.Core.MediaFiles.Events;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
|
||||
namespace NzbDrone.Core.Test.TvTests.EpisodeProviderTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class HandleEpisodeFileDeletedFixture : CoreTest<EpisodeService>
|
||||
{
|
||||
private EpisodeFile _episodeFile;
|
||||
private List<Episode> _episodes;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_episodeFile = Builder<EpisodeFile>
|
||||
.CreateNew()
|
||||
.Build();
|
||||
}
|
||||
|
||||
private void GivenSingleEpisodeFile()
|
||||
{
|
||||
_episodes = Builder<Episode>
|
||||
.CreateListOfSize(1)
|
||||
.All()
|
||||
.With(e => e.Monitored = true)
|
||||
.Build()
|
||||
.ToList();
|
||||
|
||||
Mocker.GetMock<IEpisodeRepository>()
|
||||
.Setup(s => s.GetEpisodeByFileId(_episodeFile.Id))
|
||||
.Returns(_episodes);
|
||||
}
|
||||
|
||||
private void GivenMultiEpisodeFile()
|
||||
{
|
||||
_episodes = Builder<Episode>
|
||||
.CreateListOfSize(2)
|
||||
.All()
|
||||
.With(e => e.Monitored = true)
|
||||
.Build()
|
||||
.ToList();
|
||||
|
||||
Mocker.GetMock<IEpisodeRepository>()
|
||||
.Setup(s => s.GetEpisodeByFileId(_episodeFile.Id))
|
||||
.Returns(_episodes);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_set_EpisodeFileId_to_zero()
|
||||
{
|
||||
GivenSingleEpisodeFile();
|
||||
|
||||
Subject.Handle(new EpisodeFileDeletedEvent(_episodeFile));
|
||||
|
||||
Mocker.GetMock<IEpisodeRepository>()
|
||||
.Verify(v => v.Update(It.Is<Episode>(e => e.EpisodeFileId == 0)), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_update_each_episode_for_file()
|
||||
{
|
||||
GivenMultiEpisodeFile();
|
||||
|
||||
Subject.Handle(new EpisodeFileDeletedEvent(_episodeFile));
|
||||
|
||||
Mocker.GetMock<IEpisodeRepository>()
|
||||
.Verify(v => v.Update(It.Is<Episode>(e => e.EpisodeFileId == 0)), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_set_monitored_to_false_if_autoUnmonitor_is_true()
|
||||
{
|
||||
GivenSingleEpisodeFile();
|
||||
|
||||
Mocker.GetMock<IConfigService>()
|
||||
.SetupGet(s => s.AutoUnmonitorPreviouslyDownloadedEpisodes)
|
||||
.Returns(true);
|
||||
|
||||
Subject.Handle(new EpisodeFileDeletedEvent(_episodeFile));
|
||||
|
||||
Mocker.GetMock<IEpisodeRepository>()
|
||||
.Verify(v => v.Update(It.Is<Episode>(e => e.Monitored == false)), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_leave_monitored_to_true_if_autoUnmonitor_is_false()
|
||||
{
|
||||
GivenSingleEpisodeFile();
|
||||
|
||||
Mocker.GetMock<IConfigService>()
|
||||
.SetupGet(s => s.AutoUnmonitorPreviouslyDownloadedEpisodes)
|
||||
.Returns(false);
|
||||
|
||||
Subject.Handle(new EpisodeFileDeletedEvent(_episodeFile));
|
||||
|
||||
Mocker.GetMock<IEpisodeRepository>()
|
||||
.Verify(v => v.Update(It.Is<Episode>(e => e.Monitored == true)), Times.Once());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -182,7 +182,12 @@ namespace NzbDrone.Core.Tv
|
|||
{
|
||||
_logger.Trace("Detaching episode {0} from file.", episode.Id);
|
||||
episode.EpisodeFileId = 0;
|
||||
episode.Monitored = _configService.AutoUnmonitorPreviouslyDownloadedEpisodes;
|
||||
|
||||
if (_configService.AutoUnmonitorPreviouslyDownloadedEpisodes)
|
||||
{
|
||||
episode.Monitored = false;
|
||||
}
|
||||
|
||||
UpdateEpisode(episode);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue