"""Conftest.""" import os from bulk_metadata_ingester_common.models.release_model import ( ProductFieldsModel, TrackFieldsModel ) import pytest KEY = os.environ.get('KEY', 'parsed_csv/ALL_DDEX_TO_CSV_2023-02-10_2023-03-01.json') # noqa BUCKET = os.environ.get('BUCKET', 'prod-orcd-fluve-drop') ITEM_INDEX = '7892920191004_____1362655' DATA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data',) @pytest.fixture def test_release_json(json_file='single_release.json'): """Parse given XML file using xmltodict.parse().""" with open(os.path.join(DATA_DIR, json_file)) as fd: return fd.read() @pytest.fixture def error_response(): """Test data for when validation errors are present.""" return { 'validations': { 'product_basics': { 'valid': False, 'errors': { 'c_line': { 'validator': 'required', 'validator_value': True, 'message': 'c_line is a required property' }, 'genre_id': { 'validator': 'required', 'validator_value': True, 'message': 'genre_id is a required property' }, 'imprint': { 'validator': 'required', 'validator_value': True, 'message': 'imprint is a required property' }, 'subgenre_id': { 'validator': 'required', 'validator_value': True, 'message': 'subgenre_id is a required property' }, 'primary_artist': { 'validator': 'required', 'validator_value': True, 'message': 'primary_artist is a required property' } } }, 'scheduling_and_pricing': { 'valid': True, 'errors': {} }, 'artwork': { 'valid': True, 'errors': [] }, 'tracks': { 'total_tracks': 5, 'valid_tracks': 0, 'errors': [ { 'isrc': { 'validator': 'required', 'validator_value': True, 'message': 'Field `isrc` is required' }, 'p_info': { 'validator': 'required', 'validator_value': True, 'message': 'Field `p_info` is required' }, 'ownership_rights': { 'validator': 'required', 'validator_value': True, 'message': 'Field `ownership_rights` is required' }, 'performer': { 'validator': 'required', 'validator_value': True, 'message': 'Field `performer` is required' }, 'writers': { 'validator': 'required', 'validator_value': True, 'message': 'Field `writers` is required' }, 'tuid': 32203759 }, { 'meta_language_code': { 'validator': 'required', 'validator_value': True, 'message': 'Field `meta_language_code` is required' }, 'isrc': { 'validator': 'required', 'validator_value': True, 'message': 'Field `isrc` is required' }, 'p_info': { 'validator': 'required', 'validator_value': True, 'message': 'Field `p_info` is required' }, 'explicit': { 'validator': 'required', 'validator_value': True, 'message': 'Field `explicit` is required' }, 'ownership_rights': { 'validator': 'required', 'validator_value': True, 'message': 'Field `ownership_rights` is required' }, 'performer': { 'validator': 'required', 'validator_value': True, 'message': 'Field `performer` is required' }, 'writers': { 'validator': 'required', 'validator_value': True, 'message': 'Field `writers` is required' }, 'audio_file': { 'validator': 'required', 'validator_value': True, 'message': 'Field `audio_file` is required' }, 'tuid': 32281675 }, { 'meta_language_code': { 'validator': 'required', 'validator_value': True, 'message': 'Field `meta_language_code` is required' }, 'isrc': { 'validator': 'required', 'validator_value': True, 'message': 'Field `isrc` is required' }, 'p_info': { 'validator': 'required', 'validator_value': True, 'message': 'Field `p_info` is required' }, 'explicit': { 'validator': 'required', 'validator_value': True, 'message': 'Field `explicit` is required' }, 'ownership_rights': { 'validator': 'required', 'validator_value': True, 'message': 'Field `ownership_rights` is required' }, 'performer': { 'validator': 'required', 'validator_value': True, 'message': 'Field `performer` is required' }, 'writers': { 'validator': 'required', 'validator_value': True, 'message': 'Field `writers` is required' }, 'audio_file': { 'validator': 'required', 'validator_value': True, 'message': 'Field `audio_file` is required' }, 'tuid': 32281676 }, { 'meta_language_code': { 'validator': 'required', 'validator_value': True, 'message': 'Field `meta_language_code` is required' }, 'isrc': { 'validator': 'required', 'validator_value': True, 'message': 'Field `isrc` is required' }, 'p_info': { 'validator': 'required', 'validator_value': True, 'message': 'Field `p_info` is required' }, 'explicit': { 'validator': 'required', 'validator_value': True, 'message': 'Field `explicit` is required' }, 'ownership_rights': { 'validator': 'required', 'validator_value': True, 'message': 'Field `ownership_rights` is required' }, 'performer': { 'validator': 'required', 'validator_value': True, 'message': 'Field `performer` is required' }, 'writers': { 'validator': 'required', 'validator_value': True, 'message': 'Field `writers` is required' }, 'audio_file': { 'validator': 'required', 'validator_value': True, 'message': 'Field `audio_file` is required' }, 'tuid': 32281677 }, { 'meta_language_code': { 'validator': 'required', 'validator_value': True, 'message': 'Field `meta_language_code` is required' }, 'isrc': { 'validator': 'required', 'validator_value': True, 'message': 'Field `isrc` is required' }, 'p_info': { 'validator': 'required', 'validator_value': True, 'message': 'Field `p_info` is required' }, 'explicit': { 'validator': 'required', 'validator_value': True, 'message': 'Field `explicit` is required' }, 'ownership_rights': { 'validator': 'required', 'validator_value': True, 'message': 'Field `ownership_rights` is required' }, 'performer': { 'validator': 'required', 'validator_value': True, 'message': 'Field `performer` is required' }, 'writers': { 'validator': 'required', 'validator_value': True, 'message': 'Field `writers` is required' }, 'audio_file': { 'validator': 'required', 'validator_value': True, 'message': 'Field `audio_file` is required' }, 'tuid': 32281678 } ], 'valid': False }, 'publishing_obligation': { 'total_tracks': 5, 'valid_tracks': 1, 'errors': [ { 'us_publishing_obligation': { 'validator': 'required', 'validator_value': True, 'message': 'Field `us_publishing_obligation` is required' # noqa }, 'tuid': 32281675 }, { 'us_publishing_obligation': { 'validator': 'required', 'validator_value': True, 'message': 'Field `us_publishing_obligation` is required' # noqa }, 'tuid': 32281676 }, { 'us_publishing_obligation': { 'validator': 'required', 'validator_value': True, 'message': 'Field `us_publishing_obligation` is required' # noqa }, 'tuid': 32281677 }, { 'us_publishing_obligation': { 'validator': 'required', 'validator_value': True, 'message': 'Field `us_publishing_obligation` is required' # noqa }, 'tuid': 32281678 } ], 'valid': False } } } @pytest.fixture def test_model(): """Named Tuple model representing a release.""" return ProductFieldsModel( orch_label_id=None, subaccount_name=None, project_code=7892920191004, project_id=None, project_artist='Pedro Libe, Jorge & Mateus', project_artist_id=None, artist_country=None, artist_country_id=0, product_code=1362655, release_name='Nem Balancei', release_meta_language='pt', release_meta_language_id=0, artist_url=None, digital_upc=7892920191004, manufacturers_upc='GGL_UR_ID:1362655', c_info='2021 Conscient Music', p_line='2021 Conscient Music', release_version='Ao Vivo', original_release_date='2021-12-17', sale_start_date='2023-01-06', itunes_preorder=None, itunes_preorder_date=None, preorder_preview=None, album_pricing='Mid - Single', format_type='Album', imprint='Conscient Music', genre='SERTANEJO: SERTANEJO UNIVERSITÁRIO', subgenre=None, primary_artists='Pedro Libe|Jorge & Mateus', featurings=None, remixers=None, producers='Seu Jonas', composers='Alex Alves|Robson Lima|Lucas Papada', orchestras=None, ensembles=None, conductors=None, only_include='Exclude Only', territory_iso_codes=None, tracks={'BXOXJ2100016_1_1': TrackFieldsModel( file_name='7892920191004_1_1.wav', # noqa volume=1, track_no=1, track_name='Nem Balancei', track_audio_language=None, track_audio_language_id=0, track_version='Ao Vivo', tuid=0, artist='Pedro Libe|Jorge & Mateus', featurings=None, remixers=None, producers='Seu Jonas', composers='Alex Alves|Robson Lima|Lucas Papada', orchestras=None, ensembles=None, conductors=None, track_pricing='Mid', explicit='N', isrc='BXOXJ2100016', third_party_publisher=None, track_p_info='2021 Conscient Music', ownership_for_this_sound_recording=None, country_of_recording=None, country_of_recording_id=0, nationality_of_original_copyright_owner=None, nationality_of_original_copyright_owner_id=0, track_lyrics=None, songwriters='Alex Alves|Robson Lima|Lucas Papada', publishers=None, performer_1_type='Primary Performer', performer_1_legal_name='Pedro Libe', performer_1_main_role='LeadVocals', performer_2_type='Primary Performer', performer_2_legal_name='Jorge & Mateus', performer_2_main_role='LeadVocals', performer_3_type=None, performer_3_legal_name=None, performer_3_main_role=None, performer_4_type=None, performer_4_legal_name=None, performer_4_main_role=None, performer_5_type=None, performer_5_legal_name=None, performer_5_main_role=None )}, subaccount_id=None, participants=[], genre_id=0, subgenre_id=0)