from pytest_mock import MockerFixture from campaigns.assets.enums import AssetStatus from campaigns.assets.models import Asset from tests.unit.faker import FakerTyped from tests.unit.types import BuildModel def test_asset( build_model: BuildModel, fake: FakerTyped, mocker: MockerFixture ) -> None: mocker.patch("campaigns.assets.models.settings.assets_cdn_domain", new="test.com") asset_id = fake.uuid4_string() status = AssetStatus.COMPLETED filename = "Sony Purpose | Official Video.mp4" bucket = "assets-bucket" asset = build_model( Asset, id=asset_id, status=status, filename=filename, bucket=bucket, ) assert asset assert asset.id == asset_id assert asset.status == status assert asset.filename == filename assert asset.bucket == bucket assert asset.url == ( f"https://test.com/raw/{asset_id}/Sony+Purpose+%7C+Official+Video.mp4" ) def test_asset_custom_key( build_model: BuildModel, fake: FakerTyped, mocker: MockerFixture ) -> None: mocker.patch("campaigns.assets.models.settings.assets_cdn_domain", new="test.com") asset_key = "custom-key" asset = build_model( Asset, status=AssetStatus.COMPLETED, key=asset_key, ) assert asset assert asset.key == asset_key assert asset.url == f"https://test.com/{asset_key}" def test_asset_not_completed_url(build_model: BuildModel, fake: FakerTyped) -> None: asset = build_model(Asset, status=AssetStatus.INVALID) assert asset assert asset.url is None