use super::*;
#[test]
fn adoption_report_round_trips_through_json() {
let manifest = RoleArtifactManifestV1 {
schema_version: 1,
manifest_id: "manifest-1".to_string(),
network: "local".to_string(),
artifact_root: None,
role_artifacts: vec![RoleArtifactV1 {
role: "api".to_string(),
source: ArtifactSourceV1::LocalBuild,
build_profile: "fast".to_string(),
wasm_path: None,
wasm_gz_path: None,
wasm_gz_size_bytes: None,
wasm_sha256: None,
wasm_gz_sha256: None,
wasm_gz_sha256_source: None,
observed_wasm_gz_file_sha256: None,
observed_wasm_gz_file_sha256_source: None,
installed_module_hash: None,
candid_path: None,
candid_sha256: None,
raw_config_sha256: None,
canonical_embedded_config_sha256: None,
embedded_topology_sha256: None,
builder_version: None,
rust_toolchain: None,
package_version: None,
}],
unresolved_artifacts: Vec::new(),
};
let report = adoption_report_from_config_source(AdoptionReportRequest {
report_id: "adoption-1",
generated_at: "2026-05-30T00:00:00Z",
profile: AdoptionProfileV1::Brownfield,
config_source: CONFIG,
inventory: None,
artifact_manifest: Some(&manifest),
package_metadata: Vec::new(),
})
.expect("adoption report");
let encoded = serde_json::to_string(&report).expect("encode report");
let decoded = serde_json::from_str::<AdoptionReportV1>(&encoded).expect("decode report");
assert_eq!(decoded, report);
assert_eq!(
role(&decoded, "api").artifact_state,
AdoptionArtifactStateV1::CanicBuilt
);
}