File size: 2,212 Bytes
afa0cbf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | use crate::GenerateTsOptions;
use crate::generate_internal_json_schema;
use crate::generate_json_with_experimental;
use crate::generate_ts_with_options;
use crate::precomputed_exports::GENERATED_TS_HEADER;
use crate::precomputed_exports::decode_precomputed_exports;
use crate::schema_fixtures::collect_export_files_recursive;
use anyhow::Context;
use anyhow::Result;
use pretty_assertions::assert_eq;
use std::path::Path;
#[test]
fn precomputed_exports_are_written_to_disk() -> Result<()> {
let output_dir = tempfile::tempdir().context("create export temp dir")?;
let typescript_dir = output_dir.path().join("typescript");
let json_dir = output_dir.path().join("json");
let internal_json_dir = output_dir.path().join("internal-json");
generate_ts_with_options(
&typescript_dir,
/*prettier*/ None,
GenerateTsOptions::default(),
)?;
generate_json_with_experimental(&json_dir, /*experimental_api*/ false)?;
generate_internal_json_schema(&internal_json_dir)?;
let exports = decode_precomputed_exports(/*experimental_api*/ false)?;
assert_eq!(
collect_export_files_recursive(&typescript_dir)?,
exports.typescript
);
assert_eq!(
collect_export_files_recursive(&json_dir)?,
exports.json_schema
);
assert_eq!(
collect_export_files_recursive(&internal_json_dir)?,
exports.internal_json_schema
);
Ok(())
}
#[test]
fn typescript_export_options_preserve_generator_behavior() -> Result<()> {
let output_dir = tempfile::tempdir().context("create TypeScript export temp dir")?;
generate_ts_with_options(
output_dir.path(),
/*prettier*/ None,
GenerateTsOptions {
generate_indices: false,
ensure_headers: false,
..GenerateTsOptions::default()
},
)?;
let files = collect_export_files_recursive(output_dir.path())?;
assert!(!files.keys().any(|path| {
Path::new(path)
.file_name()
.is_some_and(|name| name == "index.ts")
}));
assert!(
files
.values()
.all(|contents| !contents.starts_with(GENERATED_TS_HEADER))
);
Ok(())
}
|