refactor: colocate cmd tests with their modules
Move tests from the monolithic tests.rs into #[cfg(test)] mod tests blocks in each command module. Shared test helpers live in mod.rs::test_helpers. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Executed-By: fido
This commit is contained in:
@ -4,6 +4,115 @@ use crate::view::AxisEntry;
|
||||
|
||||
use super::core::{Cmd, CmdContext};
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::command::cmd::test_helpers::*;
|
||||
|
||||
#[test]
|
||||
fn toggle_group_under_cursor_returns_empty_without_groups() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let reg = make_registry();
|
||||
let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = ToggleGroupAtCursor { is_row: true };
|
||||
let effects = cmd.execute(&ctx);
|
||||
assert!(effects.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn law_toggle_group_involution() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let reg = make_registry();
|
||||
let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = ToggleGroupAtCursor { is_row: true };
|
||||
let first = effects_debug(&cmd.execute(&ctx));
|
||||
let second = effects_debug(&cmd.execute(&ctx));
|
||||
assert_eq!(first, second, "Toggle should be structurally consistent");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn view_forward_with_empty_stack_shows_status() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let reg = make_registry();
|
||||
let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = ViewNavigate { forward: true };
|
||||
let effects = cmd.execute(&ctx);
|
||||
let dbg = effects_debug(&effects);
|
||||
assert!(
|
||||
dbg.contains("No forward view"),
|
||||
"Expected status message, got: {dbg}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn view_back_with_empty_stack_shows_status() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let reg = make_registry();
|
||||
let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = ViewNavigate { forward: false };
|
||||
let effects = cmd.execute(&ctx);
|
||||
let dbg = effects_debug(&effects);
|
||||
assert!(
|
||||
dbg.contains("No previous view"),
|
||||
"Expected status message, got: {dbg}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn view_forward_with_stack_produces_effect() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let reg = make_registry();
|
||||
let fwd_stack = vec!["View 2".to_string()];
|
||||
let mut ctx = make_ctx(&m, &layout, ®);
|
||||
ctx.view_forward_stack = &fwd_stack;
|
||||
let cmd = ViewNavigate { forward: true };
|
||||
let effects = cmd.execute(&ctx);
|
||||
let dbg = effects_debug(&effects);
|
||||
assert!(
|
||||
dbg.contains("ViewForward"),
|
||||
"Expected ViewForward, got: {dbg}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn view_back_with_stack_produces_apply_and_back() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let reg = make_registry();
|
||||
let back_stack = vec!["Default".to_string()];
|
||||
let mut ctx = make_ctx(&m, &layout, ®);
|
||||
ctx.view_back_stack = &back_stack;
|
||||
let cmd = ViewNavigate { forward: false };
|
||||
let effects = cmd.execute(&ctx);
|
||||
assert_eq!(effects.len(), 2);
|
||||
let dbg = effects_debug(&effects);
|
||||
assert!(
|
||||
dbg.contains("ApplyAndClearDrill"),
|
||||
"Expected ApplyAndClearDrill, got: {dbg}"
|
||||
);
|
||||
assert!(dbg.contains("ViewBack"), "Expected ViewBack, got: {dbg}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn toggle_prune_empty_produces_toggle_and_dirty() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let reg = make_registry();
|
||||
let ctx = make_ctx(&m, &layout, ®);
|
||||
let effects = TogglePruneEmpty.execute(&ctx);
|
||||
let dbg = effects_debug(&effects);
|
||||
assert!(
|
||||
dbg.contains("TogglePruneEmpty"),
|
||||
"Expected TogglePruneEmpty, got: {dbg}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// ── Grid operations ─────────────────────────────────────────────────────
|
||||
|
||||
/// Toggle the row or column group collapse under the cursor.
|
||||
|
||||
Reference in New Issue
Block a user