import httpx import pytest import respx from dmp.adapters.fivetran import FivetranClient from dmp.adapters.fivetran.enums import AdsTimeframeMonths from dmp.adapters.fivetran.models import ( StandardConfig, StandardConfigUpdate, ) from tests.unit.types import BuildModel class TestFivetranClient: @pytest.fixture def fivetran_client(self) -> FivetranClient: return FivetranClient( api_key="key", api_secret="secret", ads_timeframe_months=AdsTimeframeMonths.THREE, reporting_sync_frequency=1440, ) def test_patch_connection_schema_config( self, build_model: BuildModel, respx_mock: respx.MockRouter, fivetran_client: FivetranClient, ) -> None: schema_config_update = build_model(StandardConfigUpdate) standard_config = build_model(StandardConfig) respx_mock.patch( "https://api.fivetran.com/v1/connections/connection_id/schemas" ).mock( return_value=httpx.Response( status_code=200, json={ "code": "success", "message": None, "data": standard_config.model_dump(), }, ) ) result = fivetran_client.patch_connection_schema_config( connection_id="connection_id", schema_config=schema_config_update ) assert result == standard_config