diff --git a/backend/documents_parser/tests/test_summary_pdf_mapper_chain.py b/backend/documents_parser/tests/test_summary_pdf_mapper_chain.py index 5b7267e7..94a3b927 100644 --- a/backend/documents_parser/tests/test_summary_pdf_mapper_chain.py +++ b/backend/documents_parser/tests/test_summary_pdf_mapper_chain.py @@ -1,6 +1,6 @@ """End-to-end validation for the Elmhurst Summary→EpcPropertyData chain. -The 6 Elmhurst worksheet fixtures in `domain.sap10_calculator.worksheet.tests` +The 6 Elmhurst worksheet fixtures in `tests.domain.sap10_calculator.worksheet` build their `EpcPropertyData` synthetically — they validate the calculator + cascade in isolation from the mapper. This file pins the OTHER half of the chain: `from_elmhurst_site_notes` must produce @@ -46,7 +46,7 @@ from datatypes.epc.domain.mapper import ( from domain.sap10_calculator.calculator import calculate_sap_from_inputs from domain.sap10_calculator.rdsap.cert_to_inputs import SAP_10_2_SPEC_PRICES, cert_to_inputs from domain.sap10_ml.rdsap_uvalues import u_party_wall -from domain.sap10_calculator.worksheet.tests import ( +from tests.domain.sap10_calculator.worksheet import ( _elmhurst_worksheet_000474 as _w000474, _elmhurst_worksheet_000477 as _w000477, _elmhurst_worksheet_000480 as _w000480, @@ -84,7 +84,7 @@ _SUMMARY_000565_PDF = _FIXTURES / "Summary_000565.pdf" # cert 000565 (5-bp Elmh # matches worksheet continuous SAP at 1e-4". _API_001479_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "0535-9020-6509-0821-6222.json" ) @@ -129,7 +129,7 @@ def _summary_pdf_to_textract_style_pages(pdf_path: Path) -> list[str]: def test_summary_000474_mapper_produces_three_building_parts() -> None: # Arrange — cert U985-0001-000474 is a mid-terrace with 3 building # parts (Main + 2 extensions) per the hand-built worksheet fixture - # at domain/sap10_calculator/worksheet/tests/ + # at tests/domain/sap10_calculator/worksheet/ # _elmhurst_worksheet_000474.py. Routing the Summary PDF through # extractor + mapper must yield the same count. pages = _summary_pdf_to_textract_style_pages(_SUMMARY_000474_PDF) @@ -2978,7 +2978,7 @@ def test_summary_mapper_raises_on_unmapped_party_wall_type_code() -> None: _GOLDEN_FIXTURES_DIR = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" ) @@ -3292,13 +3292,13 @@ def test_summary_0380_full_chain_sap_within_spec_floor_of_worksheet() -> None: _API_0330_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "0330-2249-8150-2326-4121.json" ) _API_9501_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "9501-3059-8202-7356-0204.json" ) @@ -3358,7 +3358,7 @@ def test_api_9501_photovoltaic_array_surfaced() -> None: _API_0380_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "0380-2471-3250-2596-8761.json" ) @@ -3479,20 +3479,20 @@ def test_api_0380_heat_pump_no_pumps_fans_kwh_per_table_4f() -> None: _API_9418_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "9418-3062-8205-3566-7200.json" ) _API_2225_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "2225-3062-8205-2856-7204.json" ) _API_2636_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "2636-0525-2600-0401-2296.json" ) @@ -3765,17 +3765,17 @@ def test_api_001479_full_chain_sap_matches_worksheet_pdf_exactly() -> None: _API_0350_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "0350-2968-2650-2796-5255.json" ) _API_3800_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "3800-8515-0922-3398-3563.json" ) _API_9285_JSON = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" / "9285-3062-0205-7766-7200.json" ) @@ -3878,7 +3878,7 @@ def test_api_9418_full_chain_sap_within_spec_floor_of_worksheet() -> None: # SAP cascade is the load-bearing equivalence check. Each cert in this # cohort has both a Summary PDF (under `sap worksheets/additional with # api 2//Summary_*.pdf`) and an API JSON fixture (fetched into -# `domain/sap10_calculator/rdsap/tests/fixtures/golden/.json` in +# `tests/domain/sap10_calculator/rdsap/fixtures/golden/.json` in # Slice S0380.39). Worksheet SAP is the source of truth. # # Cohort-2 API-path closure history (each slice closed a distinct @@ -3893,7 +3893,7 @@ def test_api_9418_full_chain_sap_within_spec_floor_of_worksheet() -> None: _COHORT_2_API_FIXTURE_DIR: Path = ( Path(__file__).parents[3] - / "domain/sap10_calculator/rdsap/tests/fixtures/golden" + / "tests/domain/sap10_calculator/rdsap/fixtures/golden" ) # (cert_dir, worksheet_unrounded_sap) — 34 cohort-2 certs whose API-path diff --git a/scripts/fetch_cohort2_api_jsons.py b/scripts/fetch_cohort2_api_jsons.py index 70211453..5b764f50 100644 --- a/scripts/fetch_cohort2_api_jsons.py +++ b/scripts/fetch_cohort2_api_jsons.py @@ -1,7 +1,7 @@ """Throwaway one-off: bulk-fetch cohort-2 EPC API JSONs from gov.uk EPB. Persists the inner `data` payload (as returned by EpcClientService._fetch_certificate) -to domain/sap10_calculator/rdsap/tests/fixtures/golden/.json. Skips certs +to tests/domain/sap10_calculator/rdsap/fixtures/golden/.json. Skips certs whose JSON already exists. """ from __future__ import annotations diff --git a/domain/sap10_calculator/climate/tests/__init__.py b/tests/domain/sap10_calculator/__init__.py similarity index 100% rename from domain/sap10_calculator/climate/tests/__init__.py rename to tests/domain/sap10_calculator/__init__.py diff --git a/domain/sap10_calculator/rdsap/tests/__init__.py b/tests/domain/sap10_calculator/climate/__init__.py similarity index 100% rename from domain/sap10_calculator/rdsap/tests/__init__.py rename to tests/domain/sap10_calculator/climate/__init__.py diff --git a/domain/sap10_calculator/climate/tests/test_appendix_u.py b/tests/domain/sap10_calculator/climate/test_appendix_u.py similarity index 100% rename from domain/sap10_calculator/climate/tests/test_appendix_u.py rename to tests/domain/sap10_calculator/climate/test_appendix_u.py diff --git a/domain/sap10_calculator/tests/__init__.py b/tests/domain/sap10_calculator/rdsap/__init__.py similarity index 100% rename from domain/sap10_calculator/tests/__init__.py rename to tests/domain/sap10_calculator/rdsap/__init__.py diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0036-6325-1100-0063-1226.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0036-6325-1100-0063-1226.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0036-6325-1100-0063-1226.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0036-6325-1100-0063-1226.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0100-5141-0522-4696-3463.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0100-5141-0522-4696-3463.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0100-5141-0522-4696-3463.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0100-5141-0522-4696-3463.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0200-3155-0122-2602-3563.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0200-3155-0122-2602-3563.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0200-3155-0122-2602-3563.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0200-3155-0122-2602-3563.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0240-0200-5706-2365-8010.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0240-0200-5706-2365-8010.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0240-0200-5706-2365-8010.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0240-0200-5706-2365-8010.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0300-2403-2650-2206-0235.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0300-2403-2650-2206-0235.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0300-2403-2650-2206-0235.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0300-2403-2650-2206-0235.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0300-2747-7640-2526-2135.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0300-2747-7640-2526-2135.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0300-2747-7640-2526-2135.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0300-2747-7640-2526-2135.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0310-2763-5450-2506-3501.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0310-2763-5450-2506-3501.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0310-2763-5450-2506-3501.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0310-2763-5450-2506-3501.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0320-2126-2150-2326-6161.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0320-2126-2150-2326-6161.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0320-2126-2150-2326-6161.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0320-2126-2150-2326-6161.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0320-2756-8640-2296-1101.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0320-2756-8640-2296-1101.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0320-2756-8640-2296-1101.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0320-2756-8640-2296-1101.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0330-2249-8150-2326-4121.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0330-2249-8150-2326-4121.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0330-2249-8150-2326-4121.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0330-2249-8150-2326-4121.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0330-2257-3640-2196-3145.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0330-2257-3640-2196-3145.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0330-2257-3640-2196-3145.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0330-2257-3640-2196-3145.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0350-2968-2650-2796-5255.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0350-2968-2650-2796-5255.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0350-2968-2650-2796-5255.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0350-2968-2650-2796-5255.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0360-2266-5650-2106-8285.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0360-2266-5650-2106-8285.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0360-2266-5650-2106-8285.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0360-2266-5650-2106-8285.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0380-2471-3250-2596-8761.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0380-2471-3250-2596-8761.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0380-2471-3250-2596-8761.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0380-2471-3250-2596-8761.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0380-2530-6150-2326-4161.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0380-2530-6150-2326-4161.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0380-2530-6150-2326-4161.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0380-2530-6150-2326-4161.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0390-2066-4250-2026-4555.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0390-2066-4250-2026-4555.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0390-2066-4250-2026-4555.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0390-2066-4250-2026-4555.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0390-2254-6420-2126-5561.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0390-2254-6420-2126-5561.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0390-2254-6420-2126-5561.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0390-2254-6420-2126-5561.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0390-2954-3640-2196-4175.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0390-2954-3640-2196-4175.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0390-2954-3640-2196-4175.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0390-2954-3640-2196-4175.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0464-3032-0205-4276-3204.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0464-3032-0205-4276-3204.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0464-3032-0205-4276-3204.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0464-3032-0205-4276-3204.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0535-9020-6509-0821-6222.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0535-9020-6509-0821-6222.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0535-9020-6509-0821-6222.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0535-9020-6509-0821-6222.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0652-3022-1205-2826-1200.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/0652-3022-1205-2826-1200.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/0652-3022-1205-2826-1200.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/0652-3022-1205-2826-1200.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/1536-9325-5100-0433-1226.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/1536-9325-5100-0433-1226.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/1536-9325-5100-0433-1226.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/1536-9325-5100-0433-1226.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2007-3011-9205-8136-3204.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2007-3011-9205-8136-3204.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2007-3011-9205-8136-3204.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2007-3011-9205-8136-3204.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2031-3007-0205-1296-3204.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2031-3007-0205-1296-3204.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2031-3007-0205-1296-3204.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2031-3007-0205-1296-3204.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2102-3018-0205-7886-5204.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2102-3018-0205-7886-5204.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2102-3018-0205-7886-5204.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2102-3018-0205-7886-5204.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2130-1033-4050-5007-8395.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2130-1033-4050-5007-8395.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2130-1033-4050-5007-8395.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2130-1033-4050-5007-8395.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2130-3018-4205-4686-5204.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2130-3018-4205-4686-5204.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2130-3018-4205-4686-5204.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2130-3018-4205-4686-5204.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2225-3062-8205-2856-7204.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2225-3062-8205-2856-7204.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2225-3062-8205-2856-7204.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2225-3062-8205-2856-7204.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2336-3124-3600-0517-1292.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2336-3124-3600-0517-1292.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2336-3124-3600-0517-1292.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2336-3124-3600-0517-1292.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2536-2525-0600-0788-2292.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2536-2525-0600-0788-2292.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2536-2525-0600-0788-2292.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2536-2525-0600-0788-2292.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2590-3025-7205-9066-0200.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2590-3025-7205-9066-0200.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2590-3025-7205-9066-0200.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2590-3025-7205-9066-0200.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2636-0525-2600-0401-2296.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2636-0525-2600-0401-2296.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2636-0525-2600-0401-2296.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2636-0525-2600-0401-2296.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2699-3025-5205-8066-0200.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2699-3025-5205-8066-0200.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2699-3025-5205-8066-0200.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2699-3025-5205-8066-0200.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2800-7999-0322-4594-3563.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/2800-7999-0322-4594-3563.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/2800-7999-0322-4594-3563.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/2800-7999-0322-4594-3563.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/3136-7925-4500-0246-6202.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/3136-7925-4500-0246-6202.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/3136-7925-4500-0246-6202.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/3136-7925-4500-0246-6202.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/3336-2825-9400-0512-8292.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/3336-2825-9400-0512-8292.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/3336-2825-9400-0512-8292.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/3336-2825-9400-0512-8292.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/3800-8515-0922-3398-3563.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/3800-8515-0922-3398-3563.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/3800-8515-0922-3398-3563.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/3800-8515-0922-3398-3563.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/4536-5424-8600-0109-1226.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/4536-5424-8600-0109-1226.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/4536-5424-8600-0109-1226.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/4536-5424-8600-0109-1226.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/4536-8325-3100-0409-1222.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/4536-8325-3100-0409-1222.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/4536-8325-3100-0409-1222.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/4536-8325-3100-0409-1222.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/4800-3992-0422-0599-3563.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/4800-3992-0422-0599-3563.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/4800-3992-0422-0599-3563.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/4800-3992-0422-0599-3563.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/6035-7729-2309-0879-2296.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/6035-7729-2309-0879-2296.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/6035-7729-2309-0879-2296.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/6035-7729-2309-0879-2296.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/6835-3920-2509-0933-5226.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/6835-3920-2509-0933-5226.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/6835-3920-2509-0933-5226.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/6835-3920-2509-0933-5226.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/7536-3827-0600-0600-0276.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/7536-3827-0600-0600-0276.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/7536-3827-0600-0600-0276.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/7536-3827-0600-0600-0276.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/7700-3362-0922-7022-3563.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/7700-3362-0922-7022-3563.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/7700-3362-0922-7022-3563.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/7700-3362-0922-7022-3563.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/7800-1501-0922-7127-3563.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/7800-1501-0922-7127-3563.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/7800-1501-0922-7127-3563.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/7800-1501-0922-7127-3563.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/7836-3125-0600-0526-2202.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/7836-3125-0600-0526-2202.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/7836-3125-0600-0526-2202.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/7836-3125-0600-0526-2202.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/8135-1728-8500-0511-3296.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/8135-1728-8500-0511-3296.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/8135-1728-8500-0511-3296.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/8135-1728-8500-0511-3296.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9036-0824-3500-0420-8222.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9036-0824-3500-0420-8222.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9036-0824-3500-0420-8222.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9036-0824-3500-0420-8222.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9285-3062-0205-7766-7200.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9285-3062-0205-7766-7200.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9285-3062-0205-7766-7200.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9285-3062-0205-7766-7200.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9370-3060-1205-3546-4204.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9370-3060-1205-3546-4204.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9370-3060-1205-3546-4204.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9370-3060-1205-3546-4204.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9380-2957-7490-2595-3141.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9380-2957-7490-2595-3141.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9380-2957-7490-2595-3141.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9380-2957-7490-2595-3141.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9390-2722-3520-2105-8715.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9390-2722-3520-2105-8715.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9390-2722-3520-2105-8715.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9390-2722-3520-2105-8715.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9418-3062-8205-3566-7200.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9418-3062-8205-3566-7200.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9418-3062-8205-3566-7200.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9418-3062-8205-3566-7200.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9421-3045-3205-1646-6200.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9421-3045-3205-1646-6200.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9421-3045-3205-1646-6200.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9421-3045-3205-1646-6200.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9501-3059-8202-7356-0204.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9501-3059-8202-7356-0204.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9501-3059-8202-7356-0204.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9501-3059-8202-7356-0204.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9796-3058-6205-0346-9200.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9796-3058-6205-0346-9200.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9796-3058-6205-0346-9200.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9796-3058-6205-0346-9200.json diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9836-7525-9500-0575-1202.json b/tests/domain/sap10_calculator/rdsap/fixtures/golden/9836-7525-9500-0575-1202.json similarity index 100% rename from domain/sap10_calculator/rdsap/tests/fixtures/golden/9836-7525-9500-0575-1202.json rename to tests/domain/sap10_calculator/rdsap/fixtures/golden/9836-7525-9500-0575-1202.json diff --git a/domain/sap10_calculator/rdsap/tests/test_cert_to_inputs.py b/tests/domain/sap10_calculator/rdsap/test_cert_to_inputs.py similarity index 99% rename from domain/sap10_calculator/rdsap/tests/test_cert_to_inputs.py rename to tests/domain/sap10_calculator/rdsap/test_cert_to_inputs.py index d8e448ad..f086cd36 100644 --- a/domain/sap10_calculator/rdsap/tests/test_cert_to_inputs.py +++ b/tests/domain/sap10_calculator/rdsap/test_cert_to_inputs.py @@ -64,7 +64,7 @@ from domain.sap10_calculator.rdsap.cert_to_inputs import ( ventilation_from_cert, ) from domain.sap10_calculator.tables.pcdb import GasOilBoilerRecord, gas_oil_boiler_record -from domain.sap10_calculator.worksheet.tests import _elmhurst_worksheet_000477 as _w000477 +from tests.domain.sap10_calculator.worksheet import _elmhurst_worksheet_000477 as _w000477 from domain.sap10_calculator.worksheet.water_heating import ( combi_loss_monthly_kwh_table_3b_row_1_instantaneous, combi_loss_monthly_kwh_table_3c_two_profile_instantaneous, @@ -3605,9 +3605,9 @@ def test_air_source_heat_pump_pcdb_104568_derives_apm_efficiencies_per_sap_app_n ) doc = json.loads( - Path( - "/workspaces/model/domain/sap10_calculator/rdsap/tests/" - "fixtures/golden/0380-2471-3250-2596-8761.json" + ( + Path(__file__).parent + / "fixtures" / "golden" / "0380-2471-3250-2596-8761.json" ).read_text() ) epc = EpcPropertyDataMapper.from_api_response(doc) @@ -3744,7 +3744,7 @@ def test_table_4c_no_boiler_interlock_applies_minus_5_dhw_adjustment_when_cylind # Arrange — use the real cert 000565 fixture (Elmhurst extractor + # mapper) so the (62)m demand cascade is the worksheet-pinned # tuple and only the (217)m efficiency step is under test. - from domain.sap10_calculator.worksheet.tests._elmhurst_worksheet_000565 import ( + from tests.domain.sap10_calculator.worksheet._elmhurst_worksheet_000565 import ( build_epc as build_cert_000565, ) from domain.sap10_calculator.calculator import calculate_sap_from_inputs @@ -4561,7 +4561,7 @@ def test_lighting_co2_factor_blends_table_12a_grid_2_with_table_12d_dual_rate_on """ # Arrange — mapper-driven cohort fixture (Dual meter / TEN_HOUR # tariff, heat-pump main). - from domain.sap10_calculator.worksheet.tests import ( + from tests.domain.sap10_calculator.worksheet import ( _elmhurst_worksheet_000565 as _w000565, ) epc = _w000565.build_epc() @@ -4609,7 +4609,7 @@ def test_rdsap_10_table_32_prices_charge_mains_gas_hot_water_at_3p48_per_kwh() - """ # Arrange — mapper-driven cohort fixture (Summary_000565 → cert_to_ # inputs), Dual meter / mains gas DHW. - from domain.sap10_calculator.worksheet.tests import ( + from tests.domain.sap10_calculator.worksheet import ( _elmhurst_worksheet_000565 as _w000565, ) epc = _w000565.build_epc() diff --git a/domain/sap10_calculator/rdsap/tests/test_golden_fixtures.py b/tests/domain/sap10_calculator/rdsap/test_golden_fixtures.py similarity index 100% rename from domain/sap10_calculator/rdsap/tests/test_golden_fixtures.py rename to tests/domain/sap10_calculator/rdsap/test_golden_fixtures.py diff --git a/domain/sap10_calculator/tests/test_bre_worked_examples.py b/tests/domain/sap10_calculator/test_bre_worked_examples.py similarity index 100% rename from domain/sap10_calculator/tests/test_bre_worked_examples.py rename to tests/domain/sap10_calculator/test_bre_worked_examples.py diff --git a/domain/sap10_calculator/tests/test_calculator.py b/tests/domain/sap10_calculator/test_calculator.py similarity index 100% rename from domain/sap10_calculator/tests/test_calculator.py rename to tests/domain/sap10_calculator/test_calculator.py diff --git a/domain/sap10_calculator/tests/test_pcdb_etl.py b/tests/domain/sap10_calculator/test_pcdb_etl.py similarity index 99% rename from domain/sap10_calculator/tests/test_pcdb_etl.py rename to tests/domain/sap10_calculator/test_pcdb_etl.py index 13770f83..62ad46d6 100644 --- a/domain/sap10_calculator/tests/test_pcdb_etl.py +++ b/tests/domain/sap10_calculator/test_pcdb_etl.py @@ -24,7 +24,8 @@ from domain.sap10_calculator.tables.pcdb.parser import ( _PCDB_DAT_PATH: Path = ( - Path(__file__).resolve().parents[1] / "tables" / "pcdb" / "data" / "pcdb10.dat" + Path(__file__).resolve().parents[3] + / "domain" / "sap10_calculator" / "tables" / "pcdb" / "data" / "pcdb10.dat" ) diff --git a/domain/sap10_calculator/tests/test_pcdb_lookup.py b/tests/domain/sap10_calculator/test_pcdb_lookup.py similarity index 100% rename from domain/sap10_calculator/tests/test_pcdb_lookup.py rename to tests/domain/sap10_calculator/test_pcdb_lookup.py diff --git a/domain/sap10_calculator/tests/test_pcdb_table_322_lookup.py b/tests/domain/sap10_calculator/test_pcdb_table_322_lookup.py similarity index 100% rename from domain/sap10_calculator/tests/test_pcdb_table_322_lookup.py rename to tests/domain/sap10_calculator/test_pcdb_table_322_lookup.py diff --git a/domain/sap10_calculator/tests/test_pcdb_table_329_lookup.py b/tests/domain/sap10_calculator/test_pcdb_table_329_lookup.py similarity index 100% rename from domain/sap10_calculator/tests/test_pcdb_table_329_lookup.py rename to tests/domain/sap10_calculator/test_pcdb_table_329_lookup.py diff --git a/domain/sap10_calculator/tests/test_pcdb_table_362_lookup.py b/tests/domain/sap10_calculator/test_pcdb_table_362_lookup.py similarity index 100% rename from domain/sap10_calculator/tests/test_pcdb_table_362_lookup.py rename to tests/domain/sap10_calculator/test_pcdb_table_362_lookup.py diff --git a/domain/sap10_calculator/tests/test_postcode_weather.py b/tests/domain/sap10_calculator/test_postcode_weather.py similarity index 100% rename from domain/sap10_calculator/tests/test_postcode_weather.py rename to tests/domain/sap10_calculator/test_postcode_weather.py diff --git a/domain/sap10_calculator/tests/test_table_12.py b/tests/domain/sap10_calculator/test_table_12.py similarity index 100% rename from domain/sap10_calculator/tests/test_table_12.py rename to tests/domain/sap10_calculator/test_table_12.py diff --git a/domain/sap10_calculator/tests/test_table_12a.py b/tests/domain/sap10_calculator/test_table_12a.py similarity index 100% rename from domain/sap10_calculator/tests/test_table_12a.py rename to tests/domain/sap10_calculator/test_table_12a.py diff --git a/domain/sap10_calculator/tests/test_table_32.py b/tests/domain/sap10_calculator/test_table_32.py similarity index 100% rename from domain/sap10_calculator/tests/test_table_32.py rename to tests/domain/sap10_calculator/test_table_32.py diff --git a/domain/sap10_calculator/validation/tests/__init__.py b/tests/domain/sap10_calculator/validation/__init__.py similarity index 100% rename from domain/sap10_calculator/validation/tests/__init__.py rename to tests/domain/sap10_calculator/validation/__init__.py diff --git a/domain/sap10_calculator/validation/tests/test_parity_report.py b/tests/domain/sap10_calculator/validation/test_parity_report.py similarity index 100% rename from domain/sap10_calculator/validation/tests/test_parity_report.py rename to tests/domain/sap10_calculator/validation/test_parity_report.py diff --git a/domain/sap10_calculator/worksheet/tests/__init__.py b/tests/domain/sap10_calculator/worksheet/__init__.py similarity index 100% rename from domain/sap10_calculator/worksheet/tests/__init__.py rename to tests/domain/sap10_calculator/worksheet/__init__.py diff --git a/domain/sap10_calculator/worksheet/tests/_elmhurst_fixtures.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_fixtures.py similarity index 97% rename from domain/sap10_calculator/worksheet/tests/_elmhurst_fixtures.py rename to tests/domain/sap10_calculator/worksheet/_elmhurst_fixtures.py index 51b48950..18eed5ef 100644 --- a/domain/sap10_calculator/worksheet/tests/_elmhurst_fixtures.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_fixtures.py @@ -24,7 +24,7 @@ SECTION_8C_INTERMITTENCY_MONTHLY: tuple[float, ...] = ( 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.25, 0.0, 0.0, 0.0, 0.0, ) -from domain.sap10_calculator.worksheet.tests import ( +from tests.domain.sap10_calculator.worksheet import ( _elmhurst_worksheet_000474 as w000474, _elmhurst_worksheet_000477 as w000477, _elmhurst_worksheet_000480 as w000480, diff --git a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000474.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000474.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000474.py rename to tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000474.py index c53c9625..1c7f4787 100644 --- a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000474.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000474.py @@ -41,7 +41,7 @@ from domain.sap10_calculator.worksheet.solar_gains import RoofWindowInput, Roofl from domain.sap10_calculator.worksheet.ventilation import MechanicalVentilationKind from domain.sap10_calculator.worksheet.water_heating import TABLE_J1_TCOLD_FROM_MAINS_C -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( SECTION_8C_ALL_ZERO_MONTHLY, SECTION_8C_ETA_LOSS_ALL_ONE, SECTION_8C_INTERMITTENCY_MONTHLY, diff --git a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000477.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000477.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000477.py rename to tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000477.py index 95a5d25f..a73f047b 100644 --- a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000477.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000477.py @@ -39,7 +39,7 @@ from domain.sap10_calculator.worksheet.solar_gains import RoofWindowInput, Roofl from domain.sap10_calculator.worksheet.ventilation import MechanicalVentilationKind from domain.sap10_calculator.worksheet.water_heating import TABLE_J1_TCOLD_FROM_MAINS_C -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( SECTION_8C_ALL_ZERO_MONTHLY, SECTION_8C_ETA_LOSS_ALL_ONE, SECTION_8C_INTERMITTENCY_MONTHLY, diff --git a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000480.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000480.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000480.py rename to tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000480.py index bf0462df..145ef3d0 100644 --- a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000480.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000480.py @@ -40,7 +40,7 @@ from domain.sap10_calculator.worksheet.solar_gains import RoofWindowInput, Roofl from domain.sap10_calculator.worksheet.ventilation import MechanicalVentilationKind from domain.sap10_calculator.worksheet.water_heating import TABLE_J1_TCOLD_FROM_MAINS_C -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( SECTION_8C_ALL_ZERO_MONTHLY, SECTION_8C_ETA_LOSS_ALL_ONE, SECTION_8C_INTERMITTENCY_MONTHLY, diff --git a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000487.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000487.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000487.py rename to tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000487.py index 94644d25..a5cbe9b4 100644 --- a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000487.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000487.py @@ -260,7 +260,7 @@ def build_epc() -> EpcPropertyData: # ============================================================================ from domain.sap10_calculator.worksheet.ventilation import MechanicalVentilationKind -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( SECTION_8C_ALL_ZERO_MONTHLY, SECTION_8C_ETA_LOSS_ALL_ONE, SECTION_8C_INTERMITTENCY_MONTHLY, diff --git a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000490.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000490.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000490.py rename to tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000490.py index 80980f7c..f06194a4 100644 --- a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000490.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000490.py @@ -43,7 +43,7 @@ from domain.sap10_calculator.worksheet.solar_gains import RoofWindowInput, Roofl from domain.sap10_calculator.worksheet.ventilation import MechanicalVentilationKind from domain.sap10_calculator.worksheet.water_heating import TABLE_J1_TCOLD_FROM_MAINS_C -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( SECTION_8C_ALL_ZERO_MONTHLY, SECTION_8C_ETA_LOSS_ALL_ONE, SECTION_8C_INTERMITTENCY_MONTHLY, diff --git a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000516.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000516.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000516.py rename to tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000516.py index 9444e226..c561b353 100644 --- a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000516.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000516.py @@ -46,7 +46,7 @@ from domain.sap10_calculator.worksheet.solar_gains import Orientation, RoofWindo from domain.sap10_calculator.worksheet.ventilation import MechanicalVentilationKind from domain.sap10_calculator.worksheet.water_heating import TABLE_J1_TCOLD_FROM_MAINS_C -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( SECTION_8C_ALL_ZERO_MONTHLY, SECTION_8C_ETA_LOSS_ALL_ONE, SECTION_8C_INTERMITTENCY_MONTHLY, diff --git a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000565.py b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000565.py similarity index 97% rename from domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000565.py rename to tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000565.py index 774b148c..d01f2465 100644 --- a/domain/sap10_calculator/worksheet/tests/_elmhurst_worksheet_000565.py +++ b/tests/domain/sap10_calculator/worksheet/_elmhurst_worksheet_000565.py @@ -61,8 +61,8 @@ from datatypes.epc.domain.epc_property_data import EpcPropertyData from datatypes.epc.domain.mapper import EpcPropertyDataMapper -# Repo root → backend fixtures. parents[0]=tests/, parents[1]=worksheet/, -# parents[2]=sap10_calculator/, parents[3]=domain/, parents[4]=repo root. +# Repo root → backend fixtures. parents[0]=worksheet/, parents[1]=sap10_calculator/, +# parents[2]=domain/, parents[3]=tests/, parents[4]=repo root. _SUMMARY_PDF: Final[Path] = ( Path(__file__).resolve().parents[4] / "backend" / "documents_parser" / "tests" / "fixtures" diff --git a/domain/sap10_calculator/worksheet/tests/_xlsx_loader.py b/tests/domain/sap10_calculator/worksheet/_xlsx_loader.py similarity index 73% rename from domain/sap10_calculator/worksheet/tests/_xlsx_loader.py rename to tests/domain/sap10_calculator/worksheet/_xlsx_loader.py index 0c528080..ef8d2ea1 100644 --- a/domain/sap10_calculator/worksheet/tests/_xlsx_loader.py +++ b/tests/domain/sap10_calculator/worksheet/_xlsx_loader.py @@ -19,6 +19,7 @@ from pathlib import Path from typing import Any, Iterable import openpyxl +import pytest _REPO_ROOT = Path(__file__).resolve().parents[4] WORKSHEET_XLSX_PATH = _REPO_ROOT / "2026-05-19-17-18 RdSap10Worksheet.xlsx" @@ -36,5 +37,14 @@ def load_cells(sheet_name: str, cells: Iterable[str]) -> dict[str, Any]: last-computed result rather than the formula string. Cell refs use standard Excel notation, e.g. "Q23", "U25". """ + if not WORKSHEET_XLSX_PATH.exists(): + # The canonical worksheet xlsx is a gitignored dev reference + # (`.gitignore` `*.xlsx`), so it isn't available in CI. Tests that + # pin the calculator against it run locally only and skip cleanly + # when it's absent rather than erroring with FileNotFoundError. + pytest.skip( + f"reference worksheet not present ({WORKSHEET_XLSX_PATH.name}); " + "gitignored dev artifact — xlsx-pinned tests are local-only" + ) sheet = _workbook()[sheet_name] return {ref: sheet[ref].value for ref in cells} diff --git a/domain/sap10_calculator/worksheet/tests/fixtures/basement/0712-3058-2202-3816-8204.json b/tests/domain/sap10_calculator/worksheet/fixtures/basement/0712-3058-2202-3816-8204.json similarity index 100% rename from domain/sap10_calculator/worksheet/tests/fixtures/basement/0712-3058-2202-3816-8204.json rename to tests/domain/sap10_calculator/worksheet/fixtures/basement/0712-3058-2202-3816-8204.json diff --git a/domain/sap10_calculator/worksheet/tests/fixtures/rir/0636-6824-0100-0500-6222.json b/tests/domain/sap10_calculator/worksheet/fixtures/rir/0636-6824-0100-0500-6222.json similarity index 100% rename from domain/sap10_calculator/worksheet/tests/fixtures/rir/0636-6824-0100-0500-6222.json rename to tests/domain/sap10_calculator/worksheet/fixtures/rir/0636-6824-0100-0500-6222.json diff --git a/domain/sap10_calculator/worksheet/tests/fixtures/rir/0636-8125-6600-0416-2202.json b/tests/domain/sap10_calculator/worksheet/fixtures/rir/0636-8125-6600-0416-2202.json similarity index 100% rename from domain/sap10_calculator/worksheet/tests/fixtures/rir/0636-8125-6600-0416-2202.json rename to tests/domain/sap10_calculator/worksheet/fixtures/rir/0636-8125-6600-0416-2202.json diff --git a/domain/sap10_calculator/worksheet/tests/fixtures/rir/0782-3058-6209-9186-1200.json b/tests/domain/sap10_calculator/worksheet/fixtures/rir/0782-3058-6209-9186-1200.json similarity index 100% rename from domain/sap10_calculator/worksheet/tests/fixtures/rir/0782-3058-6209-9186-1200.json rename to tests/domain/sap10_calculator/worksheet/fixtures/rir/0782-3058-6209-9186-1200.json diff --git a/domain/sap10_calculator/worksheet/tests/test_appendix_h_solar.py b/tests/domain/sap10_calculator/worksheet/test_appendix_h_solar.py similarity index 100% rename from domain/sap10_calculator/worksheet/tests/test_appendix_h_solar.py rename to tests/domain/sap10_calculator/worksheet/test_appendix_h_solar.py diff --git a/domain/sap10_calculator/worksheet/tests/test_dimensions.py b/tests/domain/sap10_calculator/worksheet/test_dimensions.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_dimensions.py rename to tests/domain/sap10_calculator/worksheet/test_dimensions.py index 858c739e..0f37c536 100644 --- a/domain/sap10_calculator/worksheet/tests/test_dimensions.py +++ b/tests/domain/sap10_calculator/worksheet/test_dimensions.py @@ -27,7 +27,7 @@ from domain.sap10_ml.tests._fixtures import ( make_minimal_sap10_epc, ) from domain.sap10_calculator.worksheet.dimensions import Dimensions, dimensions_from_cert -from domain.sap10_calculator.worksheet.tests._xlsx_loader import load_cells +from tests.domain.sap10_calculator.worksheet._xlsx_loader import load_cells _RIR_FIXTURES_DIR = Path(__file__).parent / "fixtures" / "rir" @@ -507,7 +507,7 @@ def test_all_rir_shapes_apply_section_1_2_45m_convention_uniformly( from types import ModuleType # noqa: E402 (kept near the Elmhurst tests) -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( # noqa: E402 +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( # noqa: E402 ALL_FIXTURES as _ELMHURST_FIXTURES, fixture_id as _elmhurst_fixture_id, ) diff --git a/domain/sap10_calculator/worksheet/tests/test_e2e_elmhurst_sap_score.py b/tests/domain/sap10_calculator/worksheet/test_e2e_elmhurst_sap_score.py similarity index 98% rename from domain/sap10_calculator/worksheet/tests/test_e2e_elmhurst_sap_score.py rename to tests/domain/sap10_calculator/worksheet/test_e2e_elmhurst_sap_score.py index 3b385b60..69ad44ba 100644 --- a/domain/sap10_calculator/worksheet/tests/test_e2e_elmhurst_sap_score.py +++ b/tests/domain/sap10_calculator/worksheet/test_e2e_elmhurst_sap_score.py @@ -29,7 +29,7 @@ from domain.sap10_calculator.rdsap.cert_to_inputs import ( cert_to_inputs, water_heating_section_from_cert, ) -from domain.sap10_calculator.worksheet.tests import ( +from tests.domain.sap10_calculator.worksheet import ( _elmhurst_worksheet_000474 as _w000474, _elmhurst_worksheet_000477 as _w000477, _elmhurst_worksheet_000480 as _w000480, @@ -38,7 +38,7 @@ from domain.sap10_calculator.worksheet.tests import ( _elmhurst_worksheet_000516 as _w000516, _elmhurst_worksheet_000565 as _w000565, ) -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( ALL_FIXTURES as _ELMHURST_FIXTURES, fixture_id as _elmhurst_fixture_id, ) diff --git a/domain/sap10_calculator/worksheet/tests/test_energy_requirements.py b/tests/domain/sap10_calculator/worksheet/test_energy_requirements.py similarity index 100% rename from domain/sap10_calculator/worksheet/tests/test_energy_requirements.py rename to tests/domain/sap10_calculator/worksheet/test_energy_requirements.py diff --git a/domain/sap10_calculator/worksheet/tests/test_fabric_energy_efficiency.py b/tests/domain/sap10_calculator/worksheet/test_fabric_energy_efficiency.py similarity index 96% rename from domain/sap10_calculator/worksheet/tests/test_fabric_energy_efficiency.py rename to tests/domain/sap10_calculator/worksheet/test_fabric_energy_efficiency.py index 33c0b834..279acfff 100644 --- a/domain/sap10_calculator/worksheet/tests/test_fabric_energy_efficiency.py +++ b/tests/domain/sap10_calculator/worksheet/test_fabric_energy_efficiency.py @@ -13,7 +13,7 @@ import pytest from domain.sap10_calculator.worksheet.fabric_energy_efficiency import ( fabric_energy_efficiency_kwh_per_m2_yr, ) -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ALL_FIXTURES, fixture_id +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ALL_FIXTURES, fixture_id def test_fabric_energy_efficiency_sums_heating_per_m2_and_cooling_per_m2() -> None: diff --git a/domain/sap10_calculator/worksheet/tests/test_fuel_cost.py b/tests/domain/sap10_calculator/worksheet/test_fuel_cost.py similarity index 100% rename from domain/sap10_calculator/worksheet/tests/test_fuel_cost.py rename to tests/domain/sap10_calculator/worksheet/test_fuel_cost.py diff --git a/domain/sap10_calculator/worksheet/tests/test_heat_transmission.py b/tests/domain/sap10_calculator/worksheet/test_heat_transmission.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_heat_transmission.py rename to tests/domain/sap10_calculator/worksheet/test_heat_transmission.py index 3e2660b2..b9f54aae 100644 --- a/domain/sap10_calculator/worksheet/tests/test_heat_transmission.py +++ b/tests/domain/sap10_calculator/worksheet/test_heat_transmission.py @@ -1326,11 +1326,11 @@ def test_real_corpus_basement_cert_has_part_with_has_basement_true() -> None: from types import ModuleType # noqa: E402 -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( # noqa: E402 +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( # noqa: E402 ALL_FIXTURES as _ELMHURST_FIXTURES, fixture_id as _elmhurst_fixture_id, ) -from domain.sap10_calculator.worksheet.tests import ( # noqa: E402 +from tests.domain.sap10_calculator.worksheet import ( # noqa: E402 _elmhurst_worksheet_000474 as _w000474, _elmhurst_worksheet_000490 as _w000490, ) diff --git a/domain/sap10_calculator/worksheet/tests/test_internal_gains.py b/tests/domain/sap10_calculator/worksheet/test_internal_gains.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_internal_gains.py rename to tests/domain/sap10_calculator/worksheet/test_internal_gains.py index c63eea1d..3c8c07a2 100644 --- a/domain/sap10_calculator/worksheet/tests/test_internal_gains.py +++ b/tests/domain/sap10_calculator/worksheet/test_internal_gains.py @@ -44,7 +44,7 @@ from datatypes.epc.domain.epc_property_data import ( SapWindow, ) from domain.sap10_ml.tests._fixtures import make_minimal_sap10_epc -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ALL_FIXTURES, fixture_id +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ALL_FIXTURES, fixture_id def test_metabolic_gains_are_60w_per_occupant_constant_across_months() -> None: diff --git a/domain/sap10_calculator/worksheet/tests/test_mean_internal_temperature.py b/tests/domain/sap10_calculator/worksheet/test_mean_internal_temperature.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_mean_internal_temperature.py rename to tests/domain/sap10_calculator/worksheet/test_mean_internal_temperature.py index d209a1d1..a16d91a9 100644 --- a/domain/sap10_calculator/worksheet/tests/test_mean_internal_temperature.py +++ b/tests/domain/sap10_calculator/worksheet/test_mean_internal_temperature.py @@ -24,7 +24,7 @@ from domain.sap10_calculator.worksheet.mean_internal_temperature import ( mean_internal_temperature_monthly, off_period_temperature_reduction_c, ) -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ALL_FIXTURES, fixture_id +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ALL_FIXTURES, fixture_id # UK-average climate (region 0) external temperatures, Appendix U Table U1. diff --git a/domain/sap10_calculator/worksheet/tests/test_mev.py b/tests/domain/sap10_calculator/worksheet/test_mev.py similarity index 100% rename from domain/sap10_calculator/worksheet/tests/test_mev.py rename to tests/domain/sap10_calculator/worksheet/test_mev.py diff --git a/domain/sap10_calculator/worksheet/tests/test_photovoltaic.py b/tests/domain/sap10_calculator/worksheet/test_photovoltaic.py similarity index 100% rename from domain/sap10_calculator/worksheet/tests/test_photovoltaic.py rename to tests/domain/sap10_calculator/worksheet/test_photovoltaic.py diff --git a/domain/sap10_calculator/worksheet/tests/test_rating.py b/tests/domain/sap10_calculator/worksheet/test_rating.py similarity index 100% rename from domain/sap10_calculator/worksheet/tests/test_rating.py rename to tests/domain/sap10_calculator/worksheet/test_rating.py diff --git a/domain/sap10_calculator/worksheet/tests/test_section_cascade_pins.py b/tests/domain/sap10_calculator/worksheet/test_section_cascade_pins.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_section_cascade_pins.py rename to tests/domain/sap10_calculator/worksheet/test_section_cascade_pins.py index 8121d7b9..b3480d2a 100644 --- a/domain/sap10_calculator/worksheet/tests/test_section_cascade_pins.py +++ b/tests/domain/sap10_calculator/worksheet/test_section_cascade_pins.py @@ -35,7 +35,7 @@ from domain.sap10_calculator.rdsap.cert_to_inputs import ( water_heating_section_from_cert, ) from domain.sap10_calculator.worksheet.dimensions import dimensions_from_cert -from domain.sap10_calculator.worksheet.tests import ( +from tests.domain.sap10_calculator.worksheet import ( _elmhurst_worksheet_000474 as _w000474, _elmhurst_worksheet_000477 as _w000477, _elmhurst_worksheet_000480 as _w000480, diff --git a/domain/sap10_calculator/worksheet/tests/test_solar_gains.py b/tests/domain/sap10_calculator/worksheet/test_solar_gains.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_solar_gains.py rename to tests/domain/sap10_calculator/worksheet/test_solar_gains.py index 3f368fa2..bb3ff89d 100644 --- a/domain/sap10_calculator/worksheet/tests/test_solar_gains.py +++ b/tests/domain/sap10_calculator/worksheet/test_solar_gains.py @@ -29,7 +29,7 @@ from domain.sap10_calculator.worksheet.solar_gains import ( window_solar_gain_w, z_solar_for_overshading, ) -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ALL_FIXTURES, fixture_id +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ALL_FIXTURES, fixture_id # Worksheet U985-0001-000490 reference (UK-avg weather, region 0): diff --git a/domain/sap10_calculator/worksheet/tests/test_space_cooling.py b/tests/domain/sap10_calculator/worksheet/test_space_cooling.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_space_cooling.py rename to tests/domain/sap10_calculator/worksheet/test_space_cooling.py index 4f0d8a2f..28343680 100644 --- a/domain/sap10_calculator/worksheet/tests/test_space_cooling.py +++ b/tests/domain/sap10_calculator/worksheet/test_space_cooling.py @@ -14,7 +14,7 @@ from domain.sap10_calculator.worksheet.space_cooling import ( space_cooling_monthly_kwh, utilisation_factor_loss, ) -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ALL_FIXTURES, fixture_id +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ALL_FIXTURES, fixture_id _FULLY_INACTIVE_GAINS_WINTER_TE_C: float = -10.0 diff --git a/domain/sap10_calculator/worksheet/tests/test_space_heating.py b/tests/domain/sap10_calculator/worksheet/test_space_heating.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_space_heating.py rename to tests/domain/sap10_calculator/worksheet/test_space_heating.py index f279cbb4..d69a6114 100644 --- a/domain/sap10_calculator/worksheet/tests/test_space_heating.py +++ b/tests/domain/sap10_calculator/worksheet/test_space_heating.py @@ -17,7 +17,7 @@ from domain.sap10_calculator.worksheet.space_heating import ( monthly_heat_requirement_kwh, space_heating_monthly_kwh, ) -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ALL_FIXTURES, fixture_id +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ALL_FIXTURES, fixture_id _UK_AVG_EXT_TEMP_C: tuple[float, ...] = tuple( diff --git a/domain/sap10_calculator/worksheet/tests/test_utilisation_factor.py b/tests/domain/sap10_calculator/worksheet/test_utilisation_factor.py similarity index 100% rename from domain/sap10_calculator/worksheet/tests/test_utilisation_factor.py rename to tests/domain/sap10_calculator/worksheet/test_utilisation_factor.py diff --git a/domain/sap10_calculator/worksheet/tests/test_ventilation.py b/tests/domain/sap10_calculator/worksheet/test_ventilation.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_ventilation.py rename to tests/domain/sap10_calculator/worksheet/test_ventilation.py index f307b354..ba0ee229 100644 --- a/domain/sap10_calculator/worksheet/tests/test_ventilation.py +++ b/tests/domain/sap10_calculator/worksheet/test_ventilation.py @@ -12,7 +12,7 @@ Canonical worked example: `2026-05-19-17-18 RdSap10Worksheet.xlsx`, import pytest -from domain.sap10_calculator.worksheet.tests._xlsx_loader import load_cells +from tests.domain.sap10_calculator.worksheet._xlsx_loader import load_cells from domain.sap10_calculator.worksheet.ventilation import ( MechanicalVentilationKind, TABLE_U2_NON_REGIONAL_WIND_SPEED_M_S, @@ -461,7 +461,7 @@ def test_excel_worksheet_conformance_section_2_lines_6a_to_25m() -> None: from types import ModuleType # noqa: E402 -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ( # noqa: E402 +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ( # noqa: E402 ALL_FIXTURES as _ELMHURST_FIXTURES, fixture_id as _elmhurst_fixture_id, ) diff --git a/domain/sap10_calculator/worksheet/tests/test_water_heating.py b/tests/domain/sap10_calculator/worksheet/test_water_heating.py similarity index 99% rename from domain/sap10_calculator/worksheet/tests/test_water_heating.py rename to tests/domain/sap10_calculator/worksheet/test_water_heating.py index bc3cdcdf..e8e85b1e 100644 --- a/domain/sap10_calculator/worksheet/tests/test_water_heating.py +++ b/tests/domain/sap10_calculator/worksheet/test_water_heating.py @@ -12,13 +12,13 @@ from types import ModuleType import pytest -from domain.sap10_calculator.worksheet.tests import ( +from tests.domain.sap10_calculator.worksheet import ( _elmhurst_worksheet_000474 as _w000474, _elmhurst_worksheet_000477 as _w000477, _elmhurst_worksheet_000490 as _w000490, ) -from domain.sap10_calculator.worksheet.tests._elmhurst_fixtures import ALL_FIXTURES, fixture_id -from domain.sap10_calculator.worksheet.tests._xlsx_loader import load_cells +from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import ALL_FIXTURES, fixture_id +from tests.domain.sap10_calculator.worksheet._xlsx_loader import load_cells from domain.sap10_calculator.worksheet.water_heating import ( TABLE_J1_TCOLD_FROM_MAINS_C, annual_average_hot_water_l_per_day, @@ -678,7 +678,7 @@ def test_000490_cert_to_inputs_hot_water_kwh_closes_via_equation_d1() -> None: 2851 (target ±2%).""" # Arrange from domain.sap10_calculator.rdsap.cert_to_inputs import cert_to_inputs - from domain.sap10_calculator.worksheet.tests import _elmhurst_worksheet_000490 as _w000490 + from tests.domain.sap10_calculator.worksheet import _elmhurst_worksheet_000490 as _w000490 epc = _w000490.build_epc()