use anyhow::anyhow;
use rstest::rstest;
use super::*;
use crate::{
assert_rendered_output,
assert_results,
git::{Delta, DiffLine, FileMode, Origin, Status, User},
input::StandardEvent,
process::Artifact,
render_line,
test_helpers::{
assertions::assert_rendered_output::AssertRenderOptions,
builders::{CommitBuilder, CommitDiffBuilder, FileStatusBuilder},
create_config,
testers,
with_temp_repository,
},
view::ViewLine,
};
fn create_show_commit(config: &Config, repository: Repository, todo_file: TodoFile) -> ShowCommit {
ShowCommit::new(config, repository, Arc::new(Mutex::new(todo_file)))
}
fn render_options() -> AssertRenderOptions {
AssertRenderOptions::INCLUDE_STYLE | AssertRenderOptions::BODY_ONLY
}
#[test]
fn load_commit_during_activate() {
with_temp_repository(|repo| {
let oid = repo.head_id("main").unwrap();
let line = format!("pick {oid} comment1");
testers::module(&[line.as_str()], &[], |mut test_context| {
let mut module = create_show_commit(&create_config(), repo, test_context.take_todo_file());
assert_results!(test_context.activate(&mut module, State::List));
assert!(module.diff.is_some());
});
});
}
#[test]
fn cached_commit_in_activate() {
with_temp_repository(|repo| {
let oid = repo.head_id("main").unwrap();
let line = format!("pick {oid} comment1");
testers::module(&[line.as_str()], &[], |mut test_context| {
let mut module = create_show_commit(&create_config(), repo, test_context.take_todo_file());
// would be nice to be able to test that a second call to load_commit_diff did not happen here
assert_results!(test_context.activate(&mut module, State::List));
assert_results!(test_context.activate(&mut module, State::List));
});
});
}
#[test]
fn no_selected_line_in_activate() {