use farmfe_core::common::SideEffects;
use farmfe_testing_helpers::fixture;
use farmfe_toolkit::resolve::{self, PACKAGE_JSON_LOADER};
#[test]
fn load_package_json() {
fixture("tests/fixtures/resolve/**/index.*", |file, _| {
let dir = file.parent().unwrap();
let main = dir.join("src").join("main.ts");
let result = resolve::load_package_json(main.clone(), Default::default());
assert!(result.is_ok());
let result = result.unwrap();
assert_eq!(result.name, Some("fixture-package-json".to_string()));
assert_eq!(result.version, Some("1.0.0".to_string()));
assert!(matches!(
result.side_effects().unwrap(),
SideEffects::Bool(false)
));
let sub = dir.join("sub");
let result = resolve::load_package_json(sub.clone(), Default::default());
assert!(result.is_ok());
let result = result.unwrap();
assert_eq!(result.name, Some("sub-fixture".to_string()));
assert_eq!(result.version, Some("1.0.0".to_string()));
assert!(matches!(
result.side_effects().unwrap(),
SideEffects::Array(_)
));
if let SideEffects::Array(arr) = result.side_effects().unwrap() {
assert!(arr.len() == 1);
assert!(arr[0].is_match("main.css"));
}
let cache = PACKAGE_JSON_LOADER.cache();
assert!(cache.contains_key(&PACKAGE_JSON_LOADER.get_cache_key(&main, &Default::default())));
assert!(
cache.contains_key(&PACKAGE_JSON_LOADER.get_cache_key(&dir.join("src"), &Default::default()))
);
assert!(cache
.contains_key(&PACKAGE_JSON_LOADER.get_cache_key(&dir.to_path_buf(), &Default::default())));
let cached_result = cache
.get(&PACKAGE_JSON_LOADER.get_cache_key(&dir.join("src"), &Default::default()))
.unwrap();
assert_eq!(
cached_result.value().name,
Some("fixture-package-json".to_string()),
);
})
}