refactor: encapsulate review identity changes
This commit is contained in:
@@ -3217,6 +3217,62 @@ fn local_review_native_composition_roundtrip_and_draft_lifecycle() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn review_identity_changes_retire_drafts_before_reusing_comment_ids() {
|
||||
for sqlite in [false, true] {
|
||||
let directory = Directory::new();
|
||||
let root = directory.0.canonicalize().unwrap();
|
||||
let mut editor = editor();
|
||||
if sqlite {
|
||||
editor.set_review_directory(root.join("data"));
|
||||
}
|
||||
historical_diff(&mut editor, &root, vec!["old".into()], vec!["new".into()]);
|
||||
editor.execute("diff.comment");
|
||||
type_text(&mut editor, "iOriginal feedback");
|
||||
editor.handle(Input::Escape);
|
||||
editor.execute("diff.review.summary");
|
||||
type_text(&mut editor, "iKeep summary");
|
||||
editor.handle(Input::Escape);
|
||||
let original = root.join("original.json");
|
||||
editor.execute(&format!("diff.review.save {}", original.display()));
|
||||
|
||||
editor.execute("diff.review.delete 1");
|
||||
editor.execute("diff.comment");
|
||||
assert_eq!(editor.context().text, "");
|
||||
type_text(&mut editor, "iFresh feedback");
|
||||
editor.handle(Input::Escape);
|
||||
let fresh = root.join("fresh.json");
|
||||
editor.execute(&format!("diff.review.save {}", fresh.display()));
|
||||
let document = crate::review::Review::load(&fresh, &root).unwrap();
|
||||
assert_eq!(document.comments[0].id, 1);
|
||||
assert_eq!(document.comments[0].body, "Fresh feedback");
|
||||
assert_eq!(document.summary, "Keep summary");
|
||||
|
||||
editor.execute(&format!("diff.review.open {}", original.display()));
|
||||
editor.execute("diff.review.edit 1");
|
||||
assert_eq!(editor.context().text, "Original feedback");
|
||||
editor.execute("diff.review.summary");
|
||||
assert_eq!(editor.context().text, "Keep summary");
|
||||
let restored = root.join("restored.json");
|
||||
editor.execute(&format!("diff.review.save {}", restored.display()));
|
||||
assert_eq!(
|
||||
crate::review::Review::load(&restored, &root).unwrap().comments[0].body,
|
||||
"Original feedback"
|
||||
);
|
||||
|
||||
editor.execute("diff.review.new");
|
||||
editor.execute("diff.comment");
|
||||
assert_eq!(editor.context().text, "");
|
||||
type_text(&mut editor, "iSeparate review");
|
||||
editor.handle(Input::Escape);
|
||||
let separate = root.join("separate.json");
|
||||
editor.execute(&format!("diff.review.save {}", separate.display()));
|
||||
let document = crate::review::Review::load(&separate, &root).unwrap();
|
||||
assert_eq!(document.comments[0].body, "Separate review");
|
||||
assert_eq!(document.summary, "");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn precise_review_ranges_capture_graphemes_and_navigate_to_their_start() {
|
||||
for focus in [Focus::Before, Focus::After] {
|
||||
|
||||
Reference in New Issue
Block a user