"""Test for the Chart Handler.""" from unittest.mock import patch import pytest import datetime import uuid from charts.connectors import snowflake from charts.logic.dataloaders.charts import chart_date_entry_summary_dataloader def test_get_chart_date_entry_summary_for_isrcs() -> None: """Test _get_chart_date_entry_summary_for_isrcs.""" fetchall_mock_response = [ [ 10, 12, 1, True, ], [ 0, None, 0, True ], [ 2, 2, 2, True ], [ 0, None, 0, False ] ] with patch.object(snowflake, 'fetchall_nocache', return_value=fetchall_mock_response): response = chart_date_entry_summary_dataloader._get_chart_date_entry_summary_for_isrcs([ { "chart_date": datetime.date(2024, 12, 12), "isrc": "isrc1" }, { "chart_date": datetime.date(2024, 12, 12), "isrc": "isrc2" }, { "chart_date": datetime.date(2024, 12, 12), "isrc": "isrc3" }, { "chart_date": datetime.date(2050, 12, 1), "isrc": "isrc3" }, ], [uuid.UUID("9745468d-9dbd-40a7-af10-3a0066fd808b"), uuid.UUID("de95bb84-4616-4b4f-b0e5-bd5e20488232", )]) assert response == [ { "data": { "feature": 10, "average_position": 12, "top_10_rank": 1, }, }, { "data": { "feature": 0, "average_position": None, "top_10_rank": 0, } }, { "data": { "feature": 2, "average_position": 2, "top_10_rank": 2, }, }, { "data": None }, ] def test_key_serializer() -> None: """Test _key_serializer.""" result = chart_date_entry_summary_dataloader._key_serializer({ 'chart_date': datetime.date(2024, 12, 12), 'isrc': 'isrc2' }, [uuid.UUID('d1dd4ca2-4815-4b0b-97dc-060a0a1441ea'), uuid.UUID('d1dd4ca2-4815-4b0b-97dc-060a0a1441ea')]) assert result == "charts:[UUID('d1dd4ca2-4815-4b0b-97dc-060a0a1441ea'), UUID('d1dd4ca2-4815-4b0b-97dc-060a0a1441ea')]:date:2024-12-12:isrc:isrc2"