Test that vim mode can be disabled on startup

This commit is contained in:
Nathan Sobo 2022-03-26 19:18:48 -06:00
parent 2837125098
commit 30e31f6561

View File

@ -11,7 +11,7 @@ use crate::*;
#[gpui::test] #[gpui::test]
async fn test_insert_mode(cx: &mut gpui::TestAppContext) { async fn test_insert_mode(cx: &mut gpui::TestAppContext) {
let mut cx = VimTestAppContext::new(cx, "").await; let mut cx = VimTestAppContext::new(cx, true, "").await;
cx.simulate_keystroke("i"); cx.simulate_keystroke("i");
assert_eq!(cx.mode(), Mode::Insert); assert_eq!(cx.mode(), Mode::Insert);
cx.simulate_keystrokes(&["T", "e", "s", "t"]); cx.simulate_keystrokes(&["T", "e", "s", "t"]);
@ -23,7 +23,7 @@ async fn test_insert_mode(cx: &mut gpui::TestAppContext) {
#[gpui::test] #[gpui::test]
async fn test_normal_hjkl(cx: &mut gpui::TestAppContext) { async fn test_normal_hjkl(cx: &mut gpui::TestAppContext) {
let mut cx = VimTestAppContext::new(cx, "Test\nTestTest\nTest").await; let mut cx = VimTestAppContext::new(cx, true, "Test\nTestTest\nTest").await;
cx.simulate_keystroke("l"); cx.simulate_keystroke("l");
cx.assert_newest_selection_head(indoc! {" cx.assert_newest_selection_head(indoc! {"
T|est T|est
@ -81,15 +81,17 @@ async fn test_normal_hjkl(cx: &mut gpui::TestAppContext) {
#[gpui::test] #[gpui::test]
async fn test_toggle_through_settings(cx: &mut gpui::TestAppContext) { async fn test_toggle_through_settings(cx: &mut gpui::TestAppContext) {
let mut cx = VimTestAppContext::new(cx, "").await; let mut cx = VimTestAppContext::new(cx, true, "").await;
cx.simulate_keystroke("i");
assert_eq!(cx.mode(), Mode::Insert);
// Editor acts as though vim is disabled // Editor acts as though vim is disabled
cx.disable_vim(); cx.disable_vim();
assert_eq!(cx.mode(), Mode::Insert);
cx.simulate_keystrokes(&["h", "j", "k", "l"]); cx.simulate_keystrokes(&["h", "j", "k", "l"]);
cx.assert_newest_selection_head("hjkl|"); cx.assert_newest_selection_head("hjkl|");
// Enabling dynamically sets vim mode again // Enabling dynamically sets vim mode again and restores normal mode
cx.enable_vim(); cx.enable_vim();
assert_eq!(cx.mode(), Mode::Normal); assert_eq!(cx.mode(), Mode::Normal);
cx.simulate_keystrokes(&["h", "h", "h", "l"]); cx.simulate_keystrokes(&["h", "h", "h", "l"]);
@ -106,6 +108,13 @@ async fn test_toggle_through_settings(cx: &mut gpui::TestAppContext) {
assert_eq!(cx.mode(), Mode::Normal); assert_eq!(cx.mode(), Mode::Normal);
} }
#[gpui::test]
async fn test_initially_disabled(cx: &mut gpui::TestAppContext) {
let mut cx = VimTestAppContext::new(cx, false, "").await;
cx.simulate_keystrokes(&["h", "j", "k", "l"]);
cx.assert_newest_selection_head("hjkl|");
}
struct VimTestAppContext<'a> { struct VimTestAppContext<'a> {
cx: &'a mut gpui::TestAppContext, cx: &'a mut gpui::TestAppContext,
window_id: usize, window_id: usize,
@ -115,6 +124,7 @@ struct VimTestAppContext<'a> {
impl<'a> VimTestAppContext<'a> { impl<'a> VimTestAppContext<'a> {
async fn new( async fn new(
cx: &'a mut gpui::TestAppContext, cx: &'a mut gpui::TestAppContext,
enabled: bool,
initial_editor_text: &str, initial_editor_text: &str,
) -> VimTestAppContext<'a> { ) -> VimTestAppContext<'a> {
cx.update(|cx| { cx.update(|cx| {
@ -125,7 +135,7 @@ impl<'a> VimTestAppContext<'a> {
cx.update(|cx| { cx.update(|cx| {
cx.update_global(|settings: &mut Settings, _| { cx.update_global(|settings: &mut Settings, _| {
settings.vim_mode = true; settings.vim_mode = enabled;
}); });
}); });