feat: persist diff file review checkmarks
This commit is contained in:
@@ -3206,6 +3206,73 @@ fn review_metadata_autosaves_do_not_commit_hidden_comment_or_summary_drafts() {
|
||||
assert!(!editor.local_reviews_dirty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reviewed_file_marks_autosave_restore_and_stay_with_the_selected_review() {
|
||||
use crate::review::{Review, Store};
|
||||
let directory = Directory::new();
|
||||
let root = directory.0.canonicalize().unwrap();
|
||||
let storage = root.join("data");
|
||||
let mut first = editor();
|
||||
first.set_review_directory(storage.clone());
|
||||
historical_diff(&mut first, &root, vec!["old".into()], vec!["new".into()]);
|
||||
first.execute("diff.review.toggle");
|
||||
let store = Store::open(&storage).unwrap();
|
||||
let saved = store.list(&root).unwrap().pop().unwrap();
|
||||
let id = saved.storage_id.unwrap();
|
||||
assert_eq!(saved.reviewed_files[0].path, Path::new("file.txt"));
|
||||
let export = root.join("review.json");
|
||||
first.execute(&format!("diff.review.save {}", export.display()));
|
||||
assert_eq!(
|
||||
Review::load(&export, &root).unwrap().reviewed_files,
|
||||
saved.reviewed_files
|
||||
);
|
||||
first.execute("diff.review.summary");
|
||||
type_text(&mut first, "iUnsaved summary");
|
||||
first.handle(Input::Escape);
|
||||
first.execute("diff.review.toggle");
|
||||
assert!(store.load(&root, id).unwrap().reviewed_files.is_empty());
|
||||
assert_eq!(store.load(&root, id).unwrap().summary, "");
|
||||
first.execute("diff.review.toggle");
|
||||
drop(first);
|
||||
let mut reopened = editor();
|
||||
reopened.set_review_directory(storage.clone());
|
||||
historical_diff(&mut reopened, &root, vec!["old".into()], vec!["new".into()]);
|
||||
assert_eq!(
|
||||
reopened.workspace_diff().unwrap().reviewed_files,
|
||||
BTreeSet::from([0])
|
||||
);
|
||||
reopened.execute("diff.review.new");
|
||||
assert!(reopened.workspace_diff().unwrap().reviewed_files.is_empty());
|
||||
reopened.execute(&format!("diff.review.open {id}"));
|
||||
assert_eq!(
|
||||
reopened.workspace_diff().unwrap().reviewed_files,
|
||||
BTreeSet::from([0])
|
||||
);
|
||||
reopened.handle(Input::Escape);
|
||||
reopened.execute("diff.review.toggle");
|
||||
assert!(store.load(&root, id).unwrap().reviewed_files.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn editing_a_reviewed_working_file_persists_its_invalidation() {
|
||||
let directory = Directory::new();
|
||||
let root = directory.0.canonicalize().unwrap();
|
||||
fs::write(root.join("file.txt"), "original\n").unwrap();
|
||||
let storage = root.join("data");
|
||||
let mut editor = editor();
|
||||
editor.set_review_directory(storage.clone());
|
||||
working_diff(&mut editor, &root, &["file.txt"]);
|
||||
editor.handle(Input::Enter);
|
||||
editor.execute("diff.review.toggle");
|
||||
let store = crate::review::Store::open(&storage).unwrap();
|
||||
let id = store.list(&root).unwrap()[0].storage_id.unwrap();
|
||||
assert_eq!(store.load(&root, id).unwrap().reviewed_files.len(), 1);
|
||||
type_text(&mut editor, "iEdited ");
|
||||
editor.handle(Input::Escape);
|
||||
assert!(editor.workspace_diff().unwrap().reviewed_files.is_empty());
|
||||
assert!(store.load(&root, id).unwrap().reviewed_files.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sqlite_reviews_autosave_restore_select_and_keep_exports_independent() {
|
||||
use crate::review::{Review, Store, Verdict};
|
||||
@@ -5276,6 +5343,10 @@ fn diff_review_actions_preserve_readonly_text_history_and_parked_tabs() {
|
||||
editor.execute("tab.previous");
|
||||
assert_eq!(editor.tab_id(), first_tab);
|
||||
assert_eq!(editor.diff().unwrap().reviewed_files, BTreeSet::from([0]));
|
||||
editor.execute(&format!(
|
||||
"diff.review.save {}",
|
||||
directory.path("review.json").display()
|
||||
));
|
||||
editor.execute("diff.close");
|
||||
historical_diff(
|
||||
&mut editor,
|
||||
|
||||
Reference in New Issue
Block a user