feat(core): auto-track skips season 0
This commit is contained in:
@@ -11,13 +11,17 @@ pub struct RefreshedSeason {
|
||||
/// Applies a series' tracking rule to newly revealed seasons.
|
||||
///
|
||||
/// Existing seasons keep their tracking rule and leaf-level intent unchanged.
|
||||
/// Season zero is treated like every other newly revealed season.
|
||||
/// Season 0 is never tracked by the rule (`DESIGN.md` §4.1); an operator may
|
||||
/// still track it by hand.
|
||||
pub fn apply_auto_track(series: &Series, seasons: &mut [RefreshedSeason]) {
|
||||
if !series.auto_track {
|
||||
return;
|
||||
}
|
||||
|
||||
for refreshed in seasons.iter_mut().filter(|season| season.is_new) {
|
||||
for refreshed in seasons
|
||||
.iter_mut()
|
||||
.filter(|season| season.is_new && season.season.number != 0)
|
||||
{
|
||||
refreshed.season.tracked = true;
|
||||
for episode in &mut refreshed.episodes {
|
||||
episode.wanted = true;
|
||||
@@ -119,12 +123,12 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn season_zero_follows_the_same_rule() {
|
||||
fn auto_track_skips_season_zero() {
|
||||
let mut refresh = [refreshed_season(0, true, &[false])];
|
||||
|
||||
apply_auto_track(&series(true), &mut refresh);
|
||||
|
||||
assert!(refresh[0].season.tracked);
|
||||
assert!(refresh[0].episodes[0].wanted);
|
||||
assert!(!refresh[0].season.tracked);
|
||||
assert!(refresh[0].episodes.iter().all(|episode| !episode.wanted));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user