81 lines
2.4 KiB
Rust
81 lines
2.4 KiB
Rust
use super::utils::APP_TASK;
|
|
use insta::assert_snapshot;
|
|
use loco_gen::{collect_messages, generate, AppInfo, Component};
|
|
use rrgen::RRgen;
|
|
use std::fs;
|
|
|
|
macro_rules! configure_insta {
|
|
() => {
|
|
let mut settings = insta::Settings::clone_current();
|
|
settings.set_prepend_module_to_snapshot(false);
|
|
settings.set_snapshot_suffix("task");
|
|
let _guard = settings.bind_to_scope();
|
|
};
|
|
}
|
|
|
|
#[test]
|
|
fn can_generate() {
|
|
configure_insta!();
|
|
|
|
let component = Component::Task {
|
|
name: "cleanup".to_string(),
|
|
};
|
|
|
|
let tree_fs = tree_fs::TreeBuilder::default()
|
|
.drop(true)
|
|
.add_empty("src/tasks/mod.rs")
|
|
.add_empty("tests/requests/mod.rs")
|
|
.add_empty("tests/tasks/mod.rs")
|
|
.add("src/app.rs", APP_TASK)
|
|
.create()
|
|
.expect("Failed to create tree_fs structure");
|
|
|
|
let rrgen = RRgen::with_working_dir(&tree_fs.root);
|
|
|
|
let gen_result = generate(
|
|
&rrgen,
|
|
component,
|
|
&AppInfo {
|
|
app_name: "tester".to_string(),
|
|
},
|
|
)
|
|
.expect("Failed to generate components");
|
|
|
|
assert_eq!(
|
|
collect_messages(&gen_result),
|
|
r"* A Task `Cleanup` was added successfully. Run with `cargo loco task cleanup`.
|
|
* Tests for task `Cleanup` was added successfully. Run `cargo test`.
|
|
"
|
|
);
|
|
|
|
let task_path = tree_fs.root.join("src").join("tasks");
|
|
assert_snapshot!(
|
|
"generate[controller_file]",
|
|
fs::read_to_string(task_path.join("cleanup.rs"))
|
|
.expect("Failed to read generated task file: cleanup.rs")
|
|
);
|
|
assert_snapshot!(
|
|
"inject[task_mod_rs]",
|
|
fs::read_to_string(task_path.join("mod.rs"))
|
|
.expect("Failed to read updated task mod file: mod.rs")
|
|
);
|
|
assert_snapshot!(
|
|
"inject[app_rs]",
|
|
fs::read_to_string(tree_fs.root.join("src").join("app.rs"))
|
|
.expect("Failed to read updated app file: app.rs")
|
|
);
|
|
|
|
// Assertions for test files
|
|
let tests_task_path = tree_fs.root.join("tests").join("tasks");
|
|
assert_snapshot!(
|
|
"generate[tests_task_file]",
|
|
fs::read_to_string(tests_task_path.join("cleanup.rs"))
|
|
.expect("Failed to read generated tests task file: cleanup.rs")
|
|
);
|
|
assert_snapshot!(
|
|
"inject[tests_task_mod]",
|
|
fs::read_to_string(tests_task_path.join("mod.rs"))
|
|
.expect("Failed to read updated tests task mod file: mod.rs")
|
|
);
|
|
}
|