from playlist.queries.fetch_queries import BulkPlaylistMetadataQuery from tests.unit.utils import raises_validation_error playlists = [ { "store_id": "1", "store_playlist_id": "pl.3de89e62aa3340038e08fa325c3f3f01", }, { "store_id": "286", "store_playlist_id": "4Pej5WoIpT84lCqwgc5aUM", }, ] def test_invalid_keys_are_deleted(): q = BulkPlaylistMetadataQuery( { "playlists": playlists, "abcd": "unknown", "efg": "unknown", } ) assert "abcd" not in q.query_params assert "efg" not in q.query_params assert "playlists" in q.query_params def test_invalid_with_incorrect_datatype(): with raises_validation_error( {"playlists": {0: {"store_id": ["Not a valid string."]}}} ): BulkPlaylistMetadataQuery( { "playlists": [ { "store_id": 1, "store_playlist_id": "pl.3de89e62aa3340038e08fa325c3f3f01", } ], } ) def test_valid_table_names(): q = BulkPlaylistMetadataQuery( { "playlists": playlists, } ) assert q.table_params == { "playlist_metadata_table": "v_playlists_by_playlist", "playlist_metadata_owner_table": "v_playlist_metadata", "playlist_spotify_apollo_metadata_overrides_table": ( "playlist_spotify_apollo_metadata_overrides" ), "playlist_rollup_table": "streams_by_playlist_rollup", } def test_valid_table_names_countries(): q = BulkPlaylistMetadataQuery( { "playlists": [ { "store_id": "1", "store_playlist_id": "pl.3de89e62aa3340038e08fa325c3f3f01", "storefront": "US", } ], "storefront_defined": True, } ) assert q.table_params == { "playlist_metadata_table": "v_playlists_by_playlist", "playlist_metadata_owner_table": "v_playlist_metadata", "playlist_spotify_apollo_metadata_overrides_table": ( "playlist_spotify_apollo_metadata_overrides" ), "playlist_rollup_table": "streams_by_playlist_country_rollup", } def test_apollo_metadata_overrides_not_rendered_when_disabled(): q = BulkPlaylistMetadataQuery( { "playlists": playlists, "storefront_defined": False, "insights_spotify_playlist_apollo_metadata_overrides_enabled": False, } ) sql, _ = q.prepare_query() assert "playlist_spotify_apollo_metadata_overrides" not in sql assert "apo.apply_curator_name" not in sql assert "initcap(pm.owner) as owner" in sql def test_apollo_metadata_overrides_rendered_when_enabled(): q = BulkPlaylistMetadataQuery( { "playlists": playlists, "storefront_defined": False, "insights_spotify_playlist_apollo_metadata_overrides_enabled": True, } ) sql, _ = q.prepare_query() assert "playlist_spotify_apollo_metadata_overrides apo" in sql assert "v_playlist_metadata pm" in sql assert "and apo.store_id = 286" in sql assert "and apo.is_active" in sql assert "initcap(case" in sql assert "apo.apply_owner" in sql assert "apo.apply_curator_name" in sql assert "apo.apply_curator_id" in sql assert "apo.apply_curator_country" in sql