Fixed: Refreshing series that have duplicate season information
This commit is contained in:
parent
54fda3d648
commit
319b4f13b7
|
@ -135,5 +135,50 @@ namespace NzbDrone.Core.Test.TvTests
|
|||
|
||||
ExceptionVerification.ExpectedWarns(1);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_throw_if_duplicate_season_is_in_existing_info()
|
||||
{
|
||||
var newSeriesInfo = _series.JsonClone();
|
||||
newSeriesInfo.Seasons.Add(Builder<Season>.CreateNew()
|
||||
.With(s => s.SeasonNumber = 2)
|
||||
.Build());
|
||||
|
||||
_series.Seasons.Add(Builder<Season>.CreateNew()
|
||||
.With(s => s.SeasonNumber = 2)
|
||||
.Build());
|
||||
|
||||
_series.Seasons.Add(Builder<Season>.CreateNew()
|
||||
.With(s => s.SeasonNumber = 2)
|
||||
.Build());
|
||||
|
||||
GivenNewSeriesInfo(newSeriesInfo);
|
||||
|
||||
Subject.Execute(new RefreshSeriesCommand(_series.Id));
|
||||
|
||||
Mocker.GetMock<ISeriesService>()
|
||||
.Verify(v => v.UpdateSeries(It.Is<Series>(s => s.Seasons.Count == 2)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_filter_duplicate_seasons()
|
||||
{
|
||||
var newSeriesInfo = _series.JsonClone();
|
||||
newSeriesInfo.Seasons.Add(Builder<Season>.CreateNew()
|
||||
.With(s => s.SeasonNumber = 2)
|
||||
.Build());
|
||||
|
||||
newSeriesInfo.Seasons.Add(Builder<Season>.CreateNew()
|
||||
.With(s => s.SeasonNumber = 2)
|
||||
.Build());
|
||||
|
||||
GivenNewSeriesInfo(newSeriesInfo);
|
||||
|
||||
Subject.Execute(new RefreshSeriesCommand(_series.Id));
|
||||
|
||||
Mocker.GetMock<ISeriesService>()
|
||||
.Verify(v => v.UpdateSeries(It.Is<Series>(s => s.Seasons.Count == 2)));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -116,9 +116,11 @@ namespace NzbDrone.Core.Tv
|
|||
|
||||
private List<Season> UpdateSeasons(Series series, Series seriesInfo)
|
||||
{
|
||||
foreach (var season in seriesInfo.Seasons)
|
||||
var seasons = seriesInfo.Seasons.DistinctBy(s => s.SeasonNumber).ToList();
|
||||
|
||||
foreach (var season in seasons)
|
||||
{
|
||||
var existingSeason = series.Seasons.SingleOrDefault(s => s.SeasonNumber == season.SeasonNumber);
|
||||
var existingSeason = series.Seasons.FirstOrDefault(s => s.SeasonNumber == season.SeasonNumber);
|
||||
|
||||
//Todo: Should this should use the previous season's monitored state?
|
||||
if (existingSeason == null)
|
||||
|
@ -139,7 +141,7 @@ namespace NzbDrone.Core.Tv
|
|||
}
|
||||
}
|
||||
|
||||
return seriesInfo.Seasons;
|
||||
return seasons;
|
||||
}
|
||||
|
||||
public void Execute(RefreshSeriesCommand message)
|
||||
|
|
Loading…
Reference in New Issue