diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
index 2e7790ae8..52e2d0867 100644
--- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
+++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
@@ -233,6 +233,7 @@
+
diff --git a/src/NzbDrone.Core.Test/TvTests/RefreshSeriesServiceFixture.cs b/src/NzbDrone.Core.Test/TvTests/RefreshSeriesServiceFixture.cs
new file mode 100644
index 000000000..7e263b235
--- /dev/null
+++ b/src/NzbDrone.Core.Test/TvTests/RefreshSeriesServiceFixture.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using FizzWare.NBuilder;
+using FluentAssertions;
+using Moq;
+using NUnit.Framework;
+using NzbDrone.Core.MetadataSource;
+using NzbDrone.Core.Test.Framework;
+using NzbDrone.Core.Tv;
+using NzbDrone.Core.Tv.Commands;
+using NzbDrone.Test.Common;
+
+namespace NzbDrone.Core.Test.TvTests
+{
+ [TestFixture]
+ public class RefreshSeriesServiceFixture : CoreTest
+ {
+ private Series _series;
+
+ [SetUp]
+ public void Setup()
+ {
+ var season1 = Builder.CreateNew()
+ .With(s => s.SeasonNumber = 1)
+ .Build();
+
+ _series = Builder.CreateNew()
+ .With(s => s.Seasons = new List
+ {
+ season1
+ })
+ .Build();
+
+ Mocker.GetMock()
+ .Setup(s => s.GetSeries(_series.Id))
+ .Returns(_series);
+
+
+ }
+
+ private void GivenNewSeriesInfo(Series series)
+ {
+ Mocker.GetMock()
+ .Setup(s => s.GetSeriesInfo(It.IsAny()))
+ .Returns(new Tuple>(series, new List()));
+ }
+
+ [Test]
+ public void should_monitor_new_seasons_automatically()
+ {
+ var series = _series.JsonClone();
+ series.Seasons.Add(Builder.CreateNew()
+ .With(s => s.SeasonNumber = 2)
+ .Build());
+
+ GivenNewSeriesInfo(series);
+
+ Subject.Execute(new RefreshSeriesCommand(_series.Id));
+
+ Mocker.GetMock()
+ .Verify(v => v.UpdateSeries(It.Is(s => s.Seasons.Count == 2 && s.Seasons.Single(season => season.SeasonNumber == 2).Monitored == true)));
+ }
+
+ [Test]
+ public void should_not_monitor_new_special_season_automatically()
+ {
+ var series = _series.JsonClone();
+ series.Seasons.Add(Builder.CreateNew()
+ .With(s => s.SeasonNumber = 0)
+ .Build());
+
+ GivenNewSeriesInfo(series);
+
+ Subject.Execute(new RefreshSeriesCommand(_series.Id));
+
+ Mocker.GetMock()
+ .Verify(v => v.UpdateSeries(It.Is(s => s.Seasons.Count == 2 && s.Seasons.Single(season => season.SeasonNumber == 0).Monitored == false)));
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/Tv/RefreshSeriesService.cs b/src/NzbDrone.Core/Tv/RefreshSeriesService.cs
index 81b2f6ae8..5390d0502 100644
--- a/src/NzbDrone.Core/Tv/RefreshSeriesService.cs
+++ b/src/NzbDrone.Core/Tv/RefreshSeriesService.cs
@@ -101,6 +101,12 @@ namespace NzbDrone.Core.Tv
//Todo: Should this should use the previous season's monitored state?
if (existingSeason == null)
{
+ if (season.SeasonNumber == 0)
+ {
+ season.Monitored = false;
+ continue;
+ }
+
_logger.Debug("New season ({0}) for series: [{1}] {2}, setting monitored to true", season.SeasonNumber, series.TvdbId, series.Title);
season.Monitored = true;
}