You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readarr/NzbDrone.Core.Test/JobTests/RecentBacklogSearchJobTest.cs

92 lines
3.1 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using FizzWare.NBuilder;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Jobs;
using NzbDrone.Core.Model.Notification;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common.AutoMoq;
namespace NzbDrone.Core.Test.JobTests
{
[TestFixture]
public class RecentBacklogSearchJobTest : CoreTest
{
private void WithEnableBacklogSearching()
{
Mocker.GetMock<ConfigProvider>().SetupGet(s => s.EnableBacklogSearching).Returns(true);
}
[SetUp]
public void Setup()
{
}
[Test]
public void no_missing_epsiodes_should_not_trigger_any_search()
{
//Setup
var episodes = new List<Episode>();
Mocker.GetMock<EpisodeProvider>()
.Setup(s => s.EpisodesWithoutFiles(true)).Returns(episodes);
//Act
Mocker.Resolve<RecentBacklogSearchJob>().Start(MockNotification, 0, 0);
//Assert
Mocker.GetMock<EpisodeSearchJob>().Verify(c => c.Start(MockNotification, It.IsAny<int>(), 0),
Times.Never());
}
[Test]
public void should_only_process_missing_episodes_from_the_last_30_days()
{
WithEnableBacklogSearching();
//Setup
var episodes = Builder<Episode>.CreateListOfSize(50)
.TheFirst(5)
.With(e => e.AirDate = DateTime.Today)
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-1)) //Today
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-5)) //Yeserday
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-10))
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-15))
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-20))
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-25))
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-30))
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-31)) //31 Days
.TheNext(5)
.With(e => e.AirDate = DateTime.Today.AddDays(-35))
.Build();
Mocker.GetMock<EpisodeProvider>()
.Setup(s => s.EpisodesWithoutFiles(true)).Returns(episodes);
Mocker.GetMock<EpisodeSearchJob>().Setup(c => c.Start(It.IsAny<ProgressNotification>(), It.IsAny<int>(), 0));
//Act
Mocker.Resolve<RecentBacklogSearchJob>().Start(MockNotification, 0, 0);
//Assert
Mocker.GetMock<EpisodeSearchJob>().Verify(c => c.Start(It.IsAny<ProgressNotification>(), It.IsAny<int>(), 0),
Times.Exactly(40));
}
}
}