from audience_common import datetimeutc from audience_common.formatters import format_datetime from starlette.testclient import TestClient from campaigns.assets.models import Asset from tests.unit.types import CreateModel async def test_get_asset(test_client: TestClient, create_model: CreateModel) -> None: asset = await create_model(Asset, uploaded_at=None) response = test_client.get(f"/assets/{asset.id}") assert response.status_code == 200 assert response.json() == { "id": asset.id, "status": asset.status, "thumbnailUrl": asset.thumbnail_url, "filename": asset.filename, "url": asset.url, "size": asset.size, "filetype": asset.filetype, "contentType": asset.content_type, "meta": asset.meta, "errors": asset.errors, "createdAt": format_datetime(asset.created_at), "updatedAt": format_datetime(asset.updated_at), "uploadedAt": None, } async def test_get_asset_by_key( test_client: TestClient, create_model: CreateModel ) -> None: uploaded_at = datetimeutc.now() asset = await create_model( Asset, key="Sony Purpose | Official Video.mp4", uploaded_at=uploaded_at ) response = test_client.get(f"/assets/{asset.key}") assert response.status_code == 200 assert response.json() == { "id": asset.id, "status": asset.status, "filename": asset.filename, "url": asset.url, "size": asset.size, "filetype": asset.filetype, "thumbnailUrl": asset.thumbnail_url, "contentType": asset.content_type, "meta": asset.meta, "errors": asset.errors, "createdAt": format_datetime(asset.created_at), "updatedAt": format_datetime(asset.updated_at), "uploadedAt": format_datetime(uploaded_at), } async def test_update_asset(test_client: TestClient, create_model: CreateModel) -> None: asset = await create_model(Asset, uploaded_at=None) response = test_client.patch(f"/assets/{asset.id}", json={}) assert response.status_code == 200 assert response.json() == { "id": asset.id, "status": asset.status, "filename": asset.filename, "url": asset.url, "size": asset.size, "filetype": asset.filetype, "contentType": asset.content_type, "meta": asset.meta, "errors": asset.errors, "thumbnailUrl": asset.thumbnail_url, "createdAt": format_datetime(asset.created_at), "updatedAt": format_datetime(asset.updated_at), "uploadedAt": None, }