Added real timetable support
This commit is contained in:
@@ -429,6 +429,41 @@ async def test_e2e_admin_list_vehicles_specific_company(connected_admin):
|
||||
assert "vehicles" in responses[-1]
|
||||
assert isinstance(responses[-1]["vehicles"], list)
|
||||
|
||||
@pytest.mark.e2e
|
||||
@pytest.mark.asyncio
|
||||
async def test_e2e_admin_get_timetable_valid_vehicle(connected_admin):
|
||||
# Public function: get_timetable()
|
||||
# Input 1: a real vehicle id discovered via list_vehicles
|
||||
responses = []
|
||||
connected_admin.on_gamescript = lambda data: responses.append(data)
|
||||
await connected_admin.update_frequency(AdminUpdateType.Gamescript, AdminUpdateFrequency.Automatic)
|
||||
await connected_admin.list_vehicles()
|
||||
await asyncio.sleep(0.5)
|
||||
|
||||
assert len(responses) >= 1 and "vehicles" in responses[-1]
|
||||
vehicles = responses[-1]["vehicles"]
|
||||
if not vehicles:
|
||||
pytest.skip("No vehicles on the test server to query a timetable for.")
|
||||
vid = vehicles[0]["id"]
|
||||
|
||||
data = await connected_admin.get_timetable(vid, timeout=10.0)
|
||||
assert data["vehicle_id"] == vid
|
||||
for key in ("lateness", "start_tick", "current_order_time", "total_duration", "orders"):
|
||||
assert key in data
|
||||
assert isinstance(data["orders"], list)
|
||||
for order in data["orders"]:
|
||||
for key in ("position", "wait_time", "travel_time", "wait_timetabled",
|
||||
"travel_timetabled", "wait_fixed", "travel_fixed", "leave_type", "max_speed"):
|
||||
assert key in order
|
||||
|
||||
@pytest.mark.e2e
|
||||
@pytest.mark.asyncio
|
||||
async def test_e2e_admin_get_timetable_invalid_vehicle(connected_admin):
|
||||
# Public function: get_timetable()
|
||||
# Input 2: an id no vehicle can have -> GameScript reports invalid_vehicle
|
||||
with pytest.raises(ValueError, match="invalid_vehicle"):
|
||||
await connected_admin.get_timetable(65535, timeout=10.0)
|
||||
|
||||
|
||||
# --- Protocol Public Functions ---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user