From 4fb97c89ed5c0ae0fcdbaf7a747548dc2eed20c5 Mon Sep 17 00:00:00 2001 From: Edward Langley Date: Mon, 30 Mar 2026 23:08:06 -0700 Subject: [PATCH] fix(tests): restore coverage for toggle_group_collapse, item group, and insertion order Rewrites three commented-out tests to access public fields directly instead of the removed item_by_name/item_index/is_group_collapsed methods: - add_item_in_group_sets_group: uses items.get() - item_index_reflects_insertion_order: uses items.get_index_of() - toggle_group_collapse_toggles_twice + involutive proptest: inspect collapsed_groups directly Co-Authored-By: Claude Sonnet 4.6 --- src/model/category.rs | 33 +++++++++++++++---------------- src/view/view.rs | 46 +++++++++++++++++++++++-------------------- 2 files changed, 41 insertions(+), 38 deletions(-) diff --git a/src/model/category.rs b/src/model/category.rs index 6452a1a..c48af35 100644 --- a/src/model/category.rs +++ b/src/model/category.rs @@ -146,13 +146,12 @@ mod tests { assert_eq!(c.items.len(), 1); } - // #[test] - // fn add_item_in_group_sets_group() { - // let mut c = cat(); - // c.add_item_in_group("Jan", "Q1"); - // let item = c.item_by_name("Jan").unwrap(); - // assert_eq!(item.group.as_deref(), Some("Q1")); - // } + #[test] + fn add_item_in_group_sets_group() { + let mut c = cat(); + c.add_item_in_group("Jan", "Q1"); + assert_eq!(c.items.get("Jan").and_then(|i| i.group.as_deref()), Some("Q1")); + } #[test] fn add_item_in_group_duplicate_returns_same_id() { @@ -181,14 +180,14 @@ mod tests { // assert_eq!(groups, vec!["Q1", "Q2"]); // } - // #[test] - // fn item_index_reflects_insertion_order() { - // let mut c = cat(); - // c.add_item("East"); - // c.add_item("West"); - // c.add_item("North"); - // assert_eq!(c.item_index("East"), Some(0)); - // assert_eq!(c.item_index("West"), Some(1)); - // assert_eq!(c.item_index("North"), Some(2)); - // } + #[test] + fn item_index_reflects_insertion_order() { + let mut c = cat(); + c.add_item("East"); + c.add_item("West"); + c.add_item("North"); + assert_eq!(c.items.get_index_of("East"), Some(0)); + assert_eq!(c.items.get_index_of("West"), Some(1)); + assert_eq!(c.items.get_index_of("North"), Some(2)); + } } diff --git a/src/view/view.rs b/src/view/view.rs index 9c7f7f9..8582616 100644 --- a/src/view/view.rs +++ b/src/view/view.rs @@ -226,15 +226,18 @@ mod tests { assert_eq!(v.page_selection("Region"), None); } - // #[test] - // fn toggle_group_collapse_toggles_twice() { - // let mut v = View::new("Test"); - // assert!(!v.is_group_collapsed("Time", "Q1")); - // v.toggle_group_collapse("Time", "Q1"); - // assert!(v.is_group_collapsed("Time", "Q1")); - // v.toggle_group_collapse("Time", "Q1"); - // assert!(!v.is_group_collapsed("Time", "Q1")); - // } + #[test] + fn toggle_group_collapse_toggles_twice() { + let collapsed = |v: &View, cat: &str, group: &str| { + v.collapsed_groups.get(cat).map(|s| s.contains(group)).unwrap_or(false) + }; + let mut v = View::new("Test"); + assert!(!collapsed(&v, "Time", "Q1")); + v.toggle_group_collapse("Time", "Q1"); + assert!(collapsed(&v, "Time", "Q1")); + v.toggle_group_collapse("Time", "Q1"); + assert!(!collapsed(&v, "Time", "Q1")); + } #[test] fn hide_and_show_item() { @@ -407,17 +410,18 @@ mod prop_tests { // prop_assert!(!v.is_hidden(&cat, &item)); } - // /// toggle_group_collapse is its own inverse - // #[test] - // fn toggle_group_collapse_involutive( - // cat in "[A-Za-z][a-z]{1,7}", - // group in "[A-Za-z][a-z]{1,7}", - // ) { - // let mut v = View::new("T"); - // let initial = v.is_group_collapsed(&cat, &group); - // v.toggle_group_collapse(&cat, &group); - // v.toggle_group_collapse(&cat, &group); - // prop_assert_eq!(v.is_group_collapsed(&cat, &group), initial); - // } + /// toggle_group_collapse is its own inverse + #[test] + fn toggle_group_collapse_involutive( + cat in "[A-Za-z][a-z]{1,7}", + group in "[A-Za-z][a-z]{1,7}", + ) { + let mut v = View::new("T"); + let collapsed = |v: &View| v.collapsed_groups.get(&cat).map(|s| s.contains(&group as &str)).unwrap_or(false); + let initial = collapsed(&v); + v.toggle_group_collapse(&cat, &group); + v.toggle_group_collapse(&cat, &group); + prop_assert_eq!(collapsed(&v), initial); + } } }