88 lines
2.3 KiB
Rust
88 lines
2.3 KiB
Rust
use insta::assert_snapshot;
|
|
use loco_gen::{collect_messages, generate, AppInfo, Component};
|
|
use rrgen::RRgen;
|
|
use std::fs;
|
|
|
|
#[test]
|
|
fn can_generate() {
|
|
let mut settings = insta::Settings::clone_current();
|
|
settings.set_prepend_module_to_snapshot(false);
|
|
settings.set_snapshot_suffix("mailer");
|
|
let _guard = settings.bind_to_scope();
|
|
|
|
let component = Component::Mailer {
|
|
name: "reset_password".to_string(),
|
|
};
|
|
|
|
let tree_fs = tree_fs::TreeBuilder::default()
|
|
.drop(true)
|
|
.add_empty("src/mailers/mod.rs")
|
|
.create()
|
|
.unwrap();
|
|
|
|
let rrgen = RRgen::with_working_dir(&tree_fs.root);
|
|
|
|
let gen_result = generate(
|
|
&rrgen,
|
|
component,
|
|
&AppInfo {
|
|
app_name: "tester".to_string(),
|
|
},
|
|
)
|
|
.expect("Generation failed");
|
|
|
|
assert_eq!(
|
|
collect_messages(&gen_result),
|
|
r"* A mailer `ResetPassword` was added successfully.
|
|
"
|
|
);
|
|
|
|
let mailer_path = tree_fs.root.join("src").join("mailers");
|
|
|
|
for (name, path) in [
|
|
(
|
|
"generate[mailer_mod_rs]",
|
|
mailer_path.join("reset_password.rs"),
|
|
),
|
|
("inject[mailer_mod_rs]", mailer_path.join("mod.rs")),
|
|
(
|
|
"generate[subject_t_file]",
|
|
mailer_path
|
|
.join("reset_password")
|
|
.join("welcome")
|
|
.join("subject.t"),
|
|
),
|
|
(
|
|
"generate[text_t_file]",
|
|
mailer_path
|
|
.join("reset_password")
|
|
.join("welcome")
|
|
.join("text.t"),
|
|
),
|
|
(
|
|
"generate[html_t_file]",
|
|
mailer_path
|
|
.join("reset_password")
|
|
.join("welcome")
|
|
.join("html.t"),
|
|
),
|
|
(
|
|
"generate[shared_base_t_file]",
|
|
mailer_path.join("shared").join("base.t"),
|
|
),
|
|
(
|
|
"generate[shared_subject_t_file]",
|
|
mailer_path.join("shared").join("subject.t"),
|
|
),
|
|
(
|
|
"generate[shared_text_t_file]",
|
|
mailer_path.join("shared").join("text.t"),
|
|
),
|
|
] {
|
|
assert_snapshot!(
|
|
name,
|
|
fs::read_to_string(path).unwrap_or_else(|_| panic!("{name} missing"))
|
|
);
|
|
}
|
|
}
|