use super::*;
use harness::{explorer_selected_state, table_detail_loaded_state, with_current_result};
use sabiql_app::model::shared::ui_state::FocusMode;
#[test]
fn table_selection_with_preview() {
let mut state = table_detail_loaded_state();
let mut terminal = create_test_terminal();
with_current_result(&mut state);
let output = render_to_string(&mut terminal, &mut state);
insta::assert_snapshot!(output);
}
#[test]
fn focus_on_result_pane() {
let mut state = explorer_selected_state();
let mut terminal = create_test_terminal();
state
.query
.set_current_result(Arc::new(fixtures::sample_query_result()));
state.ui.focused_pane = FocusedPane::Result;
let output = render_to_string(&mut terminal, &mut state);
insta::assert_snapshot!(output);
}
#[test]
fn focus_mode_fullscreen_result() {
let mut state = explorer_selected_state();
let mut terminal = create_test_terminal();
state
.query
.set_current_result(Arc::new(fixtures::sample_query_result()));
state.ui.focus_mode = FocusMode::focused(state.ui.focused_pane);
let output = render_to_string(&mut terminal, &mut state);
insta::assert_snapshot!(output);
}
#[test]
fn error_message_in_footer() {
let mut state = explorer_selected_state();
let now = test_instant();
let mut terminal = create_test_terminal();
state.messages.last_error = Some("Connection failed: timeout".to_string());
state.messages.expires_at = Some(now + Duration::from_secs(10));
let output = render_to_string(&mut terminal, &mut state);
insta::assert_snapshot!(output);
}
#[test]
fn empty_query_result() {
let mut state = table_detail_loaded_state();
let mut terminal = create_test_terminal();
state
.query
.set_current_result(Arc::new(fixtures::empty_query_result()));
let output = render_to_string(&mut terminal, &mut state);
insta::assert_snapshot!(output);
}