assert_eq!(state.repo.as_ref().unwrap().untracked_files.len(), 1);
assert!(state
.repo
.as_ref()
.unwrap()
.untracked_files
.contains(file_to_record));
assert!(state.repo.as_ref().unwrap().changed_files.is_empty());
// Select it
update(
&mut state,
Msg::View(app::Msg::Cursor(cursor::Msg::Select(
cursor::Select::UntrackedFile {
ix: 0,
path: file_to_record.to_string(),
},
))),
);
// Selection triggers `LoadedSrcFile`
let _msg = task::await_next_msg(&mut tasks).await;
// Add it to tracked files
let _task = update(&mut state, Msg::AddUntrackedFile);
// Wait for it to be added
let msg = task::await_next_msg(&mut tasks).await;
assert_matches!(
&msg,
Msg::FromRepo(repo::MsgOut::AddedUntrackedFile { path }) if path == file_to_record
);
assert!(state.repo.as_ref().unwrap().untracked_files.is_empty());
assert_eq!(state.repo.as_ref().unwrap().changed_files.len(), 1);
assert!(state
.repo
.as_ref()
.unwrap()
.changed_files
.contains_key(file_to_record));
assert_eq!(
state
.repo
.as_ref()
.unwrap()
.changed_files
.get(file_to_record)
.unwrap(),
&BTreeSet::from_iter([repo::ChangedFileDiff::Add])
);
}