37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""
|
|
End-to-end test for Expense creation flow.
|
|
Uses the authenticated_client fixture to test POST /api/v1/expenses/add endpoint.
|
|
"""
|
|
import pytest
|
|
import httpx
|
|
from datetime import date
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_expense_creation(authenticated_client: httpx.AsyncClient, setup_vehicle):
|
|
"""
|
|
Test that a user can add an expense (fuel/service) to an asset.
|
|
Uses the setup_vehicle fixture to get a valid asset_id.
|
|
"""
|
|
asset_id = setup_vehicle
|
|
|
|
# Now add an expense for this asset
|
|
expense_payload = {
|
|
"asset_id": str(asset_id), # must be string
|
|
"category": "fuel", # or "service", "insurance", etc.
|
|
"amount": 15000.0,
|
|
"date": str(date.today()), # YYYY-MM-DD
|
|
}
|
|
|
|
response = await authenticated_client.post(
|
|
"/api/v1/expenses/add",
|
|
json=expense_payload
|
|
)
|
|
|
|
# Assert success
|
|
assert response.status_code == 200, f"Unexpected status: {response.status_code}, response: {response.text}"
|
|
|
|
data = response.json()
|
|
assert data["status"] == "success"
|
|
|
|
print(f"✅ Expense added for asset {asset_id}") |