using System.IO; using System.Net; using FizzWare.NBuilder; using Moq; using NUnit.Framework; using NzbDrone.Common; 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; namespace NzbDrone.Core.Test.JobTests { [TestFixture] // ReSharper disable InconsistentNaming public class BannerDownloadJobTest : CoreTest { private ProgressNotification _notification; [SetUp] public void Setup() { _notification = new ProgressNotification("Test"); WithTempAsAppPath(); } private void WithSuccessfulDownload() { Mocker.GetMock() .Setup(s => s.Download(It.IsAny())) .Returns(true); } private void WithFailedDownload() { Mocker.GetMock() .Setup(s => s.Download(It.IsAny())) .Returns(false); } private void VerifyDownloadMock(int times) { Mocker.GetMock().Verify(v => v.Download(It.IsAny()), Times.Exactly(times)); } [Test] public void Start_should_download_banners_for_all_series_when_no_targetId_is_passed_in() { WithSuccessfulDownload(); var series = Builder.CreateListOfSize(5) .Build(); Mocker.GetMock().Setup(s => s.GetAllSeries()) .Returns(series); Mocker.Resolve().Start(_notification, null); VerifyDownloadMock(series.Count); } [Test] public void Start_should_only_attempt_to_download_for_series_with_banner_url() { WithSuccessfulDownload(); var series = Builder.CreateListOfSize(5) .TheFirst(2) .With(s => s.BannerUrl = null) .Build(); Mocker.GetMock().Setup(s => s.GetAllSeries()) .Returns(series); Mocker.Resolve().Start(_notification, null); VerifyDownloadMock(3); } [Test] public void Start_should_download_single_banner_when_seriesId_is_passed_in() { WithSuccessfulDownload(); var series = Builder.CreateNew() .Build(); Mocker.GetMock().Setup(s => s.GetSeries(series.SeriesId)) .Returns(series); Mocker.Resolve().Start(_notification, new { SeriesId = series.SeriesId }); VerifyDownloadMock(1); } } }