"""Pytest conftest module.""" import pytest @pytest.fixture def context(): """State machine input.""" return { 'product': { 'status': None, 'display_artist_name': 'Cool Artist', 'upc': '231232563123', 'product_id': 3141281, 'is_main_release': True, 'release_type': 'Album', 'release_reference': 'R0', 'grid': 'A0145345234523453452', 'catalog_number': 'G0134523452345245', 'product_name': 'Test Artist', 'vendor_id': 123, 'subaccount_id': 999, 'genre_id': 20, 'subgenre_id': 621, 'not_for_distribution': 'SwitchboardDummy', }, 'tracks': [ { 'tuid': 1234, 'release_reference': 'R1', 'sequence_number': 1, 'release_type': 'TrackRelease', 'volume': 1, 'isrc': 'QZCDB2000001', 'track_name': 'This track', 'resource_reference': 'A1', }, { 'tuid': 12345, 'release_reference': 'R2', 'sequence_number': 1, 'release_type': 'TrackRelease', 'volume': 1, 'isrc': 'QZCDB2000002', 'track_name': 'This track', 'resource_reference': 'A1', }, { 'tuid': 123456, 'release_reference': 'R3', 'sequence_number': 1, 'release_type': 'TrackRelease', 'volume': 1, 'isrc': 'QZCDB2000003', 'track_name': 'This track', 'resource_reference': 'A1', }, ], 'participants': [ { 'name': 'Digital Farm Animals', 'artist_id': '11', 'label_participant_id': '12', 'label_participant_uuid': 'AAA', }, { 'name': 'Cash Cash', 'artist_id': '21', 'label_participant_id': '22', 'label_participant_uuid': 'BBB', }, { 'name': 'Nelly', 'artist_id': '31', 'label_participant_id': '32', 'label_participant_uuid': 'CCC', } ], 'project_id': '4498666', 'deals': None, 'bucket': 'ddex-bucket', 'key': 'key', 'message_id': '234524523', 'message_thread_id': 'G014523452345', 'party_id': 'PADPIDA2012041004F', 'update_indicator': 'OriginalMessage', 'ddex_provider': 'SME', } @pytest.fixture def s3_ddex(): """S3 json file.""" return { 'product': { 'display_artist_name': 'Cool Artist', 'upc': '231232563123', 'is_main_release': True, 'release_type': 'release', 'release_reference': 'R0', 'grid': 'A0145345234523453452', 'catalog_number': 'G0134523452345245', 'product_name': 'productName', 'p_line': 'Product Pline 2020', 'c_line': 'Product Cline 2020', 'product_version': 'product version', 'imprint': 'product imprint', 'display_artists': [ { 'apple_id': None, 'roles': ['MainArtist', 'Producer'], 'name': 'Digital Farm Animals', 'sequence_number': 1, 'spotify_uri': None, 'localized_names': [{ 'language_code': 'ru', 'name': 'Russian Farm Animals', }], }, { 'apple_id': None, 'roles': ['MainArtist'], 'name': 'Cash Cash', 'sequence_number': 2, 'spotify_uri': None, 'localized_names': [{ 'language_code': 'ru', 'name': 'Russian Cash Cash', }], }, { 'apple_id': None, 'roles': ['FeaturedArtist'], 'name': 'Nelly', 'sequence_number': 3, 'spotify_uri': None, 'localized_names': [{ 'language_code': 'ru', 'name': 'Russian Nelly', }], } ], 'genres': [ { 'genre': 'ELECTRONICA-00', 'subgenre': 'Alternative' }, { 'genre': 'Rock', 'subgenre': 'Ambient' } ], 'localized_titles': [ { 'language_code': 'fr', 'title': 'French Title', 'version': 'Original' }, { 'language_code': 'ru', 'title': 'Russian Title', 'version': 'Remaster' } ], }, 'tracks': [{ 'release_reference': 'R1', 'sequence_number': 1, 'release_type': 'TrackRelease', 'volume': 1, 'isrc': 'QZCDB2000001', 'track_name': 'This track', 'resource_reference': 'A1', 'ownership_rights': 'OWNED', 'recording_country_code': 'US', 'copyright_owner_country': 'GB', 'publishers': ['Publisher 1', 'Publisher 2'], 'us_publishing_obligation': 'HUNDREDPERCENTCONTROLLED', 'localized_titles': [ { 'language_code': 'fr', 'title': 'french title', 'version': 'french version' }, { 'language_code': 'es', 'title': 'spanish title', 'version': 'spanish version' } ], 'display_artists': [ { 'name': 'Producer Name', 'roles': ['MainArtist', 'Producer'], 'sequence_number': 1, 'localized_names': [ { 'language_code': 'fr', 'name': 'french producer', }, { 'language_code': 'es', 'name': 'spanish producer', } ] }, { 'name': 'Remixer Name', 'roles': ['ReMixer', 'ComposerLyricist'], 'sequence_number': 2, 'localized_names': [ { 'language_code': 'fr', 'name': 'french remixer', }, { 'language_code': 'es', 'name': 'spanish remixer', } ] }, ], }], 'deals': [ { 'release_references': ['R0'], 'deal_terms': [ { 'start_date': None, 'start_date_time': '2020-03-27T00:00:00', 'territories': ['AE'], 'commercial_model_types': [ 'AdvertisementSupportedModel' ], 'usage_type': [ 'NonInteractiveStream', 'OnDemandStream', ], 'takedown': None, }, { 'start_date': None, 'start_date_time': '2020-04-27T00:00:00', 'territories': ['BE'], 'commercial_model_types': [ 'AdvertisementSupportedModel' ], 'usage_type': [ 'NonInteractiveStream', 'OnDemandStream', ], 'takedown': None, 'price_type': '11', } ], }, { 'release_references': ['R1'], 'deal_terms': [ { 'start_date': None, 'start_date_time': '2020-03-27T00:00:00', 'territories': ['AE', 'BE'], 'commercial_model_types': [ 'AdvertisementSupportedModel' ], 'usage_type': [ 'NonInteractiveStream', 'OnDemandStream', ], 'takedown': None, 'price_type': '12', } ], }, { 'release_references': ['R2', 'R3'], 'deal_terms': [ { 'start_date': None, 'start_date_time': '2020-03-27T00:00:00', 'territories': ['AE', 'BE'], 'commercial_model_types': [ 'AdvertisementSupportedModel' ], 'usage_type': [ 'NonInteractiveStream', 'OnDemandStream', ], 'takedown': None, 'price_type': '13', } ], } ], 'bucket': 'ddex-bucket', 'key': 'key', 'message_id': '234524523', 'message_thread_id': 'G014523452345', 'party_id': 'PADPIDA2012041004F', 'update_indicator': 'OriginalMessage', 'project': { 'project_code': 'FAKE project_code', 'name': 'FAKE name', 'description': 'FAKE description', 'artist': None }, 'label_participants': [ { 'name': 'Cool Artist', 'artist_id': '2', 'label_participant_id': '1', 'label_participant_uuid': 'BBBBBB', }, { 'name': 'Digital Farm Animals', 'artist_id': '2', 'label_participant_id': '1', 'label_participant_uuid': 'AAA', }, { 'name': 'Cash Cash', 'artist_id': '2', 'label_participant_id': '1', 'label_participant_uuid': 'BBB', }, { 'name': 'Nelly', 'artist_id': '2', 'label_participant_id': '1', 'label_participant_uuid': 'CCC', } ] } @pytest.fixture def s3_release_corrections(): """S3 Release Correction JSON file.""" return { 'changes': [] } @pytest.fixture def invalid_display_artists(): """S3 json file.""" return { 'product': { 'display_artist_name': 'Cool Artist', 'upc': '231232563123', 'is_main_release': True, 'release_type': 'release', 'release_reference': 'R0', 'grid': 'A0145345234523453452', 'catalog_number': 'G0134523452345245', 'product_name': 'Test Artist', 'display_artists': [ { 'apple_id': None, 'sequence_number': 1, 'spotify_uri': None, 'roles': ['PetDrummer'], 'name': 'Digital Farm Animals', 'localized_names': [{ 'language_code': 'ru', 'name': 'Russian Farm Animals', }], }, { 'apple_id': None, 'roles': ['BestBassist'], 'name': 'Cash Cash', 'sequence_number': 2, 'spotify_uri': None, 'localized_names': [{ 'language_code': 'ru', 'name': 'Russian Cash Cash', }], }, ], 'genres': [ { 'genre': 'ELECTRONICA-00', 'subgenre': 'Alternative' }, { 'genre': 'Rock', 'subgenre': 'Ambient' } ], }, 'tracks': [{ 'release_reference': 'R1', 'sequence_number': 1, 'release_type': 'TrackRelease', 'volume': 1, 'isrc': 'QZCDB2000001', 'track_name': 'This track', 'resource_reference': 'A1', }], 'deals': None, 'bucket': 'ddex-bucket', 'key': 'key', 'message_id': '234524523', 'message_thread_id': 'G014523452345', 'party_id': 'PADPIDA2012041004F', 'update_indicator': 'OriginalMessage', 'project': None } @pytest.fixture def get_product_response(): """Response from productByUpc.""" return { 'data': { 'productByUpc': { 'vendorId': 34540, 'subaccountId': 55624, 'productId': 3141281, 'status': 'in_content', 'displayStatus': 'completed', 'format': 'Full Length', 'releaseDate': '2016-01-08', 'saleStartDate': '2016-01-08', 'productName': 'productName', 'productTerritoryCarveouts': [], 'cLine': 'Product Cline 2020', 'imprint': 'product imprint', 'genreId': 20, 'subgenreId': 621, 'deliveredVersion': 'product version', 'notForDistribution': 'N', 'project': { 'projectId': 4498666 }, 'tracks': [{ 'trackNumber': 1, 'isrc': 'QZCDB2000001', 'ownershipRights': 'original_owner', 'recordingCountryId': 1, 'originalRightsHolderCountryId': 3, 'publishing': { 'publisherNames': ['Publisher 1', 'Publisher 2'], 'usPublishingObligation': 'CONTROLLED_BY_YOUR_LABEL', }, 'localizations': [ { 'trackName': 'spanish title', 'version': 'spanish version', 'iTunesLanguage': {'id': 38}, 'artists': [ { 'artistName': 'spanish producer', 'artistType': 'producer', }, { 'artistName': 'spanish producer', 'artistType': 'performer', }, { 'artistName': 'spanish remixer', 'artistType': 'remixer', }, ] }, { 'trackName': 'french title', 'version': 'french version', 'iTunesLanguage': {'id': 15}, 'artists': [ { 'artistName': 'french producer', 'artistType': 'producer', }, { 'artistName': 'french producer', 'artistType': 'performer', }, { 'artistName': 'french remixer', 'artistType': 'remixer', }, ] } ] }], 'labelParticipations': [ { 'role': 'featuring', 'labelParticipant': { 'uuid': 'CCC', 'name': 'Nelly' } }, { 'role': 'performer', 'labelParticipant': { 'uuid': 'BBB', 'name': 'Cash Cash' } }, { 'role': 'producer', 'labelParticipant': { 'uuid': 'AAA', 'name': 'Digital Farm Animals' } }, { 'role': 'performer', 'labelParticipant': { 'uuid': 'AAA', 'name': 'Digital Farm Animals' } } ], 'productLocalizations': [ { 'productName': 'Russian Title', 'deliveredVersion': 'Remaster', 'iTunesLanguage': {'id': 35}, 'artists': [ { 'artistName': 'Russian Farm Animals', 'artistType': 'primary_artist', }, { 'artistName': 'Russian Farm Animals', 'artistType': 'producer', }, { 'artistName': 'Russian Cash Cash', 'artistType': 'primary_artist', }, { 'artistName': 'Russian Nelly', 'artistType': 'featuring', }, ] }, { 'productName': 'French Title', 'deliveredVersion': 'Original', 'iTunesLanguage': {'id': 15}, 'artists': [] } ], } } } @pytest.fixture def get_product_no_result(): """No product found from productByUpc.""" return { 'data': { 'productByUpc': None } } @pytest.fixture def update_product_success(): """Update product response data.""" return { 'data': { 'updateProduct': { 'productName': 'Star Wars Episode Vi', 'saleStartDate': '2016-01-08', 'status': 'in_content', 'displayStatus': 'completed', 'productId': 3141281, 'cLine': 'Product Cline 2020', } } } @pytest.fixture def create_product_success(): """Create product response data.""" return { 'data': { 'createProduct': { 'productName': 'myproduct', 'saleStartDate': None, 'status': 'label_processing', 'displayStatus': 'in_progress', 'productId': 3263077, 'productTypeId': 1, 'cLine': 'Product Cline 2020', } } }