chore: tests, changelog, project docs (Phase G)

- Rename test_market_score.py → test_padelnomics_score.py
- Test 301 redirects from old /market-score URL
- Update i18n parity allowlist (remove mscore_*, add pnscore brand terms)
- Update CHANGELOG.md with single-score simplification
- Update PROJECT.md: mark single-score done, fix location_profiles refs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-03-09 14:11:28 +01:00
parent 8e0dd6af63
commit 00d2e37934
4 changed files with 39 additions and 25 deletions

View File

@@ -57,10 +57,10 @@ _IDENTICAL_VALUE_ALLOWLIST = {
# Business plan — Indoor/Outdoor same in DE, financial abbreviations
"bp_indoor", "bp_outdoor",
"bp_lbl_ebitda", "bp_lbl_irr", "bp_lbl_moic", "bp_lbl_opex",
# Market Score — branded term kept in English in DE
"footer_market_score",
# Market Score chip labels — branded product names, same in DE
"mscore_reife_chip", "mscore_potenzial_chip",
# Padelnomics Score — branded term kept in English in DE
"footer_padelnomics_score", "bp_lbl_padelnomics_score",
# Map tooltip keys — some are identical in both languages
"map_score_label", "map_indoor", "map_outdoor",
# Brand name "Padelnomics" — same in DE
"landing_vs_col_us",
}

View File

@@ -1,30 +1,36 @@
"""Tests for the Market Score methodology page."""
"""Tests for the Padelnomics Score methodology page."""
async def test_en_returns_200(client):
resp = await client.get("/en/market-score")
resp = await client.get("/en/padelnomics-score")
assert resp.status_code == 200
text = await resp.get_data(as_text=True)
assert "Market Score" in text
assert "Padelnomics Score" in text
assert "padelnomics" in text
async def test_de_returns_200(client):
resp = await client.get("/de/market-score")
resp = await client.get("/de/padelnomics-score")
assert resp.status_code == 200
text = await resp.get_data(as_text=True)
assert "Market Score" in text
assert "Padelnomics Score" in text
assert "padelnomics" in text
async def test_legacy_redirect(client):
resp = await client.get("/market-score")
async def test_old_market_score_redirects(client):
resp = await client.get("/en/market-score")
assert resp.status_code == 301
assert resp.headers["Location"].endswith("/en/market-score")
assert "/padelnomics-score" in resp.headers["Location"]
async def test_de_old_market_score_redirects(client):
resp = await client.get("/de/market-score")
assert resp.status_code == 301
assert "/padelnomics-score" in resp.headers["Location"]
async def test_contains_jsonld(client):
resp = await client.get("/en/market-score")
resp = await client.get("/en/padelnomics-score")
text = await resp.get_data(as_text=True)
assert '"@type": "WebPage"' in text
assert '"@type": "FAQPage"' in text
@@ -32,28 +38,27 @@ async def test_contains_jsonld(client):
async def test_contains_faq_section(client):
resp = await client.get("/en/market-score")
resp = await client.get("/en/padelnomics-score")
text = await resp.get_data(as_text=True)
assert "Frequently Asked Questions" in text
assert "<details" in text
async def test_de_contains_faq_section(client):
resp = await client.get("/de/market-score")
resp = await client.get("/de/padelnomics-score")
text = await resp.get_data(as_text=True)
assert "Häufig gestellte Fragen" in text
assert "Häufige Fragen" in text
async def test_contains_og_tags(client):
resp = await client.get("/en/market-score")
resp = await client.get("/en/padelnomics-score")
text = await resp.get_data(as_text=True)
assert 'og:title' in text
assert 'og:description' in text
async def test_footer_has_market_score_link(client):
resp = await client.get("/en/market-score")
async def test_footer_has_padelnomics_score_link(client):
resp = await client.get("/en/padelnomics-score")
text = await resp.get_data(as_text=True)
assert "/en/market-score" in text
# Footer should link to market score page
assert "Market Score" in text
assert "/padelnomics-score" in text
assert "Padelnomics Score" in text