import httpx from owsclient.test import OwsClientMock from app.adapters.ows_dmp import AudienceShareStatus, OwsDmpClient from tests.unit.factories import ( AudienceShareFactory, MetaAudienceShareFactory, TikTokAudienceFactory, TikTokAudienceShareFactory, ) def test_update_audience_share( ows_dmp_client: OwsDmpClient, ows_client_mock: OwsClientMock ) -> None: status = AudienceShareStatus.COMPLETED processed_fans = 10000 share = AudienceShareFactory.build() ows_client_mock.patch( "ows-dmp", f"/audience-shares/{share.id}", json={ "status": status, "processedFans": processed_fans, }, ).mock( return_value=httpx.Response( json=share.model_dump(mode="json", by_alias=True), status_code=200, ) ) updated_share = ows_dmp_client.update_audience_share( share_id=share.id, status=status, processed_fans=processed_fans, ) assert share == updated_share def test_get_meta_audience_share( ows_dmp_client: OwsDmpClient, ows_client_mock: OwsClientMock ) -> None: share_id = "abc123" meta_audience_share = MetaAudienceShareFactory.build() ows_client_mock.get( "ows-dmp", f"/meta/audience-shares/{share_id}", ).mock( return_value=httpx.Response( json=meta_audience_share.model_dump(mode="json", by_alias=True), status_code=200, ) ) result = ows_dmp_client.get_meta_audience_share(share_id) assert result == meta_audience_share def test_get_tiktok_audience_share( ows_dmp_client: OwsDmpClient, ows_client_mock: OwsClientMock ) -> None: share_id = "abc123" tiktok_audience_share = TikTokAudienceShareFactory.build() ows_client_mock.get( "ows-dmp", f"/tiktok/audience-shares/{share_id}", ).mock( return_value=httpx.Response( json=tiktok_audience_share.model_dump(mode="json", by_alias=True), status_code=200, ) ) result = ows_dmp_client.get_tiktok_audience_share(share_id) assert result == tiktok_audience_share def test_update_tiktok_audience_external_id( ows_dmp_client: OwsDmpClient, ows_client_mock: OwsClientMock ) -> None: audience_id = "abc123" external_id = "qwe456" tiktok_audience = TikTokAudienceFactory.build() ows_client_mock.patch( "ows-dmp", f"/tiktok/audiences/{audience_id}", json={"externalId": external_id}, ).mock( return_value=httpx.Response( json=tiktok_audience.model_dump(mode="json", by_alias=True), status_code=200, ) ) result = ows_dmp_client.update_tiktok_audience_external_id(audience_id, external_id) assert result == tiktok_audience