An edited editor always writes, and the stale-seed guards are pinned (improvise-2054, improvise-wv3h)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
This commit is contained in:
@@ -661,6 +661,74 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
/// BUG (improvise-2054) — see `context/test-evidence/command.md`.
|
||||
#[test]
|
||||
fn an_editor_typed_back_to_its_seed_still_writes() {
|
||||
use crate::model::cell::{CellKey, CellValue};
|
||||
use improvise_protocol::key::KeyCode;
|
||||
|
||||
let target = CellKey::new(vec![
|
||||
("Region".into(), "West".into()),
|
||||
("_Measure".into(), "Revenue".into()),
|
||||
]);
|
||||
let mut app = grid_holding(CellValue::Number(7.0), false);
|
||||
app.cursor_mut().selected = (1, 1);
|
||||
press(&mut app, KeyCode::Char('i'));
|
||||
app.apply_effects(vec![Box::new(effect::SetCell(
|
||||
target.clone(),
|
||||
CellValue::Number(5.0),
|
||||
))]);
|
||||
press(&mut app, KeyCode::Backspace);
|
||||
press(&mut app, KeyCode::Char('7'));
|
||||
assert_eq!(app.view_state.buffers.get("edit").map(String::as_str), Some("7"));
|
||||
press(&mut app, KeyCode::Enter);
|
||||
assert_eq!(
|
||||
app.model_state.workbook.model.get_cell(&target),
|
||||
Some(&CellValue::Number(7.0)),
|
||||
"a value the user typed was dropped because it spelled the seed"
|
||||
);
|
||||
}
|
||||
|
||||
/// BUG (improvise-wv3h) — see `context/test-evidence/command.md`.
|
||||
#[test]
|
||||
fn an_editor_opened_by_enter_mode_does_not_inherit_an_earlier_seed() {
|
||||
use crate::model::cell::{CellKey, CellValue};
|
||||
use improvise_protocol::key::KeyCode;
|
||||
|
||||
let empty = CellKey::new(vec![
|
||||
("Region".into(), "North".into()),
|
||||
("_Measure".into(), "Cost".into()),
|
||||
]);
|
||||
let target = CellKey::new(vec![
|
||||
("Region".into(), "West".into()),
|
||||
("_Measure".into(), "Revenue".into()),
|
||||
]);
|
||||
let mut app = grid_holding(CellValue::Number(2.0), false);
|
||||
app.model_state.workbook.model.clear_cell(&empty);
|
||||
app.rebuild_layout();
|
||||
app.cursor_mut().selected = (0, 0);
|
||||
press(&mut app, KeyCode::Char('i'));
|
||||
assert_eq!(
|
||||
app.view_state.opened_editor.as_ref().map(|o| o.seed.as_str()),
|
||||
Some(""),
|
||||
"the first editor did not open on the empty cell"
|
||||
);
|
||||
press(&mut app, KeyCode::Esc);
|
||||
app.cursor_mut().selected = (1, 1);
|
||||
press(&mut app, KeyCode::Char(':'));
|
||||
for c in "enter-mode editing".chars() {
|
||||
press(&mut app, KeyCode::Char(c));
|
||||
}
|
||||
press(&mut app, KeyCode::Enter);
|
||||
assert!(app.view_state.mode.is_editing(), "`:enter-mode editing` did not open an editor");
|
||||
press(&mut app, KeyCode::Enter);
|
||||
assert_eq!(
|
||||
app.model_state.workbook.model.get_cell(&target),
|
||||
None,
|
||||
"the empty commit was skipped against the earlier editor's seed"
|
||||
);
|
||||
}
|
||||
|
||||
/// BUG (improvise-ixxx) — see `context/test-evidence/command.md`.
|
||||
#[test]
|
||||
fn an_untouched_commit_still_advances_and_reopens_the_editor() {
|
||||
|
||||
Reference in New Issue
Block a user