From 6c807c1b2ed1aa92420c08402659159f0ad58272 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Tue, 10 May 2022 04:11:35 +0200 Subject: [PATCH] Fix review queue if limit is reached (#1855) --- rslib/src/decks/limits.rs | 4 +++- rslib/src/scheduler/queue/builder/mod.rs | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/rslib/src/decks/limits.rs b/rslib/src/decks/limits.rs index d62ad9519..5120e0d1b 100644 --- a/rslib/src/decks/limits.rs +++ b/rslib/src/decks/limits.rs @@ -122,7 +122,9 @@ impl LimitTreeMap { .unwrap(); let mut map = HashMap::new(); - map.insert(root_deck.id, root_id.clone()); + if root_limits.limits.review > 0 { + map.insert(root_deck.id, root_id.clone()); + } let mut limits = Self { tree, map }; let mut remaining_decks = child_decks.into_iter().peekable(); diff --git a/rslib/src/scheduler/queue/builder/mod.rs b/rslib/src/scheduler/queue/builder/mod.rs index 8da5b11a9..dd0045ba4 100644 --- a/rslib/src/scheduler/queue/builder/mod.rs +++ b/rslib/src/scheduler/queue/builder/mod.rs @@ -287,6 +287,13 @@ mod test { self.add_or_update_deck(deck).unwrap(); } + fn set_deck_review_limit(&mut self, deck: DeckId, limit: u32) { + let dcid = self.get_deck(deck).unwrap().unwrap().config_id().unwrap(); + let mut conf = self.get_deck_config(dcid, false).unwrap().unwrap(); + conf.inner.reviews_per_day = limit; + self.add_or_update_deck_config(&mut conf).unwrap(); + } + fn queue_as_deck_and_template(&mut self, deck_id: DeckId) -> Vec<(DeckId, u16)> { self.build_queues(deck_id) .unwrap() @@ -318,6 +325,18 @@ mod test { } } + #[test] + fn should_build_empty_queue_if_limit_is_reached() { + let mut col = open_test_collection(); + col.set_config_bool(BoolKey::Sched2021, true, false) + .unwrap(); + let note_id = col.add_new_note("Basic").id; + let cids = col.storage.card_ids_of_notes(&[note_id]).unwrap(); + col.set_due_date(&cids, "0", None).unwrap(); + col.set_deck_review_limit(DeckId(1), 0); + assert_eq!(col.queue_as_deck_and_template(DeckId(1)), vec![]); + } + #[test] fn new_queue_building() -> Result<()> { let mut col = open_test_collection();