From 2b289fefb769072ff9fdca201fb7b7d8a92df8b0 Mon Sep 17 00:00:00 2001 From: man4ish Date: Fri, 9 Oct 2026 11:53:31 -0500 Subject: [PATCH] test(workbench): resync catalog contract for Batch 5 (uk_biobank, ega, eggnog, dbnsfp, marrvel, thousand_genomes) Adds the campaign's next six reference_db plugins on top of the already- integrated main baseline (Workbench native=367/legacy=134, from PR #714 "integrate Claude and Codex native UI campaigns"), validated against Workbench commit 7ea5b6bf on feat/refdb-batch5-uk-biobank-ega-eggnog-dbnsfp-marrvel-thousand-genomes (itself a clean cherry-pick of the original batch/refdb-native-query-01 branch's Batch 5 commit 26ab2ac0 onto fresh main -- that branch's earlier Batches 1-4 are already present on main via the integration merge, so only Batch 5 was new). Does not cherry-pick batch/refdb-native-query-01's own five catalog- resync commits (fb50e53, 7dad3e5, 44b2d16, 713dadd, 00ba2c3): each pins counts/lists for a narrower pre-integration baseline (fb50e53's and 713dadd's being 294-ish of 501, long superseded by this file's already-correct 367/134 post-integration state), so applying them verbatim would have regressed already-correct, already-merged content rather than adding anything new. The six-plugin delta is the only content from that branch not already represented here. New counts: enabled 501, native 367->373, legacy 134->128. batch/refdb-native-query-01 and its five original commits are untouched; this is a new, independent branch off origin/main. Contains no billing-related changes (verified: diff against origin/main touches only this one test file). Verified: this test plus the full tests/ui suite (96 files, 1383 tests) pass against the Batch 5 Workbench branch with zero regressions; `npm run build:ui` succeeds. Co-Authored-By: Claude Sonnet 5 --- tests/ui/workbench-catalog-contracts.test.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/tests/ui/workbench-catalog-contracts.test.js b/tests/ui/workbench-catalog-contracts.test.js index 258b9c19..04e6b4cc 100644 --- a/tests/ui/workbench-catalog-contracts.test.js +++ b/tests/ui/workbench-catalog-contracts.test.js @@ -11,31 +11,38 @@ import { resolveWorkbenchComponent } from "../../src/ui/components/workbench/com const source = process.env.WORKBENCH_SOURCE; const enabled = Boolean(source); describe.skipIf(!enabled)("generated Workbench catalog compatibility", () => { - it("validates 289 v1 native descriptors, 78 v2 queries, and legacy fallbacks", () => { + // Batch 5 (uk_biobank, ega, eggnog, dbnsfp, marrvel, thousand_genomes) adds + // the campaign's own next six reference_db plugins on top of this + // already-integrated baseline (Workbench commit 7ea5b6bf on + // feat/refdb-batch5-uk-biobank-ega-eggnog-dbnsfp-marrvel-thousand-genomes, + // itself Workbench's original Batch 5 commit 26ab2ac0 cherry-picked onto + // fresh main since that branch's earlier Batches 1-4 are already present + // here via the Claude+Codex integration merge). + it("validates 289 v1 native descriptors, 84 v2 queries, and legacy fallbacks", () => { const exporter = path.join(source, "scripts/export_workbench_ui_compatibility.py"); expect(existsSync(exporter)).toBe(true); const catalog = JSON.parse(execFileSync(process.env.PYTHON || "python3", ["-B", exporter], { cwd: source, encoding: "utf8", maxBuffer: 8 * 1024 * 1024, env: { ...process.env, PYTHONDONTWRITEBYTECODE: "1", DJANGO_DEBUG: "true", DJANGO_SETTINGS_MODULE: "omnibioai.settings_test" }, })); - expect(catalog.counts).toEqual({ enabled: 501, native: 367, legacy: 134 }); + expect(catalog.counts).toEqual({ enabled: 501, native: 373, legacy: 128 }); expect(catalog.plugins).toHaveLength(501); const native = catalog.plugins.filter(plugin => plugin.descriptor.native_supported); expect(native.filter(plugin => plugin.schema_version === 1)).toHaveLength(289); expect(native.filter(plugin => plugin.schema_version === 2).map(plugin => plugin.slug).sort()).toEqual([ "all_of_us", "api_analytics", "bindingdb", "biogrid", "bioportal", "brenda", "cbioportal", "ccle", "cell_ontology", "chebi", "civic", "clingen", - "clinicaltrials_gov", "cpic", "dbgap", "depmap", "dgidb", "disease_ontology", - "disgenet", "drugcentral", "drugsatfda", "ena", "encode", "ensembl", + "clinicaltrials_gov", "cpic", "dbgap", "dbnsfp", "depmap", "dgidb", "disease_ontology", + "disgenet", "drugcentral", "drugsatfda", "ega", "eggnog", "ena", "encode", "ensembl", "expression_atlas", "gdc", "gene_ontology", "genereviews", "gnomad", "gtex", "hgmd", "hgnc", "hpa", "icgc", "intact", "integration_connections", - "interpro", "job_queue_manager", "kegg", "lipidmaps", "lovd", "mastermind", + "interpro", "job_queue_manager", "kegg", "lipidmaps", "lovd", "marrvel", "mastermind", "mavedb", "medgen", "metabolights", "mondo", "msigdb", "ncbi", "notification_center", "omim", "opentargets", "orphanet", "panglaodb", "panther", "pdb_redo", "pdbe", "pharmvar", "pharos", "phegeni", "pride", "proteomexchange", "pubchem", "rcsb_pdb", "rfam", "rxnorm", "sgd", "snpedia", "sra", "storage_quota_manager", "string_db", "swisslipids", "targetscan", - "tcga", "topmed", "ucsc", "uniprot", "wikipathways", "wormbase", + "tcga", "thousand_genomes", "topmed", "ucsc", "uk_biobank", "uniprot", "wikipathways", "wormbase", ]); expect(native.filter(plugin => plugin.schema_version === 1 && plugin.renderer === "query")).toHaveLength(9); expect(native.filter(plugin => plugin.schema_version === 1 && plugin.renderer === "async_analysis").map(plugin => plugin.slug).sort()).toEqual([