v0.3.7-pre.012

This commit is contained in:
2026-09-02 20:29:50 +02:00
parent 618f940310
commit 4c16607e22
14 changed files with 388 additions and 26 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-backfill-desk/tests/desktop_contract.rs
// version: 13
// version: 14
//! Structural desktop contract checks for the Backfill Desk scaffold.
@@ -404,3 +404,33 @@ fn pre_011_resume_reissues_rust_only_checkpoint_for_new_backend_job_without_ipc_
assert!(html.contains("resumeBackfillRun"));
assert!(html.contains("Reprendre"));
}
#[test]
fn pre_012_free_address_autocomplete_is_html_datalist_derived_from_core_registry() {
let root = app_root();
let dto = read_text(root.join("src/dto_common.rs").as_path());
assert!(dto.contains("ksp_core_lib::entries()"));
assert!(dto.contains("ProgramIdAutocompleteOptionDto"));
assert!(dto.contains("program_id_autocomplete_options"));
let html = read_text(root.join("frontend/main.html").as_path());
assert!(html.contains("list=\"backfillProgramIds\""));
assert!(html.contains("<datalist id=\"backfillProgramIds\"></datalist>"));
assert!(html.contains("toute adresse Solana valide reste acceptée"));
let frontend = read_text(root.join("frontend/ts/main.ts").as_path());
for required in [
"renderProgramIdAutocomplete(options.programIdOptions)",
"option.value = program.programId",
"option.dataset.code = program.code",
"option.dataset.domain = program.domain",
"registryMatch: selected !== null",
"Backfill Desk Program ID autocomplete dataset rendered",
] {
assert!(frontend.contains(required), "missing pre.012 autocomplete marker {required}");
}
for forbidden in
["AddressLookupTab1e1111111111111111111111111", "ComputeBudget111111111111111111111111111111", "Vote111111111111111111111111111111111111111"]
{
assert!(!frontend.contains(forbidden), "frontend hardcodes canonical Program ID {forbidden}");
assert!(!html.contains(forbidden), "HTML hardcodes canonical Program ID {forbidden}");
}
}