fix(availability-rules): 🐛 Fixed a small issue where some shows would not appear as Available even know they had no future unaired episodes listed

pull/4418/head
tidusjar 3 years ago
parent 75529dd972
commit 914b096781

@ -130,5 +130,76 @@ namespace Ombi.Core.Tests.Rule.Search
Assert.False(search.Approved); Assert.False(search.Approved);
Assert.False(search.Requested); Assert.False(search.Requested);
} }
[Test]
public async Task ShouldBeFullyAvailable_NoFutureAiredEpisodes_NoRequest()
{
var search = new SearchTvShowViewModel()
{
Id = 999,
SeasonRequests = new List<SeasonRequests>
{
new SeasonRequests
{
Episodes = new List<EpisodeRequests>
{
new EpisodeRequests
{
Available = true,
AirDate = new System.DateTime(2020,01,01)
},
new EpisodeRequests
{
Available = true,
AirDate = new System.DateTime(2020,01,02)
},
}
}
}
};
var result = await Rule.Execute(search);
Assert.True(result.Success);
Assert.That(search.FullyAvailable, Is.True);
Assert.That(search.PartlyAvailable, Is.False);
}
[Test]
public async Task ShouldBeFullyAvailable_AndPartly_FutureAiredEpisodes_NoRequest()
{
var search = new SearchTvShowViewModel()
{
Id = 999,
SeasonRequests = new List<SeasonRequests>
{
new SeasonRequests
{
Episodes = new List<EpisodeRequests>
{
new EpisodeRequests
{
Available = true,
AirDate = new System.DateTime(2020,01,01)
},
new EpisodeRequests
{
Available = true,
AirDate = new System.DateTime(2020,01,02)
},
new EpisodeRequests
{
Available = true,
AirDate = new System.DateTime(2029,01,02)
},
}
}
}
};
var result = await Rule.Execute(search);
Assert.True(result.Success);
Assert.That(search.FullyAvailable, Is.True);
Assert.That(search.PartlyAvailable, Is.True);
}
} }
} }

@ -85,11 +85,18 @@ namespace Ombi.Core.Rule.Rules.Search
{ {
request.FullyAvailable = true; request.FullyAvailable = true;
} }
if (request.SeasonRequests.Any() && request.SeasonRequests.All(x => x.Episodes.Any(e => e.Available && e.AirDate > DateTime.MinValue))) if (request.SeasonRequests.Any() && request.SeasonRequests.All(x => x.Episodes.Any(e => e.Available && e.AirDate > DateTime.MinValue && e.AirDate <= DateTime.UtcNow)))
{ {
request.PartlyAvailable = true; request.PartlyAvailable = true;
} }
var hasUnairedRequests = request.SeasonRequests.Any() && request.SeasonRequests.All(x => x.Episodes.Any(e => e.AirDate >= DateTime.UtcNow));
if (request.FullyAvailable)
{
request.PartlyAvailable = hasUnairedRequests;
}
return Success(); return Success();
} }
if (obj.Type == RequestType.Album) if (obj.Type == RequestType.Album)

@ -19,6 +19,7 @@
"newsletter", "newsletter",
"mass-email", "mass-email",
"issues", "issues",
"emby" "emby",
"availability-rules"
] ]
} }

Loading…
Cancel
Save