Files

53 lines
2.0 KiB
Rust

// file: crates/knowledge-web-lib/unit_tests/assets.rs
// version: 1
//! Unit tests for Vite asset resolution.
#[test]
fn development_assets_include_vite_client_before_main_entry() {
let assets = match crate::ViteAssets::development("http://127.0.0.1:5173/") {
Ok(value) => value,
Err(error) => {
assert!(error.is_empty(), "unexpected development asset error: {error}");
return;
},
};
assert_eq!(assets.scripts().len(), 2);
assert_eq!(assets.scripts()[0], "http://127.0.0.1:5173/@vite/client");
assert_eq!(assets.scripts()[1], "http://127.0.0.1:5173/src/main.ts");
assert!(assets.stylesheets().is_empty());
assert!(assets.static_assets_directory().is_none());
assert!(assets.static_mount_path().is_none());
}
#[test]
fn production_manifest_resolves_hashes_and_asset_base() {
let manifest = r#"{
"src/main.ts": {
"file": "assets/main-abc.js",
"css": ["assets/main-def.css"],
"isEntry": true
}
}"#;
let assets = match crate::ViteAssets::from_manifest_text(manifest, "/", std::path::PathBuf::from("/tmp/knowledge-assets")) {
Ok(value) => value,
Err(error) => {
assert!(error.is_empty(), "unexpected manifest error: {error}");
return;
},
};
assert_eq!(assets.scripts().len(), 1);
assert_eq!(assets.scripts()[0], "/assets/main-abc.js");
assert_eq!(assets.stylesheets().len(), 1);
assert_eq!(assets.stylesheets()[0], "/assets/main-def.css");
assert_eq!(assets.static_assets_directory(), Some(std::path::Path::new("/tmp/knowledge-assets")));
assert_eq!(assets.static_mount_path(), Some("/assets"));
}
#[test]
fn manifest_requires_the_stable_main_entry() {
let manifest = r#"{"index.html": {"file": "assets/index.js", "isEntry": true}}"#;
let result = crate::ViteAssets::from_manifest_text(manifest, "/", std::path::PathBuf::from("/tmp/knowledge-assets"));
assert!(result.is_err());
}