from playlist.queries.fetch_queries import PlacementQuery from tests.unit.utils import raises_validation_error def test_invalid_keys_are_deleted(): q = PlacementQuery( { "isrc": "QM6N22019571", "store_id": "1", "store_playlist_id": "abc", "a": 1, "b": 2, } ) assert "a" not in q.query_params assert "b" not in q.query_params assert "isrc" in q.query_params assert "store_id" in q.query_params def test_invalid_isrc(): with raises_validation_error({"isrc": ["String does not match expected pattern."]}): PlacementQuery( {"isrc": "AHHHHH", "store_playlist_id": "asd", "store_id": "286"} ) def test_invalid_without_isrc(): with raises_validation_error({"isrc": ["Missing data for required field."]}): PlacementQuery({"store_playlist_id": "abc", "store_id": "1"}) def test_invalid_without_store_playlist_id(): with raises_validation_error( {"store_playlist_id": ["Missing data for required field."]} ): PlacementQuery({"isrc": "QM6N22019571", "store_id": "1"}) def test_invalid_without_store_id(): with raises_validation_error({"store_id": ["Missing data for required field."]}): PlacementQuery( { "isrc": "QM6N22019571", "store_playlist_id": "abc123", } )