use ralph::commands::tutorial::{
ScriptedResponse, ScriptedTutorialPrompter, run_tutorial_with_prompter,
};
use serial_test::serial;
#[test]
#[serial]
fn tutorial_completes_with_scripted_prompter() {
let prompter = ScriptedTutorialPrompter::new(vec![
ScriptedResponse::Pause, ScriptedResponse::Pause, ScriptedResponse::Pause, ScriptedResponse::Pause, ScriptedResponse::Pause, ]);
let result = run_tutorial_with_prompter(&prompter, false);
assert!(
result.is_ok(),
"tutorial should complete: {:?}",
result.err()
);
}
#[test]
#[serial]
fn tutorial_keeps_sandbox_when_requested() {
let prompter = ScriptedTutorialPrompter::new(vec![
ScriptedResponse::Pause,
ScriptedResponse::Pause,
ScriptedResponse::Pause,
ScriptedResponse::Pause,
ScriptedResponse::Pause,
]);
let result = run_tutorial_with_prompter(&prompter, true);
assert!(
result.is_ok(),
"tutorial with keep_sandbox should complete: {:?}",
result.err()
);
}
#[test]
#[serial]
fn tutorial_handles_user_quit_gracefully() {
let prompter = ScriptedTutorialPrompter::new(vec![
ScriptedResponse::Pause, ]);
let result = run_tutorial_with_prompter(&prompter, false);
assert!(
result.is_err(),
"tutorial should fail when responses exhausted"
);
}