"""Test art_relations module.""" import pytest from src.common.logic.art_relations import fetch_ar_records_to_sync from src.common.models.metadata import ARSyncEvent from src.common.models.metadata import ReleaseArtistTable class TestFetchArRecordsToSync: """Test fetch_ar_records_to_sync function.""" @pytest.fixture def art_relations_table(self): """Mock art_relations_table fixture.""" return ReleaseArtistTable @pytest.fixture def execute_query_result(self): """Mock execute_query result.""" return [ {'id': 1}, {'id': 2, 'column': 'value'}, ] @pytest.fixture def execute_query(self, mocker, execute_query_result): """Mock execute_query function.""" return mocker.patch( 'src.common.logic.art_relations.execute_query', return_value=execute_query_result) def test_fetch_ar_records_to_sync_sql( self, execute_query, art_relations_table, execute_query_result): """Test fetch_ar_records_to_sync function.""" fetch_ar_records_to_sync(art_relations_table, [1, 2]) execute_query.assert_called_once_with( f'SELECT * FROM {art_relations_table.name} ' f'WHERE {art_relations_table.primary_key_name} IN %(ids)s', {'ids': [1, 2]}) def test_fetch_ar_records_to_sync_result( self, execute_query, art_relations_table, execute_query_result): """Test fetch_ar_records_to_sync function.""" expected_result = [ ARSyncEvent(data=record, table=art_relations_table.name) for record in execute_query_result ] result = fetch_ar_records_to_sync(art_relations_table, [1, 2]) assert result == expected_result