Add app route tests and fix stale assertions
This commit is contained in:
parent
143887d482
commit
4de4c1d556
3 changed files with 80 additions and 5 deletions
74
tests/test_app.py
Normal file
74
tests/test_app.py
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
import app as app_module
|
||||
|
||||
|
||||
def _client():
|
||||
app_module.app.config['TESTING'] = True
|
||||
return app_module.app.test_client()
|
||||
|
||||
|
||||
def _stub_data(monkeypatch):
|
||||
monkeypatch.setattr(app_module, 'get_cached', lambda key: None)
|
||||
monkeypatch.setattr(app_module, 'set_cached', lambda key, data: None)
|
||||
monkeypatch.setattr(
|
||||
app_module.rtt_scraper,
|
||||
'fetch',
|
||||
lambda travel_date, user_agent: [
|
||||
{'depart_bristol': '07:00', 'arrive_paddington': '08:45', 'headcode': '1A23'},
|
||||
],
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
app_module.eurostar_scraper,
|
||||
'fetch',
|
||||
lambda destination, travel_date, user_agent: [
|
||||
{
|
||||
'depart_st_pancras': '10:01',
|
||||
'arrive_destination': '13:34',
|
||||
'destination': destination,
|
||||
'train_number': 'ES 9014',
|
||||
},
|
||||
],
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
app_module.eurostar_scraper,
|
||||
'timetable_url',
|
||||
lambda destination: f'https://example.test/{destination.lower().replace(" ", "-")}',
|
||||
)
|
||||
|
||||
|
||||
def test_index_shows_fixed_departure_and_destination_radios():
|
||||
client = _client()
|
||||
|
||||
resp = client.get('/')
|
||||
html = resp.get_data(as_text=True)
|
||||
|
||||
assert resp.status_code == 200
|
||||
assert 'Departure point' in html
|
||||
assert 'Bristol Temple Meads' in html
|
||||
assert html.count('type="radio"') == len(app_module.DESTINATIONS)
|
||||
assert 'destination-rotterdam' in html
|
||||
|
||||
|
||||
def test_search_redirects_to_results_with_selected_params():
|
||||
client = _client()
|
||||
|
||||
resp = client.get('/search?destination=rotterdam&travel_date=2026-04-10&min_connection=60&max_connection=120')
|
||||
|
||||
assert resp.status_code == 302
|
||||
assert resp.headers['Location'].endswith(
|
||||
'/results/rotterdam/2026-04-10?min_connection=60&max_connection=120'
|
||||
)
|
||||
|
||||
|
||||
def test_results_shows_same_day_destination_switcher(monkeypatch):
|
||||
_stub_data(monkeypatch)
|
||||
client = _client()
|
||||
|
||||
resp = client.get('/results/paris/2026-04-10?min_connection=60&max_connection=120')
|
||||
html = resp.get_data(as_text=True)
|
||||
|
||||
assert resp.status_code == 200
|
||||
assert 'Switch destination for Friday 10 April 2026' in html
|
||||
assert '<span class="chip-current">Paris Gare du Nord</span>' in html
|
||||
assert '/results/brussels/2026-04-10?min_connection=60&max_connection=120' in html
|
||||
assert '/results/rotterdam/2026-04-10?min_connection=60&max_connection=120' in html
|
||||
assert 'ES 9014' in html
|
||||
Loading…
Add table
Add a link
Reference in a new issue