use crate::state::AppState;
use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};
use crate::events::modals::scan::handle_scan_config;
#[test]
fn scan_config_esc_closes_modal() {
let mut app = AppState {
modal: crate::state::Modal::ScanConfig {
do_clamav: false,
do_trivy: false,
do_semgrep: false,
do_shellcheck: false,
do_virustotal: false,
do_custom: false,
do_sleuth: false,
cursor: 0,
},
..Default::default()
};
let mut do_clamav = false;
let mut do_trivy = false;
let mut do_semgrep = false;
let mut do_shellcheck = false;
let mut do_virustotal = false;
let mut do_custom = false;
let mut do_sleuth = false;
let mut cursor = 0;
let ke = KeyEvent::new(KeyCode::Esc, KeyModifiers::empty());
let _ = handle_scan_config(
ke,
&mut app,
&mut do_clamav,
&mut do_trivy,
&mut do_semgrep,
&mut do_shellcheck,
&mut do_virustotal,
&mut do_custom,
&mut do_sleuth,
&mut cursor,
);
match app.modal {
crate::state::Modal::None | crate::state::Modal::Preflight { .. } => {}
_ => panic!("Expected modal to be closed or previous modal restored"),
}
}
#[test]
fn scan_config_navigation() {
let mut app = AppState {
modal: crate::state::Modal::ScanConfig {
do_clamav: false,
do_trivy: false,
do_semgrep: false,
do_shellcheck: false,
do_virustotal: false,
do_custom: false,
do_sleuth: false,
cursor: 0,
},
..Default::default()
};
let mut do_clamav = false;
let mut do_trivy = false;
let mut do_semgrep = false;
let mut do_shellcheck = false;
let mut do_virustotal = false;
let mut do_custom = false;
let mut do_sleuth = false;
let mut cursor = 0;
let ke = KeyEvent::new(KeyCode::Down, KeyModifiers::empty());
let _ = handle_scan_config(
ke,
&mut app,
&mut do_clamav,
&mut do_trivy,
&mut do_semgrep,
&mut do_shellcheck,
&mut do_virustotal,
&mut do_custom,
&mut do_sleuth,
&mut cursor,
);
assert_eq!(cursor, 1, "Cursor should move down");
}
#[test]
fn scan_config_toggle() {
let mut app = AppState {
modal: crate::state::Modal::ScanConfig {
do_clamav: false,
do_trivy: false,
do_semgrep: false,
do_shellcheck: false,
do_virustotal: false,
do_custom: false,
do_sleuth: false,
cursor: 0,
},
..Default::default()
};
let mut do_clamav = false;
let mut do_trivy = false;
let mut do_semgrep = false;
let mut do_shellcheck = false;
let mut do_virustotal = false;
let mut do_custom = false;
let mut do_sleuth = false;
let mut cursor = 0;
let ke = KeyEvent::new(KeyCode::Char(' '), KeyModifiers::empty());
let _ = handle_scan_config(
ke,
&mut app,
&mut do_clamav,
&mut do_trivy,
&mut do_semgrep,
&mut do_shellcheck,
&mut do_virustotal,
&mut do_custom,
&mut do_sleuth,
&mut cursor,
);
assert!(do_clamav, "do_clamav should be toggled to true");
}
#[test]
fn scan_config_enter_executes() {
let mut app = AppState {
modal: crate::state::Modal::ScanConfig {
do_clamav: true,
do_trivy: false,
do_semgrep: false,
do_shellcheck: false,
do_virustotal: false,
do_custom: false,
do_sleuth: false,
cursor: 0,
},
pending_install_names: Some(vec!["test-pkg".to_string()]),
..Default::default()
};
let mut do_clamav = true;
let mut do_trivy = false;
let mut do_semgrep = false;
let mut do_shellcheck = false;
let mut do_virustotal = false;
let mut do_custom = false;
let mut do_sleuth = false;
let mut cursor = 0;
let ke = KeyEvent::new(KeyCode::Enter, KeyModifiers::empty());
let _ = handle_scan_config(
ke,
&mut app,
&mut do_clamav,
&mut do_trivy,
&mut do_semgrep,
&mut do_shellcheck,
&mut do_virustotal,
&mut do_custom,
&mut do_sleuth,
&mut cursor,
);
if let crate::state::Modal::ScanConfig { .. } = app.modal {
} else {
}
}