diff options
Diffstat (limited to 'src/core/src/modules/list/tests/search.rs')
-rw-r--r-- | src/core/src/modules/list/tests/search.rs | 617 |
1 files changed, 259 insertions, 358 deletions
diff --git a/src/core/src/modules/list/tests/search.rs b/src/core/src/modules/list/tests/search.rs index dfa3118..d6df729 100644 --- a/src/core/src/modules/list/tests/search.rs +++ b/src/core/src/modules/list/tests/search.rs @@ -1,48 +1,133 @@ -use view::{assert_rendered_output, render_line, testutil::AssertRenderOptions}; +use std::{thread::sleep, time::Duration}; + +use claims::{assert_none, assert_some_eq}; +use input::KeyCode; +use view::{assert_rendered_output, render_line}; use super::*; -use crate::{action_line, assert_results, process::Artifact, testutil::module_test}; +use crate::{ + action_line, + assert_results, + modules::list::search::LineMatch, + process::Artifact, + search::{testutil::SearchableRunner, Interrupter, SearchResult}, + testutil::{module_test, AnyArtifact, EventHandlerTestContext, ModuleTestContext}, +}; + +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +enum Action<'action> { + Start(&'action str), + Search, + Finish, + Next, + Previous, + Cancel, + Event(Event), +} + +struct TestContext { + pub(crate) list: List, + module_test_context: ModuleTestContext, + results: Vec<Results>, +} + +impl TestContext { + fn build_view_data(&mut self) -> &ViewData { + self.module_test_context.build_view_data(&mut self.list) + } + + fn handle_event(&mut self, event: Event) { + self.results.push( + self.list + .handle_event(event, &self.module_test_context.view_context.state), + ); + } +} + +fn search_test<C>(actions: &[Action<'_>], lines: &[&str], callback: C) +where C: FnOnce(TestContext) { + module_test(lines, &[], |mut context| { + let list = create_list(&Config::new(), context.take_todo_file()); + let mut search_context = TestContext { + list, + module_test_context: context, + results: vec![], + }; + + let mut finish_pushed = false; + + for action in actions { + match *action { + Action::Start(term) => { + finish_pushed = false; + search_context.handle_event(Event::from(StandardEvent::SearchStart)); + for c in term.chars() { + search_context.handle_event(Event::from(c)); + } + }, + Action::Search => { + if let Some(term) = search_context.list.search_bar.search_value() { + _ = search_context + .list + .search + .search(Interrupter::new(Duration::from_secs(5)), term); + search_context.handle_event(Event::from(MetaEvent::SearchUpdate)); + } + }, + Action::Finish => { + finish_pushed = true; + search_context.handle_event(Event::from(StandardEvent::SearchFinish)); + }, + Action::Next => { + if !finish_pushed { + search_context.handle_event(Event::from(StandardEvent::SearchFinish)); + } + search_context.handle_event(Event::from(StandardEvent::SearchNext)); + }, + Action::Previous => { + if !finish_pushed { + search_context.handle_event(Event::from(StandardEvent::SearchFinish)); + } + search_context.handle_event(Event::from(StandardEvent::SearchPrevious)); + }, + Action::Cancel => { + search_context.handle_event(Event::from(KeyCode::Esc)); + }, + Action::Event(event) => { + search_context.handle_event(event); + }, + } + } + + callback(search_context); + }); +} #[test] -fn start_edit() { - module_test( - &["pick aaaaaaaa comment"], - &[Event::from(StandardEvent::SearchStart)], - |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(Not Contains "IndicatorColor"), - "{TRAILING}", - "{Normal}/{Normal,Underline}" - ); - }, - ); +fn render_start() { + search_test(&[Action::Start("")], &["pick aaaaaaaa comment"], |mut test_context| { + assert_rendered_output!( + Style test_context.build_view_data(), + "{TITLE}{HELP}", + "{BODY}", + "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa comment{Pad( )}", + "{TRAILING}", + "{Normal}/{Normal,Underline}" + ); + }); } #[test] -fn with_match_on_hash() { - module_test( - &["pick aaaaaaaa comment1"], - &[ - Event::from(StandardEvent::SearchStart), - Event::from('a'), - Event::from('a'), - Event::from('a'), - ], +fn render_match_hash() { + search_test( + &[Action::Start("aaa"), Action::Search], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); assert_rendered_output!( - Style view_data, + Style test_context.build_view_data(), "{TITLE}{HELP}", "{BODY}", - render_line!(Contains "IndicatorColor"), + "{Selected}{Normal} > {ActionPick}pick {IndicatorColor}aaaaaaaa{Normal} comment{Pad( )}", "{TRAILING}", "{Normal}/aaa{Normal,Underline}" ); @@ -51,472 +136,288 @@ fn with_match_on_hash() { } #[test] -fn with_no_match() { - module_test( - &["pick aaaaaaaa comment1"], - &[Event::from(StandardEvent::SearchStart), Event::from('x')], +fn render_match_content_start() { + search_test( + &[Action::Start("com"), Action::Search], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); assert_rendered_output!( - Style view_data, + Style test_context.build_view_data(), "{TITLE}{HELP}", "{BODY}", - render_line!(Not Contains "IndicatorColor"), + "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}com{Normal}ment{Pad( )}", "{TRAILING}", - "{Normal}/x{Normal,Underline}" + "{Normal}/com{Normal,Underline}" ); }, ); } #[test] -fn start_with_matches_and_with_term() { - module_test( - &["pick aaaaaaaa comment1"], - &[ - Event::from(StandardEvent::SearchStart), - Event::from('a'), - Event::from(StandardEvent::SearchFinish), - ], +fn render_match_content_middle() { + search_test( + &[Action::Start("omm"), Action::Search], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); assert_rendered_output!( - Style view_data, + Style test_context.build_view_data(), "{TITLE}{HELP}", "{BODY}", - render_line!(Contains "{IndicatorColor,Underline}"), + "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa c{IndicatorColor}omm{Normal}ent{Pad( )}", "{TRAILING}", - "{Normal}[a]: 1/1" + "{Normal}/omm{Normal,Underline}" ); }, ); } #[test] -fn start_with_no_matches_and_with_term() { - module_test( - &["pick aaaaaaaa comment1"], - &[ - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - ], +fn render_match_content_end() { + search_test( + &[Action::Start("ent"), Action::Search], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); assert_rendered_output!( - Style view_data, + Style test_context.build_view_data(), "{TITLE}{HELP}", "{BODY}", - render_line!(Not Contains "IndicatorColor"), + "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa comm{IndicatorColor}ent{Normal}{Pad( )}", "{TRAILING}", - "{Normal}[x]: No Results" + "{Normal}/ent{Normal,Underline}" ); }, ); } #[test] -fn start_with_no_term() { - module_test( - &["pick aaaaaaaa comment1"], - &[ - Event::from(StandardEvent::SearchStart), - Event::from(StandardEvent::SearchFinish), - ], +fn render_match_content_full() { + search_test( + &[Action::Start("comment"), Action::Search], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); assert_rendered_output!( - Style view_data, + Style test_context.build_view_data(), "{TITLE}{HELP}", "{BODY}", - action_line!(Selected Pick "aaaaaaaa", "comment1") + "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}comment{Normal}{Pad( )}", + "{TRAILING}", + "{Normal}/comment{Normal,Underline}" ); }, ); } #[test] -fn normal_mode_next() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], +fn render_match_finish_with_search_active() { + search_test( + &[Action::Start("aaa"), Action::Search, Action::Finish], &[ - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchNext), + "pick aaaaaaaa comment", + "pick aaaaaaab comment", + "pick aaaaaaac comment", ], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); assert_rendered_output!( - Style view_data, + test_context.build_view_data(), "{TITLE}{HELP}", "{BODY}", - render_line!(Contains "{IndicatorColor}"), - render_line!(Contains "{IndicatorColor,Underline}"), - render_line!(Contains "{IndicatorColor}"), + action_line!(Selected Pick "aaaaaaaa", "comment"), + action_line!(Pick "aaaaaaab", "comment"), + action_line!(Pick "aaaaaaac", "comment"), "{TRAILING}", - "{Normal}[x]: 2/3" + "[aaa]: 1/3 Searching [(-)]" ); }, ); } #[test] -fn visual_mode_next() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], +fn render_match_finish_with_search_complete() { + search_test( + &[Action::Start("aaa"), Action::Search, Action::Finish, Action::Search], &[ - Event::from(MetaEvent::ToggleVisualMode), - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchNext), + "pick aaaaaaaa comment", + "pick aaaaaaab comment", + "pick aaaaaaac comment", ], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); assert_rendered_output!( - Style view_data, + test_context.build_view_data(), "{TITLE}{HELP}", "{BODY}", - render_line!( - All render_line!(Contains "Dimmed"), - render_line!(Contains "{IndicatorColor}") - ), - render_line!(Contains "{IndicatorColor,Underline}"), - render_line!( - All render_line!(Not Contains "Dimmed"), - render_line!(Contains "{IndicatorColor}") - ), + action_line!(Selected Pick "aaaaaaaa", "comment"), + action_line!(Pick "aaaaaaab", "comment"), + action_line!(Pick "aaaaaaac", "comment"), "{TRAILING}", - "{Normal}[x]: 2/3" + "[aaa]: 1/3" ); }, ); } #[test] -fn normal_mode_next_with_wrap() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], - &[ - Event::from(MetaEvent::MoveCursorDown), - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchNext), - Event::from(StandardEvent::SearchNext), - ], +fn render_no_results() { + search_test( + &[Action::Start("xxx"), Action::Search, Action::Finish, Action::Search], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); assert_rendered_output!( - Style view_data, + test_context.build_view_data(), "{TITLE}{HELP}", "{BODY}", - render_line!(Contains "{IndicatorColor,Underline}"), - render_line!(Contains "{IndicatorColor}"), - render_line!(Contains "{IndicatorColor}"), + action_line!(Selected Pick "aaaaaaaa", "comment"), "{TRAILING}", - "{Normal}[x]: 1/3" + "[xxx]: No Results" ); }, ); } #[test] -fn visual_mode_next_with_wrap() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], - &[ - Event::from(MetaEvent::MoveCursorDown), - Event::from(MetaEvent::ToggleVisualMode), - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchNext), - Event::from(StandardEvent::SearchNext), - ], - |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(Contains "{IndicatorColor,Underline}"), - render_line!( - All render_line!(Contains "Dimmed"), - render_line!(Contains "{IndicatorColor}") - ), - render_line!(Contains "{IndicatorColor}"), - "{TRAILING}", - "{Normal}[x]: 1/3" - ); - }, - ); +fn search_indicator_refresh_on_update() { + search_test(&[Action::Start("")], &["pick aaaaaaaa comment"], |mut test_context| { + let cur_indicator = test_context.list.spin_indicator.indicator(); + sleep(Duration::from_millis(200)); // indicator only changes every 100 ms + test_context.list.search_update(); + assert_ne!(test_context.list.spin_indicator.indicator(), cur_indicator); + }); } #[test] -fn normal_mode_previous() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], - &[ - Event::from(MetaEvent::MoveCursorDown), - Event::from(MetaEvent::MoveCursorDown), - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchPrevious), - ], +fn start_edit() { + search_test(&[Action::Start("")], &["pick aaaaaaaa comment"], |mut test_context| { + assert!(test_context.list.search_bar.is_active()); + }); +} + +#[test] +fn term_entry() { + search_test( + &[Action::Start("aaa")], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(Contains "{IndicatorColor}"), - render_line!(Contains "{IndicatorColor,Underline}"), - render_line!(Contains "{IndicatorColor}"), - "{TRAILING}", - "{Normal}[x]: 2/3" + assert_results!( + test_context.results.pop().unwrap(), + AnyArtifact, + Artifact::SearchTerm(String::from("aaa")) ); }, ); } #[test] -fn visual_mode_previous() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], - &[ - Event::from(MetaEvent::MoveCursorDown), - Event::from(MetaEvent::MoveCursorDown), - Event::from(MetaEvent::ToggleVisualMode), - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchPrevious), - ], +fn term_entry_delete_last_character() { + search_test( + &[Action::Start("a"), Action::Event(Event::from(KeyCode::Backspace))], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(Contains "{IndicatorColor}"), - render_line!( - All render_line!(Not Contains "Dimmed"), - render_line!(Contains "{IndicatorColor,Underline}") - ), - render_line!( - All render_line!(Contains "Dimmed"), - render_line!(Contains "{IndicatorColor}") - ), - "{TRAILING}", - "{Normal}[x]: 2/3" - ); + assert_results!(test_context.results.pop().unwrap(), AnyArtifact, Artifact::SearchCancel); }, ); } #[test] -fn normal_mode_previous_with_wrap() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], - &[ - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchPrevious), - ], +fn start_search_with_empty_term() { + search_test( + &[Action::Start(""), Action::Search, Action::Finish], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(Contains "{IndicatorColor}"), - render_line!(Contains "{IndicatorColor}"), - render_line!(Contains "{IndicatorColor,Underline}"), - "{TRAILING}", - "{Normal}[x]: 3/3" - ); + assert_results!(test_context.results.pop().unwrap(), AnyArtifact, Artifact::SearchCancel); + assert!(!test_context.list.search_bar.is_active()); }, ); } #[test] -fn visual_mode_previous_with_wrap() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], - &[ - Event::from(MetaEvent::ToggleVisualMode), - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchPrevious), - ], +fn start_search_with_term() { + search_test( + &[Action::Start("aaa"), Action::Search, Action::Finish], + &["pick aaaaaaaa comment"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(All render_line!(Contains "Dimmed"), render_line!(Contains "{IndicatorColor}")), - render_line!(All render_line!(Contains "Dimmed"), render_line!(Contains "{IndicatorColor}")), - render_line!( - All render_line!(Not Contains "Dimmed"), - render_line!(Contains "{IndicatorColor,Underline}") - ), - "{TRAILING}", - "{Normal}[x]: 3/3" + assert_results!( + test_context.results.pop().unwrap(), + AnyArtifact, + Artifact::SearchTerm(String::from("aaa")) ); + assert_some_eq!(test_context.list.search.current_match(), LineMatch::new(0, true, false)); }, ); } #[test] -fn cancel() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], +fn next() { + search_test( + &[Action::Start("aaa"), Action::Search, Action::Finish, Action::Next], &[ - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), - Event::from(StandardEvent::SearchStart), + "pick aaaaaaaa comment1", + "pick aaaaaaaa comment2", + "pick aaaaaaaa comment3", ], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - action_line!(Selected Pick "aaaaaaaa", "x1"), - action_line!(Pick "bbbbbbbb", "x2"), - action_line!(Pick "cccccccc", "x3") + assert_results!( + test_context.results.pop().unwrap(), + AnyArtifact, + Artifact::SearchTerm(String::from("aaa")) ); + assert_some_eq!(test_context.list.search.current_match(), LineMatch::new(1, true, false)); }, ); } #[test] -fn set_search_start_hint() { - module_test( - &[ - "pick aaaaaaaa x1", - "pick aaaaaaaa a", - "pick bbbbbbbb x2", - "pick aaaaaaaa b", - "pick bbbbbbbb x3", - ], +fn previous() { + search_test( + &[Action::Start("aaa"), Action::Search, Action::Finish, Action::Previous], &[ - Event::from(MetaEvent::MoveCursorDown), - Event::from(StandardEvent::SearchStart), - Event::from('x'), - Event::from(StandardEvent::SearchFinish), + "pick aaaaaaaa comment1", + "pick aaaaaaaa comment2", + "pick aaaaaaaa comment3", ], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(Contains "{IndicatorColor}"), - render_line!(Not Contains "{IndicatorColor}"), - render_line!(Contains "{IndicatorColor,Underline}"), - render_line!(Not Contains "{IndicatorColor}"), - render_line!(Contains "{IndicatorColor}"), - "{TRAILING}", - "{Normal}[x]: 2/3" + assert_results!( + test_context.results.pop().unwrap(), + AnyArtifact, + Artifact::SearchTerm(String::from("aaa")) ); + assert_some_eq!(test_context.list.search.current_match(), LineMatch::new(2, true, false)); }, ); } #[test] -fn highlight_multiple() { - module_test( - &["pick 12345678 xaxxaxxx"], - &[Event::from(StandardEvent::SearchStart), Event::from('x')], +fn cancel() { + search_test( + &[Action::Start("aaa"), Action::Cancel], + &["pick aaaaaaaa comment1"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(Contains "{IndicatorColor}x{Normal}a{IndicatorColor}xx{Normal}a{IndicatorColor}xxx"), - "{TRAILING}", - "{Normal}/x{Normal,Underline}" - ); + assert_results!(test_context.results.pop().unwrap(), AnyArtifact, Artifact::SearchCancel); }, ); } #[test] -fn skip_no_content() { - module_test( - &["break"], - &[Event::from(StandardEvent::SearchStart), Event::from('x')], +fn ignored_event() { + search_test( + &[Action::Start("aaa"), Action::Event(Event::from(KeyCode::Null))], + &["pick aaaaaaaa comment1"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - _ = test_context.handle_all_events(&mut module); - let view_data = test_context.build_view_data(&mut module); - assert_rendered_output!( - Style view_data, - "{TITLE}{HELP}", - "{BODY}", - render_line!(Not Contains "{IndicatorColor}"), - "{TRAILING}", - "{Normal}/x{Normal,Underline}" + assert_results!( + test_context.results.pop().unwrap(), + Artifact::Event(Event::from(KeyCode::Null)) ); }, ); } #[test] -fn handle_other_event() { - module_test( - &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"], - &[ - Event::from(StandardEvent::SearchStart), - Event::from(StandardEvent::SearchFinish), - Event::from(MetaEvent::Abort), - ], +fn select_matching_line() { + search_test( + &[Action::Start("aaa"), Action::Event(Event::from(KeyCode::Null))], + &["pick aaaaaaaa comment1"], |mut test_context| { - let mut module = create_list(&Config::new(), test_context.take_todo_file()); - let mut results: Vec<_> = test_context.handle_all_events(&mut module); assert_results!( - results.remove(results.len() - 1), - Artifact::Event(Event::from(MetaEvent::Abort)), - Artifact::ChangeState(State::ConfirmAbort) + test_context.results.pop().unwrap(), + Artifact::Event(Event::from(KeyCode::Null)) ); }, ); |