"""Test product schemas.""" import datetime from analytics.schemas.product import ( ProductAggregateStreamsSchema, ProductSchema, ProductTrackItemSchema, ) def test_product_schema(): """Test ProductSchema schema.""" input_data = { "product_id": 1, "streams": {"aggregate": {"growth_percentage": 4.6667}}, "tracks": [ { "track_id": 1, "isrc": "TESTISRC", "streams": {"aggregate": {"growth_percentage": 7.6667}}, }, { "track_id": 2, "isrc": "TESTISRC2", "streams": {"aggregate": {"growth_percentage": 1.6667}}, }, ], "sources": [{"id": 286, "name": "Spotify"}, {"id": 1, "name": "Apple Music"}], } expected_response = { "product_id": "1", "streams": {"aggregate": {"growth_percentage": 4.6667}}, "tracks": [ { "track_id": 1, "isrc": "TESTISRC", "streams": {"aggregate": {"growth_percentage": 7.6667}}, }, { "track_id": 2, "isrc": "TESTISRC2", "streams": {"aggregate": {"growth_percentage": 1.6667}}, }, ], "sources": [{"id": 286, "name": "Spotify"}, {"id": 1, "name": "Apple Music"}], } schema = ProductSchema( exclude=[ "streams.items", "streams.stores", "tracks.streams.items", "tracks.streams.stores", ] ) assert schema.dump(input_data) == expected_response def test_producttrackitem_schema(): """Test ProductTrackItemSchema.""" input_data = { "track_id": 1, "isrc": "TESTISRC", "streams": {"aggregate": {"growth_percentage": 7.6667}}, } expected_response = { "track_id": 1, "isrc": "TESTISRC", "streams": {"aggregate": {"growth_percentage": 7.6667}}, } schema = ProductTrackItemSchema(exclude=["streams.items", "streams.stores"]) assert schema.dump(input_data) == expected_response def test_product_aggregate_streams_schema(): """Test ProductAggregateStreamsSchema schema.""" input_data = { "product_id": 1, "streams_all_time": 1000, "growth_percentage_7_days": 0.25, } expected_response = { "product_id": "1", "streams_all_time": 1000, "growth_percentage_7_days": 0.25, } schema = ProductAggregateStreamsSchema() assert schema.dump(input_data) == expected_response