Add unit tests for station service and enhance documentation
Some checks failed
Backend CI / lint-and-test (push) Failing after 37s
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:
67
backend/tests/test_stations_import.py
Normal file
67
backend/tests/test_stations_import.py
Normal 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
|
||||
Reference in New Issue
Block a user