53 lines
2.0 KiB
Rust
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());
|
|
}
|