"""Tests product_metadata schema.""" import datetime from analytics.schemas.product_metadata import ProductMetadataSchema label_id = 123456 subaccount_id = 987654 TRACK = { "isrc": "NOOO", "track_number": 1, "track_cd": 1, "name": "track name", "version": "mix", "track_type": "music", } DATA_MODEL = { "label_id": label_id, "subaccount_id": subaccount_id, "subaccount_name": "Sub", "product_id": 123, "product_name": "release name", "artist_name": "artist", "upc": "245678987654", "release_date": "2018-01-01T00:00:00Z", "sales_start_date": "2018-02-01T00:00:00Z", "product_version": "Deluxe", "delivered_version": "Remix", "format": "Full length", "image_location": "http://theorchard.com/image", "tracks": [TRACK], } DOMAIN_MODEL = { "label_id": DATA_MODEL["label_id"], "subaccount_id": DATA_MODEL["subaccount_id"], "subaccount": DATA_MODEL["subaccount_name"], "product_id": str(DATA_MODEL["product_id"]), "product_name": DATA_MODEL["product_name"], "artist_name": DATA_MODEL["artist_name"], "upc": DATA_MODEL["upc"], "release_date": DATA_MODEL["release_date"], "sales_start_date": DATA_MODEL["sales_start_date"], "version": DATA_MODEL["product_version"], "delivered_version": DATA_MODEL["delivered_version"], "format": DATA_MODEL["format"], "image_location": DATA_MODEL["image_location"], "tracks": [ { "isrc": TRACK["isrc"], "track_number": TRACK["track_number"], "track_cd": TRACK["track_cd"], "track_name": TRACK["name"], "version": TRACK["version"], "track_type": TRACK["track_type"], } ], } def test_product_metadata_schema(): """Test ProductMetadataSchema.""" assert ( ProductMetadataSchema.normalize( DATA_MODEL, {"label_ids": [label_id], "subaccount_ids": None} ) == DOMAIN_MODEL ) def test_product_metadata_schema_subaccount(): """Test ProductMetadataSchema excluding subaccount field.""" expectedModel = dict.copy(DOMAIN_MODEL) expectedModel.pop("subaccount") assert ( ProductMetadataSchema.normalize( DATA_MODEL, {"label_ids": None, "subaccount_ids": [subaccount_id]} ) == expectedModel ) def test_product_metadata_schema_variations(): """Test aliases and date formats.""" data_variations = [ { "version": "test_version", "display_upc": "1", "release_name": "test_release_name", "release_date": datetime.datetime(2010, 2, 16, 0, 0), "sale_start_date": datetime.datetime(2010, 2, 16, 0, 0), }, { "version": "test_version", "display_upc": "1", "release_name": "test_release_name", "release_date": "2010-02-16T00:00:00Z", "sale_start_date": "2010-02-16T00:00:00Z", }, ] expected_response = { "version": "test_version", "product_name": "test_release_name", "sales_start_date": "2010-02-16T00:00:00Z", "upc": "1", "release_date": "2010-02-16T00:00:00Z", } for data in data_variations: assert ProductMetadataSchema.normalize(data) == expected_response