diff --git a/research/intents/aod-9604.json b/research/intents/aod-9604.json index b665144..ed3e282 100644 --- a/research/intents/aod-9604.json +++ b/research/intents/aod-9604.json @@ -530,6 +530,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/ara-290.json b/research/intents/ara-290.json index 0face7b..f39cc74 100644 --- a/research/intents/ara-290.json +++ b/research/intents/ara-290.json @@ -477,6 +477,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/bpc-157.json b/research/intents/bpc-157.json index b30a685..b09945f 100644 --- a/research/intents/bpc-157.json +++ b/research/intents/bpc-157.json @@ -416,6 +416,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/cagrilintide.json b/research/intents/cagrilintide.json index 8c1f6f8..ebebc5a 100644 --- a/research/intents/cagrilintide.json +++ b/research/intents/cagrilintide.json @@ -196,6 +196,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/dsip.json b/research/intents/dsip.json index 4323ad8..c742bfc 100644 --- a/research/intents/dsip.json +++ b/research/intents/dsip.json @@ -397,6 +397,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/ghrp-6.json b/research/intents/ghrp-6.json index 4855771..0cfa977 100644 --- a/research/intents/ghrp-6.json +++ b/research/intents/ghrp-6.json @@ -544,6 +544,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/humanin.json b/research/intents/humanin.json index eed9be9..e27d614 100644 --- a/research/intents/humanin.json +++ b/research/intents/humanin.json @@ -463,6 +463,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/ipamorelin.json b/research/intents/ipamorelin.json index 269120e..cd2efb0 100644 --- a/research/intents/ipamorelin.json +++ b/research/intents/ipamorelin.json @@ -304,6 +304,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/melanotan-ii.json b/research/intents/melanotan-ii.json index 2db0058..f3fa55f 100644 --- a/research/intents/melanotan-ii.json +++ b/research/intents/melanotan-ii.json @@ -543,6 +543,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/mots-c.json b/research/intents/mots-c.json index 7c5fb5c..e4a5168 100644 --- a/research/intents/mots-c.json +++ b/research/intents/mots-c.json @@ -209,6 +209,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/retatrutide.json b/research/intents/retatrutide.json index 6731552..1a7e458 100644 --- a/research/intents/retatrutide.json +++ b/research/intents/retatrutide.json @@ -295,6 +295,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "escalation", "adverse", "who", diff --git a/research/intents/selank.json b/research/intents/selank.json index eb46891..c72a8fe 100644 --- a/research/intents/selank.json +++ b/research/intents/selank.json @@ -194,6 +194,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/semax.json b/research/intents/semax.json index 63c3dd6..a11e956 100644 --- a/research/intents/semax.json +++ b/research/intents/semax.json @@ -209,6 +209,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/ss-31.json b/research/intents/ss-31.json index d406129..6fd4a2a 100644 --- a/research/intents/ss-31.json +++ b/research/intents/ss-31.json @@ -484,6 +484,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/survodutide.json b/research/intents/survodutide.json index 870c693..cacb67e 100644 --- a/research/intents/survodutide.json +++ b/research/intents/survodutide.json @@ -507,6 +507,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/tb-500.json b/research/intents/tb-500.json index 2f6fb45..c3b6a7a 100644 --- a/research/intents/tb-500.json +++ b/research/intents/tb-500.json @@ -210,6 +210,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/tesamorelin.json b/research/intents/tesamorelin.json index b4b53cb..58cf87c 100644 --- a/research/intents/tesamorelin.json +++ b/research/intents/tesamorelin.json @@ -241,6 +241,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/tesofensine.json b/research/intents/tesofensine.json index 89f8e81..4fed07d 100644 --- a/research/intents/tesofensine.json +++ b/research/intents/tesofensine.json @@ -487,6 +487,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/research/intents/thymosin-alpha-1.json b/research/intents/thymosin-alpha-1.json index 6a358d0..195bfd2 100644 --- a/research/intents/thymosin-alpha-1.json +++ b/research/intents/thymosin-alpha-1.json @@ -474,6 +474,7 @@ "evidence", "doses", "dosage-chart", + "calculator", "adverse", "who", "biomarkers", diff --git a/scripts/test_calculators.mjs b/scripts/test_calculators.mjs index ea04e4e..b76fa51 100644 --- a/scripts/test_calculators.mjs +++ b/scripts/test_calculators.mjs @@ -139,6 +139,30 @@ if (fs.existsSync(CALC_DIR)) { } } +// Each compound that has a calculator page also embeds the calculator on its +// own record and links to the page. The two must agree: a calculator page with +// no inbound link from its compound is an orphan, and a compound page whose +// embedded tool does not compute is the same defect as the empty tools were. +if (fs.existsSync(CALC_DIR)) { + for (const slug of fs.readdirSync(CALC_DIR, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name)) { + const file = path.join(DIST, 'compounds', slug, 'index.html'); + if (!fs.existsSync(file)) { fails.push(`compounds/${slug}: no compound page for calculator page`); continue; } + const html = fs.readFileSync(file, 'utf8'); + if (!html.includes(`href="/calculators/${slug}"`)) fails.push(`compounds/${slug}: no link to /calculators/${slug}`); + if (!/
/.test(html)) { fails.push(`compounds/${slug}: no calculator section`); continue; } + if (!/id="r-out"/.test(html)) { fails.push(`compounds/${slug}: calculator section has no output element`); continue; } + const m = html.match(/