using System; using System.Collections.Generic; using System.Linq; using System.Text; using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Tv; namespace NzbDrone.Core.Test.TvTests.SeasonServiceTests { [TestFixture] public class SetSeasonPassFixture : CoreTest { private const Int32 SERIES_ID = 1; private List _seasons; [SetUp] public void Setup() { _seasons = Builder.CreateListOfSize(5) .All() .With(s => s.SeriesId = SERIES_ID) .Build() .ToList(); Mocker.GetMock() .Setup(s => s.GetSeasonBySeries(It.IsAny())) .Returns(_seasons); } [Test] public void should_updateMany() { Subject.SetSeasonPass(SERIES_ID, 1); Mocker.GetMock() .Verify(v => v.UpdateMany(It.IsAny>()), Times.Once()); } [Test] public void should_set_lower_seasons_to_false() { const int seasonNumber = 3; var result = Subject.SetSeasonPass(SERIES_ID, seasonNumber); result.Where(s => s.SeasonNumber < seasonNumber).Should().OnlyContain(s => s.Monitored == false); } [Test] public void should_set_equal_or_higher_seasons_to_false() { const int seasonNumber = 3; var result = Subject.SetSeasonPass(SERIES_ID, seasonNumber); result.Where(s => s.SeasonNumber >= seasonNumber).Should().OnlyContain(s => s.Monitored == true); } [Test] public void should_set_episodes_in_lower_seasons_to_false() { const int seasonNumber = 3; Subject.SetSeasonPass(SERIES_ID, seasonNumber); Mocker.GetMock() .Verify(v => v.SetEpisodeMonitoredBySeason(SERIES_ID, It.Is(i => i < seasonNumber), false), Times.AtLeastOnce()); Mocker.GetMock() .Verify(v => v.SetEpisodeMonitoredBySeason(SERIES_ID, It.Is(i => i < seasonNumber), true), Times.Never()); } [Test] public void should_set_episodes_in_equal_or_higher_seasons_to_false() { const int seasonNumber = 3; Subject.SetSeasonPass(SERIES_ID, seasonNumber); Mocker.GetMock() .Verify(v => v.SetEpisodeMonitoredBySeason(SERIES_ID, It.Is(i => i >= seasonNumber), true), Times.AtLeastOnce()); Mocker.GetMock() .Verify(v => v.SetEpisodeMonitoredBySeason(SERIES_ID, It.Is(i => i >= seasonNumber), false), Times.Never()); } } }