devscout-rs 0.10.0

Fast code index for C# and TypeScript codebases -- map, find, refs, impact from the CLI.
use super::*;

#[test]
fn module_resolution_ac_3_manifest_preserves_condition_order() {
    let package = parse_package(
        "lib",
        r#"{
        "name":"lib", "type":"module",
        "exports":{".":{"default":"./fallback.js","import":"./esm.js"}}
    }"#,
    )
    .unwrap();
    let root = package.exports.unwrap();
    let conditions = root
        .as_object()
        .unwrap()
        .get(".")
        .unwrap()
        .as_object()
        .unwrap();
    assert_eq!(
        conditions
            .iter()
            .map(|(key, _)| key.as_str())
            .collect::<Vec<_>>(),
        vec!["default", "import"]
    );
}

#[test]
fn module_resolution_ac_6_bad_manifest_is_refused_whole() {
    for (document, field) in [
        (r#"{"name":2,"type":"module"}"#, "name"),
        (r#"{"name":"lib","type":"esm"}"#, "type"),
        (
            r#"{"name":"lib","exports":{".":"./x.js","default":"./y.js"}}"#,
            "exports",
        ),
        (
            r#"{"name":"lib","workspaces":{"packages":"apps/*"}}"#,
            "workspaces",
        ),
        ("{", "document"),
    ] {
        assert_eq!(parse_package("lib", document).unwrap_err(), field);
    }
}