The apex 301s to www at Cloudflare, but metadataBase, the school-page canonical, robots.txt's Sitemap: line and the sitemap's own <loc> entries all named the apex. Every one of those pointed Google at a redirect. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015mWQnpye9F299NVRCCSRvj
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""Tests for sitemap generation (spec 2026-08-20, workstream W1).
|
|
|
|
The sitemap is built from the in-memory school DataFrame, so these inject a
|
|
small frame via monkeypatch rather than touching a database.
|
|
"""
|
|
|
|
import numpy as np
|
|
import pandas as pd
|
|
import pytest
|
|
|
|
|
|
def _schools_df() -> pd.DataFrame:
|
|
"""Two schools: one with results, one with neither results nor Ofsted."""
|
|
base = {
|
|
"local_authority": "Testshire",
|
|
"school_type": "Academy",
|
|
"phase": "Primary",
|
|
"year": 202425,
|
|
"ofsted_date": None,
|
|
}
|
|
return pd.DataFrame(
|
|
[
|
|
{**base, "urn": 100001, "school_name": "Alpha Primary",
|
|
"rwm_expected_pct": 62.0, "attainment_8_score": np.nan,
|
|
"ofsted_grade": 2.0},
|
|
{**base, "urn": 100002, "school_name": "Ghost Primary",
|
|
"rwm_expected_pct": np.nan, "attainment_8_score": np.nan,
|
|
"ofsted_grade": np.nan},
|
|
]
|
|
)
|
|
|
|
|
|
@pytest.fixture()
|
|
def sitemap(monkeypatch) -> str:
|
|
from backend import app as app_module
|
|
|
|
monkeypatch.setattr(app_module, "load_school_data", _schools_df)
|
|
return app_module.build_sitemap()
|
|
|
|
|
|
def test_every_loc_uses_the_www_host(sitemap):
|
|
# The apex 301s to www. A <loc> that redirects burns a crawl per URL.
|
|
assert "https://www.schoolcompare.co.uk" in sitemap
|
|
assert "https://schoolcompare.co.uk" not in sitemap
|