Add unit tests for station service and enhance documentation
Some checks failed
Backend CI / lint-and-test (push) Failing after 37s

- Introduced unit tests for the station service, covering creation, updating, and archiving of stations.
- Added detailed building block view documentation outlining the architecture of the Rail Game system.
- Created runtime view documentation illustrating key user interactions and system behavior.
- Developed concepts documentation detailing domain models, architectural patterns, and security considerations.
- Updated architecture documentation to reference new detailed sections for building block and runtime views.
This commit is contained in:
2025-10-11 18:52:25 +02:00
parent 2b9877a9d3
commit 615b63ba76
18 changed files with 1662 additions and 443 deletions

View File

@@ -0,0 +1,67 @@
from backend.scripts.stations_import import (
build_overpass_query,
normalize_station_elements,
)
def test_build_overpass_query_single_region() -> None:
query = build_overpass_query("berlin_metropolitan")
# The query should reference the Berlin bounding box coordinates.
assert "52.3381" in query # south
assert "52.6755" in query # north
assert "13.0884" in query # west
assert "13.7611" in query # east
assert "node" in query
assert "out body" in query
def test_build_overpass_query_all_regions_includes_union() -> None:
query = build_overpass_query("all")
# Ensure multiple regions are present by checking for repeated bbox parentheses.
assert query.count("node") >= 3
assert query.strip().endswith("out skel qt;")
def test_normalize_station_elements_filters_and_transforms() -> None:
raw_elements = [
{
"type": "node",
"id": 123,
"lat": 52.5,
"lon": 13.4,
"tags": {
"name": "Sample Station",
"ref": "XYZ",
"ele": "35.5",
},
},
{
"type": "node",
"id": 999,
# Missing coordinates should be ignored
"tags": {"name": "Broken"},
},
{
"type": "node",
"id": 456,
"lat": 50.0,
"lon": 8.0,
"tags": {
"name": "Disused Station",
"disused": "yes",
},
},
]
stations = normalize_station_elements(raw_elements)
assert len(stations) == 2
primary = stations[0]
assert primary["osm_id"] == "123"
assert primary["name"] == "Sample Station"
assert primary["code"] == "XYZ"
assert primary["elevation_m"] == 35.5
disused_station = stations[1]
assert disused_station["is_active"] is False