use super::Generator;
use crate::parser;
use std::fs;
use std::io;
use std::path::Path;
mod convert;
mod names;
mod prepare_model_data;
mod render;
mod utils;
pub struct DartGenerator;
impl Generator for DartGenerator {
fn generate(&self, requests: &[parser::Request], output: &Path) -> io::Result<()> {
let file_content = render::render_schema_file(requests);
fs::write(output, file_content)
}
}
#[cfg(test)]
mod tests {
use super::*;
use std::time::{SystemTime, UNIX_EPOCH};
#[test]
fn writes_schema_file() {
let mut output = std::env::temp_dir();
let nanos = SystemTime::now()
.duration_since(UNIX_EPOCH)
.expect("system time")
.as_nanos();
output.push(format!("kayto-dart-{nanos}.dart"));
DartGenerator
.generate(&[], &output)
.expect("dart generation should write file");
let text = fs::read_to_string(&output).expect("generated file should be readable");
assert!(text.contains("This file is generated by kayto"));
let _ = fs::remove_file(output);
}
}