feat(command): update context and tests for registry
Update CmdContext to include registry reference. Adjust make_ctx function signature to accept registry. Update all tests to pass the default registry. Ensure test contexts are constructed with registry. Co-Authored-By: fiddlerwoaroof/git-smart-commit (bartowski/nvidia_Nemotron-Cascade-2-30B-A3B-GGUF)
This commit is contained in:
@ -13,6 +13,7 @@ use crate::view::{Axis, AxisEntry, GridLayout};
|
||||
pub struct CmdContext<'a> {
|
||||
pub model: &'a Model,
|
||||
pub layout: &'a GridLayout,
|
||||
pub registry: &'a CmdRegistry,
|
||||
pub mode: &'a AppMode,
|
||||
pub selected: (usize, usize),
|
||||
pub row_offset: usize,
|
||||
@ -2849,12 +2850,13 @@ mod tests {
|
||||
GridLayout::new(model, model.active_view())
|
||||
}
|
||||
|
||||
fn make_ctx<'a>(model: &'a Model, layout: &'a GridLayout) -> CmdContext<'a> {
|
||||
fn make_ctx<'a>(model: &'a Model, layout: &'a GridLayout, registry: &'a CmdRegistry) -> CmdContext<'a> {
|
||||
let view = model.active_view();
|
||||
let (sr, sc) = view.selected;
|
||||
CmdContext {
|
||||
model,
|
||||
layout,
|
||||
registry,
|
||||
mode: &AppMode::Normal,
|
||||
selected: view.selected,
|
||||
row_offset: view.row_offset,
|
||||
@ -2902,7 +2904,7 @@ mod tests {
|
||||
fn move_selection_down_produces_set_selected() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = Move {
|
||||
kind: MoveKind::Relative(1, 0),
|
||||
cursor: CursorState::from_ctx(&ctx),
|
||||
@ -2917,7 +2919,7 @@ mod tests {
|
||||
fn move_selection_clamps_to_bounds() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
// Try to move way past the end
|
||||
let cmd = Move {
|
||||
kind: MoveKind::Relative(100, 100),
|
||||
@ -2934,7 +2936,7 @@ mod tests {
|
||||
let mut bufs = HashMap::new();
|
||||
bufs.insert("command".to_string(), "q".to_string());
|
||||
let layout = make_layout(&m);
|
||||
let mut ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let mut ctx = make_ctx(&m, &layout, ®);
|
||||
ctx.dirty = true;
|
||||
ctx.buffers = &bufs;
|
||||
let cmd = ExecuteCommand;
|
||||
@ -2949,7 +2951,7 @@ mod tests {
|
||||
let mut bufs = HashMap::new();
|
||||
bufs.insert("command".to_string(), "q".to_string());
|
||||
let layout = make_layout(&m);
|
||||
let mut ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let mut ctx = make_ctx(&m, &layout, ®);
|
||||
ctx.buffers = &bufs;
|
||||
let cmd = ExecuteCommand;
|
||||
let effects = cmd.execute(&ctx);
|
||||
@ -2969,7 +2971,7 @@ mod tests {
|
||||
]);
|
||||
m.set_cell(key, CellValue::Number(42.0));
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = ClearCellCommand {
|
||||
key: ctx.cell_key().clone().unwrap(),
|
||||
};
|
||||
@ -2986,7 +2988,7 @@ mod tests {
|
||||
]);
|
||||
m.set_cell(key, CellValue::Number(99.0));
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = YankCell {
|
||||
key: ctx.cell_key().clone().unwrap(),
|
||||
};
|
||||
@ -2998,7 +3000,7 @@ mod tests {
|
||||
fn toggle_panel_open_and_focus() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = TogglePanelAndFocus {
|
||||
panel: effect::Panel::Formula,
|
||||
open: true,
|
||||
@ -3017,7 +3019,7 @@ mod tests {
|
||||
fn toggle_panel_close_and_unfocus() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = TogglePanelAndFocus {
|
||||
panel: effect::Panel::Formula,
|
||||
open: false,
|
||||
@ -3031,7 +3033,7 @@ mod tests {
|
||||
fn enter_advance_moves_down() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = EnterAdvance {
|
||||
cursor: CursorState::from_ctx(&ctx),
|
||||
};
|
||||
@ -3048,7 +3050,7 @@ mod tests {
|
||||
fn search_navigate_with_empty_query_returns_nothing() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = SearchNavigate(true);
|
||||
let effects = cmd.execute(&ctx);
|
||||
assert!(effects.is_empty());
|
||||
@ -3058,7 +3060,7 @@ mod tests {
|
||||
fn enter_edit_mode_produces_editing_mode() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = EnterEditMode {
|
||||
initial_value: String::new(),
|
||||
};
|
||||
@ -3072,7 +3074,7 @@ mod tests {
|
||||
fn enter_tile_select_with_categories() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = EnterTileSelect;
|
||||
let effects = cmd.execute(&ctx);
|
||||
assert_eq!(effects.len(), 2); // SetTileCatIdx + ChangeMode
|
||||
@ -3089,7 +3091,7 @@ mod tests {
|
||||
// select always has something to operate on.
|
||||
let m = Model::new("Empty");
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = EnterTileSelect;
|
||||
let effects = cmd.execute(&ctx);
|
||||
assert_eq!(effects.len(), 2); // SetTileCatIdx + ChangeMode
|
||||
@ -3099,7 +3101,7 @@ mod tests {
|
||||
fn toggle_group_under_cursor_returns_empty_without_groups() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = ToggleGroupAtCursor { is_row: true };
|
||||
let effects = cmd.execute(&ctx);
|
||||
// No groups defined, so nothing to toggle
|
||||
@ -3110,7 +3112,7 @@ mod tests {
|
||||
fn search_or_category_add_without_query_opens_category_add() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = SearchOrCategoryAdd;
|
||||
let effects = cmd.execute(&ctx);
|
||||
assert_eq!(effects.len(), 2); // SetPanelOpen + ChangeMode
|
||||
@ -3125,7 +3127,7 @@ mod tests {
|
||||
fn cycle_panel_focus_with_no_panels_open() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = CyclePanelFocus {
|
||||
formula_open: false,
|
||||
category_open: false,
|
||||
@ -3139,7 +3141,7 @@ mod tests {
|
||||
fn cycle_panel_focus_with_formula_panel_open() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let mut ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let mut ctx = make_ctx(&m, &layout, ®);
|
||||
ctx.formula_panel_open = true;
|
||||
let cmd = CyclePanelFocus {
|
||||
formula_open: true,
|
||||
@ -3167,7 +3169,7 @@ mod tests {
|
||||
fn law_move_to_start_idempotent() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = Move {
|
||||
kind: MoveKind::ToStart(true),
|
||||
cursor: CursorState::from_ctx(&ctx),
|
||||
@ -3193,7 +3195,7 @@ mod tests {
|
||||
fn law_toggle_group_involution() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_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));
|
||||
@ -3209,7 +3211,7 @@ mod tests {
|
||||
fn law_sequence_associativity() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
|
||||
let mk_a = || {
|
||||
Move {
|
||||
@ -3259,7 +3261,7 @@ mod tests {
|
||||
fn law_move_to_end_reaches_last_col() {
|
||||
let m = two_cat_model();
|
||||
let layout = make_layout(&m);
|
||||
let ctx = make_ctx(&m, &layout);
|
||||
let reg = default_registry(); let ctx = make_ctx(&m, &layout, ®);
|
||||
let cmd = Move {
|
||||
kind: MoveKind::ToEnd(false),
|
||||
cursor: CursorState::from_ctx(&ctx),
|
||||
|
||||
Reference in New Issue
Block a user