Refactor menu flows into dedicated pages
Some checks failed
ci / test (push) Has been cancelled

This commit is contained in:
VPN SaaS Dev
2026-05-16 11:59:09 +09:00
parent 01a69fc42d
commit ecfb5aa949
20 changed files with 2415 additions and 97 deletions

View File

@@ -128,3 +128,90 @@ async def test_expense_crud_and_insurance_allocation(client, auth_headers) -> No
deleted = await client.delete(f"/api/expenses/{entry_id}", headers=auth_headers)
assert deleted.status_code == 204
@pytest.mark.asyncio
async def test_my_data_export_preview_and_import(client, auth_headers, other_auth_headers) -> None:
car = (
await client.post(
"/api/cars",
headers=auth_headers,
json={
"name": "Export car",
"make": "Kia",
"model": "K5",
"plate_number": "12가3456",
"vin": "1HGCM82633A004352",
"engine_oil_type": "5W-30 API SP",
"current_odometer": 10000,
},
)
).json()
await client.post(
"/api/fuel",
headers=auth_headers,
json={
"car_id": car["id"],
"entry_date": "2026-05-12",
"odometer": 10100,
"liters": 40,
"price_per_liter": 2,
},
)
await client.post(
"/api/service",
headers=auth_headers,
json={
"car_id": car["id"],
"entry_date": "2026-05-13",
"odometer": 10200,
"service_type": "maintenance",
"title": "Oil change",
"total_cost": 120,
},
)
await client.post(
"/api/expenses",
headers=auth_headers,
json={
"car_id": car["id"],
"entry_date": "2026-05-14",
"category": "parking",
"title": "Parking",
"total_cost": 10,
},
)
exported = await client.get("/api/my/export", headers=auth_headers)
assert exported.status_code == 200
payload = exported.json()
assert payload["schema"] == "carpass.exchange.v1"
assert payload["vehicles"][0]["vehicle"]["name"] == "Export car"
preview = await client.post("/api/my/import/preview", headers=other_auth_headers, json=payload)
assert preview.status_code == 200
assert preview.json()["counts"] == {
"vehicles": 1,
"fuel_entries": 1,
"service_entries": 1,
"expense_entries": 1,
"appointments": 0,
"service_visits": 0,
}
imported = await client.post("/api/my/import", headers=other_auth_headers, json=payload)
assert imported.status_code == 200
assert imported.json()["imported"]["vehicles_created"] == 1
assert imported.json()["imported"]["fuel_entries"] == 1
repeated = await client.post("/api/my/import", headers=other_auth_headers, json=payload)
assert repeated.status_code == 200
assert repeated.json()["imported"]["vehicles_matched"] == 1
assert repeated.json()["imported"]["fuel_entries"] == 0
imported_cars = await client.get("/api/cars", headers=other_auth_headers)
assert imported_cars.status_code == 200
imported_car = imported_cars.json()[0]
assert imported_car["name"] == "Export car"
assert imported_car["engine_oil_type"] == "5W-30 API SP"
assert imported_car["current_odometer"] == 10200

View File

@@ -74,6 +74,10 @@ async def test_available_slots_skip_weekend_lunch_and_holidays(
"accepts_online_booking": True,
},
)
settings = await client.get(f"/api/sto/settings/booking?service_center_id={center['id']}", headers=auth_headers)
assert settings.status_code == 200
assert settings.json()["working_days"] == [0]
assert settings.json()["open_time"] == "09:00:00"
await client.post(
"/api/sto/settings/holidays",
headers=auth_headers,