use tempfile::TempDir;
use super::super::common::*;
#[test]
fn test_toggle_preview_keybinding() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&["files"]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("───╮╭───");
tester.send(&ctrl('o'));
tester.assert_not_tui_frame_contains("───╮╭───");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_toggle_remote_control_keybinding() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&["files"]);
let mut child = tester.spawn_command_tui(cmd);
tester.send(&ctrl('t'));
tester.assert_tui_frame_contains("(1) (2) (3)");
tester.send(&ctrl('c'));
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_toggle_status_bar_keybinding() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--keybindings",
"ctrl-k = \"toggle_status_bar\"",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.send(&ctrl('k'));
tester.assert_not_tui_frame_contains("CHANNEL files");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_toggle_help_keybinding() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&["files"]);
let mut child = tester.spawn_command_tui(cmd);
tester.send(&ctrl('h'));
tester.assert_tui_frame_contains("───── Help ─────");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_scroll_preview_keybindings() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--input",
"README.md",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.send("\x1b[6~");
tester.send("\x1b[6~");
tester.assert_not_tui_frame_contains("││ 1");
tester.send("\x1b[5~");
tester.send("\x1b[5~");
tester.assert_tui_frame_contains("││ 1");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_reload_source_keybinding() {
let mut tester = PtyTester::new();
let tmp_dir = TempDir::new().unwrap();
std::fs::write(tmp_dir.path().join("UNIQUE16CHARIDfile.txt"), "").unwrap();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--input",
"UNIQUE16CHARID",
tmp_dir.path().to_str().unwrap(),
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("UNIQUE16CHARIDfile.txt");
std::fs::write(tmp_dir.path().join("UNIQUE16CHARIDcontrol.txt"), "")
.unwrap();
tester.send(&ctrl('r'));
tester.assert_tui_frame_contains("UNIQUE16CHARIDcontrol.txt");
tester.assert_tui_frame_contains("UNIQUE16CHARIDfile.txt");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_cycle_sources_keybinding() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&["files"]);
let mut child = tester.spawn_command_tui(cmd);
tester.send(&ctrl('s'));
tester.send(".config");
tester.assert_tui_frame_contains(".config/config.toml");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_toggle_preview_disabled_in_remote_control_mode() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&["files"]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains(
"╭───────────────────────── files ──────────────────────────╮╭─",
);
tester.assert_tui_frame_contains("───╮╭───");
tester.send(&ctrl('t'));
tester.assert_tui_frame_contains("(1) (2) (3)");
tester.assert_tui_frame_contains("Back to Channel:");
tester.send(&ctrl('o'));
tester.assert_tui_frame_contains("(1) (2) (3)");
tester.assert_tui_frame_contains("Back to Channel:");
tester.assert_tui_frame_contains(
"╭───────────────────────── files ──────────────────────────╮╭─",
);
tester.send(&ctrl('t'));
tester.assert_not_tui_frame_contains("Back to Channel:");
tester.assert_tui_frame_contains("───╮╭───");
tester.send(&ctrl('o'));
tester.assert_not_tui_frame_contains("───╮╭───");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}