use super::*;
use tui_textarea::CursorMove;
#[test]
fn test_error_overlay_initializes_hidden() {
let app = test_app(TEST_JSON);
assert!(!app.error_overlay_visible);
}
#[test]
fn test_ctrl_e_toggles_error_overlay_when_error_exists() {
let mut app = test_app(TEST_JSON);
app.input.editor_mode = EditorMode::Insert;
app.handle_key_event(key(KeyCode::Char('|')));
flush_debounced_query(&mut app);
assert!(app.query.as_ref().unwrap().result.is_err());
assert!(!app.error_overlay_visible);
app.handle_key_event(key_with_mods(KeyCode::Char('e'), KeyModifiers::CONTROL));
assert!(app.error_overlay_visible);
app.handle_key_event(key_with_mods(KeyCode::Char('e'), KeyModifiers::CONTROL));
assert!(!app.error_overlay_visible);
}
#[test]
fn test_ctrl_e_does_nothing_when_no_error() {
let mut app = test_app(TEST_JSON);
assert!(app.query.as_ref().unwrap().result.is_ok());
assert!(!app.error_overlay_visible);
app.handle_key_event(key_with_mods(KeyCode::Char('e'), KeyModifiers::CONTROL));
assert!(!app.error_overlay_visible); }
#[test]
fn test_error_overlay_hides_on_query_change() {
let mut app = test_app(TEST_JSON);
app.input.editor_mode = EditorMode::Insert;
app.handle_key_event(key(KeyCode::Char('|')));
flush_debounced_query(&mut app);
assert!(app.query.as_ref().unwrap().result.is_err());
app.handle_key_event(key_with_mods(KeyCode::Char('e'), KeyModifiers::CONTROL));
assert!(app.error_overlay_visible);
app.handle_key_event(key(KeyCode::Backspace));
assert!(!app.error_overlay_visible);
}
#[test]
fn test_error_overlay_hides_on_query_change_in_normal_mode() {
let mut app = test_app(TEST_JSON);
app.input.editor_mode = EditorMode::Insert;
app.handle_key_event(key(KeyCode::Char('|')));
flush_debounced_query(&mut app);
assert!(app.query.as_ref().unwrap().result.is_err());
app.handle_key_event(key_with_mods(KeyCode::Char('e'), KeyModifiers::CONTROL));
assert!(app.error_overlay_visible);
app.handle_key_event(key(KeyCode::Esc));
app.input.textarea.move_cursor(CursorMove::Head);
app.handle_key_event(key(KeyCode::Char('x')));
assert!(!app.error_overlay_visible);
}
#[test]
fn test_ctrl_e_works_in_normal_mode() {
let mut app = test_app(TEST_JSON);
app.input.editor_mode = EditorMode::Insert;
app.handle_key_event(key(KeyCode::Char('|')));
flush_debounced_query(&mut app);
assert!(app.query.as_ref().unwrap().result.is_err());
app.handle_key_event(key(KeyCode::Esc));
assert_eq!(app.input.editor_mode, EditorMode::Normal);
app.handle_key_event(key_with_mods(KeyCode::Char('e'), KeyModifiers::CONTROL));
assert!(app.error_overlay_visible);
}
#[test]
fn test_ctrl_e_works_when_results_pane_focused() {
let mut app = test_app(TEST_JSON);
app.input.editor_mode = EditorMode::Insert;
app.handle_key_event(key(KeyCode::Char('|')));
flush_debounced_query(&mut app);
assert!(app.query.as_ref().unwrap().result.is_err());
app.handle_key_event(key(KeyCode::BackTab));
assert_eq!(app.focus, Focus::ResultsPane);
app.handle_key_event(key_with_mods(KeyCode::Char('e'), KeyModifiers::CONTROL));
assert!(app.error_overlay_visible);
}