use indoc::indoc;
use similar::TextDiff;
use crate::scarb::AnalyzedCratesResult;
use crate::support::normalize::normalize;
use crate::support::sandbox;
#[test]
fn opening_dependency_first() {
let mut ls = sandbox! {
files {
"pkg/Scarb.toml" => indoc! {r#"
[package]
name = "pkg"
version = "0.1.0"
edition = "2025_12"
[[target.starknet-contract]]
[dependencies]
dep = { path = "../dep" }
"#},
"pkg/src/lib.cairo" => "",
"dep/Scarb.toml" => indoc!(r#"
[package]
name = "dep"
version = "0.1.0"
edition = "2025_12"
[dev-dependencies]
cairo_test = "2"
dev_dep = { path = "../dev_dep" }
"#),
"dep/src/lib.cairo" => "",
"dev_dep/Scarb.toml" => indoc!(r#"
[package]
name = "dev_dep"
version = "0.1.0"
edition = "2025_12"
"#),
"dev_dep/src/lib.cairo" => "",
}
};
let analyzed_crates = ls.open_and_wait_for_project_update("dep/src/lib.cairo");
let analyzed_crates = normalize(&ls, analyzed_crates);
let analyzed_crates_after = ls.open_and_wait_for_project_update("pkg/src/lib.cairo");
let analyzed_crates_after = normalize(&ls, analyzed_crates_after);
let analyzed_crates_diff = TextDiff::from_lines(&analyzed_crates, &analyzed_crates_after)
.unified_diff()
.context_radius(15)
.to_string();
insta::assert_toml_snapshot!(AnalyzedCratesResult { analyzed_crates, analyzed_crates_diff })
}