import pytest from campaigns.assets.enums import AssetStatus from campaigns.assets.handlers import UpdateAssetHandler, UpdateAssetRequest from campaigns.assets.models import Asset from campaigns.assets.repositories import AssetRepository from campaigns.assets.services import AssetService from campaigns.connectors.db import Database from tests.unit.faker import FakerTyped from tests.unit.types import CreateModel @pytest.fixture def handler( db: Database, asset_repository: AssetRepository, asset_service: AssetService ) -> UpdateAssetHandler: return UpdateAssetHandler( db=db, asset_repository=asset_repository, asset_service=asset_service, ) async def test_update_asset( handler: UpdateAssetHandler, create_model: CreateModel, fake: FakerTyped ) -> None: asset = await create_model(Asset) status = AssetStatus.COMPLETED uploaded_at = fake.date_time() updated_asset = await handler.handle( UpdateAssetRequest( asset_id=asset.id, data={ "status": status, "uploaded_at": uploaded_at, }, ) ) assert updated_asset.id == asset.id assert updated_asset.status == status assert updated_asset.uploaded_at == uploaded_at