"""Test for the Chart Handler.""" from unittest.mock import patch import uuid from charts.connectors import snowflake from charts.logic.dataloaders.charts import aggregated_values_dataloader def test_get_chart_rankings_aggregated_values_dataloaded() -> None: """Test _get_chart_rankings_aggregated_values_dataloaded.""" fetchall_mock_response = [ [ '9745468d-9dbd-40a7-af10-3a0066fd808b', "8d54d7b1-9569-4b4e-8ef4-a0ab67216c93", None, None, '2024-01-01', '2024-01-01', 1, 280, "isrc", "2022-01-01", 2, "2024-03-01", 5, "2023-01-01", 3 ], [ None, None, None, None, None, None, None, ] ] with patch.object(snowflake, 'fetchall_nocache', return_value=fetchall_mock_response): response = aggregated_values_dataloader._get_chart_rankings_aggregated_values_dataloaded([ { "chart_id": uuid.UUID("9745468d-9dbd-40a7-af10-3a0066fd808b"), "public_sound_recording_id": uuid.UUID("8d54d7b1-9569-4b4e-8ef4-a0ab67216c93"), "chartmetric_track_id": None, "public_product_id": None, }, { "chart_id": uuid.UUID("038f3079-31ad-4335-aa4e-3ad89cdc1cc7"), "public_sound_recording_id": uuid.UUID("8d54d7b1-9569-4b4e-8ef4-a0ab67216c93"), "chartmetric_track_id": None, "public_product_id": None, }, ]) assert response == [ { "data": { "chartId": "9745468d-9dbd-40a7-af10-3a0066fd808b", "publicSoundRecordingId": "8d54d7b1-9569-4b4e-8ef4-a0ab67216c93", "trackId": None, "publicProductId": None, "peakTimestamp": "2024-01-01", "peakDate": "2024-01-01", "peakPosition": 1, "appearances": 280, "isrc": "isrc", "firstDate": "2022-01-01", "firstPosition": 2, "mostRecentDate": "2024-03-01", "mostRecentPosition": 5, "previousDate": "2023-01-01", "previousPosition": 3 } }, { "data": None, } ] def test_key_serializer() -> None: """Test _key_serializer.""" result = aggregated_values_dataloader._key_serializer({ "chart_id": uuid.UUID("9745468d-9dbd-40a7-af10-3a0066fd808b"), "public_sound_recording_id": uuid.UUID("d1dd4ca2-4815-4b0b-97dc-060a0a1441ea"), "chartmetric_track_id": "123", "public_product_id": uuid.UUID("05efb6d4-792d-453c-a1de-f1cca507e329"), }) assert result == 'chart:9745468d-9dbd-40a7-af10-3a0066fd808b:aggregates:123:05efb6d4-792d-453c-a1de-f1cca507e329:d1dd4ca2-4815-4b0b-97dc-060a0a1441ea'