agenda/tests/test_build_place_yaml.py

101 lines
2.6 KiB
Python

"""Tests for agenda.build_place_yaml."""
from pathlib import Path
import yaml
from agenda import build_place_yaml
def test_upsert_station_adds_new_station(tmp_path: Path) -> None:
"""Station upsert should add a new station to stations.yaml."""
path = tmp_path / "stations.yaml"
path.write_text("""- name: London St Pancras
latitude: 51.531921
longitude: -0.126361
country: gb
wikidata: Q720102
routes: {}
""")
replaced = build_place_yaml.upsert_station(
tmp_path,
{
"name": "Paris Gare du Nord",
"latitude": 48.8809,
"longitude": 2.3553,
"country": "fr",
"wikidata": "Q624511",
"routes": {},
},
)
stations = yaml.safe_load(path.read_text())
assert replaced is False
assert [station["name"] for station in stations] == [
"London St Pancras",
"Paris Gare du Nord",
]
assert "\n\n- name: Paris Gare du Nord\n" in path.read_text()
def test_upsert_station_replaces_existing_station(tmp_path: Path) -> None:
"""Station upsert should replace an existing station with the same name."""
path = tmp_path / "stations.yaml"
path.write_text("""- name: Paris Gare du Nord
latitude: 0
longitude: 0
country: fr
wikidata: Q624511
routes: {}
""")
replaced = build_place_yaml.upsert_station(
tmp_path,
{
"name": "Paris Gare du Nord",
"latitude": 48.8809,
"longitude": 2.3553,
"country": "fr",
"wikidata": "Q624511",
"routes": {},
},
)
stations = yaml.safe_load(path.read_text())
assert replaced is True
assert len(stations) == 1
assert stations[0]["latitude"] == 48.8809
assert "\n\n- name:" not in path.read_text()
def test_upsert_airport_adds_mapping_entry(tmp_path: Path) -> None:
"""Airport upsert should add a new IATA-keyed airport entry."""
path = tmp_path / "airports.yaml"
path.write_text("""LHR:
iata: LHR
name: Heathrow Airport
city: London
country: gb
latitude: 51.47
longitude: -0.4543
qid: Q8691
""")
replaced = build_place_yaml.upsert_airport(
tmp_path,
{
"iata": "ORY",
"name": "Paris Orly Airport",
"city": "Paris Orly Airport",
"country": "fr",
"latitude": 48.723333,
"longitude": 2.379444,
"qid": "Q193353",
},
)
airports = yaml.safe_load(path.read_text())
assert replaced is False
assert list(airports) == ["LHR", "ORY"]
assert airports["ORY"]["country"] == "fr"