"""Test for the Chart Handler.""" from unittest.mock import patch from charts.connectors import snowflake from charts.logic.dataloaders.chart_groups import chart_ids_dataloader def test_escape_normal() -> None: """Test _escape.""" slug = 'amazon_track_daily_tv_and' escaped_slug = chart_ids_dataloader._escape(slug) assert escaped_slug == 'amazon_track_daily_tv_and' def test_escape_with_apostrophe() -> None: """Test _escape.""" slug = "amazon_track_daily_latin_children's" escaped_slug = chart_ids_dataloader._escape(slug) assert escaped_slug == r"amazon_track_daily_latin_children\'s" def test_get_chart_groups_chart_ids() -> None: """Test _get_chart_groups_chart_ids.""" fetchall_mock_response = [ [ 'chart-slug', '9745468d-9dbd-40a7-af10-3a0066fd808b,de95bb84-4616-4b4f-b0e5-bd5e20488232', 'de95bb84-4616-4b4f-b0e5-bd5e20488232', ], [ None, None, None, ], ] with patch.object(snowflake, 'fetchall_nocache', return_value=fetchall_mock_response): response = chart_ids_dataloader._get_chart_groups_chart_ids( ['chart-slug-1', 'chart-slug-2'], controlled_charts_ffs=[], ) assert response == [ { 'data': { 'slug': 'chart-slug', 'chart_ids': [ '9745468d-9dbd-40a7-af10-3a0066fd808b', 'de95bb84-4616-4b4f-b0e5-bd5e20488232', ], 'default_chart_id': 'de95bb84-4616-4b4f-b0e5-bd5e20488232', }, }, { 'data': None, }, ] def test_key_serializer() -> None: """Test _key_serializer.""" result = chart_ids_dataloader._key_serializer( 'chart-slug-1', controlled_charts_ffs=[ 'insights_chart_youtube_daily', ], ) assert result == "chart_group:chart-slug-1:chart_ids:controlled_chart_ffs:['insights_chart_youtube_daily']"