use super::super::common::*;
#[test]
fn test_preview_command_in_adhoc_mode() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"ls",
"--preview-command",
"cat {}",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains(
"╭───────────────────── Custom Channel ─────────────────────╮╭─",
);
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_preview_command_override_in_channel_mode() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--preview-command",
"cat {}",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains(
"╭───────────────────────── files ──────────────────────────╮╭─",
);
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_preview_header_with_preview_command() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--preview-header",
"UNIQUE16CHARID",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("UNIQUE16CHARID");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_preview_footer_with_preview_command() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--preview-footer",
"UNIQUE16CHARID",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("UNIQUE16CHARID");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_preview_offset_with_preview_command() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--input",
"CODE_OF_CONDUCT.md",
"-p",
"cat -n {}",
"--preview-offset",
"50",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("││ 50");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_preview_size_with_preview_command() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--preview-size",
"60",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains(
"╭─────────────────── files ────────────────────╮",
);
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_preview_word_wrap_with_preview_command() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--preview-word-wrap",
"-p",
"echo 'Hello world'",
"--preview-size",
"10",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("│ Hello │");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_no_preview_disables_preview_panel() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"ls",
"--no-preview",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_not_tui_frame_contains("─ Preview ─");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_no_preview_conflicts_with_preview_command() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--no-preview",
"--preview-command",
"cat {}",
]);
tester.spawn_command(cmd);
tester.assert_raw_output_contains("cannot be used with");
}
#[test]
fn test_no_preview_conflicts_with_preview_header() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"ls",
"--no-preview",
"--preview-header",
"UNIQUE16CHARID",
]);
tester.spawn_command(cmd);
tester.assert_raw_output_contains("cannot be used with");
}
#[test]
fn test_no_preview_conflicts_with_preview_footer() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"ls",
"--no-preview",
"--preview-footer",
"UNIQUE16CHARID",
]);
tester.spawn_command(cmd);
tester.assert_raw_output_contains("cannot be used with");
}
#[test]
fn test_no_preview_conflicts_with_preview_offset() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"ls",
"--no-preview",
"--preview-offset",
"10",
]);
tester.spawn_command(cmd);
tester.assert_raw_output_contains("cannot be used with");
}
#[test]
fn test_no_preview_conflicts_with_preview_size() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"ls",
"--no-preview",
"--preview-size",
"60",
]);
tester.spawn_command(cmd);
tester.assert_raw_output_contains("cannot be used with");
}
#[test]
fn test_preview_flags_without_preview_command_errors_in_adhoc_mode() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"ls",
"--preview-header",
"HEADER",
]);
tester.spawn_command(cmd);
tester.assert_raw_output_contains(
"preview-header requires a preview command",
);
}
#[test]
fn test_hide_preview_flag_starts_with_preview_hidden() {
let mut tester = PtyTester::new();
let cmd =
tv_local_config_and_cable_with_args(&["files", "--hide-preview"]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("╭─────────────────────────────────────────────────────── files ────────────────────────────────────────────────────────╮");
tester.assert_not_tui_frame_contains("───╮╭───");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_show_preview_flag_starts_with_preview_visible() {
let mut tester = PtyTester::new();
let cmd =
tv_local_config_and_cable_with_args(&["files", "--show-preview"]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("───╮╭───");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_hide_preview_conflicts_with_no_preview() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"ls",
"--hide-preview",
"--no-preview",
]);
tester.spawn_command(cmd);
tester.assert_raw_output_contains("cannot be used with");
}