use std::path::Path;
use super::naming::{ensure_missing, snake_case, tests_file_path, validate_type_name};
use super::write::GeneratedFile;
pub(crate) fn generate(root: &Path, raw_name: &str) -> Result<GeneratedFile, String> {
let name = validate_type_name(raw_name)?;
let stem = format!("{}_test", snake_case(&name));
let path = tests_file_path(root, &format!("{stem}.rs"))?;
ensure_missing(&path)?;
let content = render(&name);
Ok(GeneratedFile { path, content })
}
fn render(name: &str) -> String {
format!(
"//! Integration test for `{name}`.\n\
\n\
#[test]\n\
fn {snake}_smoke() {{\n\
\x20 // Replace with a real test. Run with `cargo test --test {snake}_test`.\n\
\x20 assert!(true);\n\
}}\n",
name = name,
snake = snake_case(name),
)
}