"""Shared test mocks.""" import pytest @pytest.fixture def mock_event(): """Mock event.""" return { 'duration': 4001, 'filename': 'abc.flac', 'asset_final_id': 1 } def generate_product_response( brand_data=None, subaccount_id=0 ): """Generate product test data.""" data = { 'productId': 2427104, 'distributionFormatId': 1, 'label': { '__typename': 'Vendor' if subaccount_id == 0 else 'Subaccount', 'name': 'Universal Music AS', 'id': { 'subaccountId': 0, 'vendorId': 29399 }, 'assignedTo': {'id': 1}, 'assignedReviewer': {'id': 2} } } if subaccount_id != 0: data['label'].update( vendor={ 'id': { 'vendorId': 73405 }, 'name': 'ABS-CBN Film Productions, Inc.', 'owner': 'odd', 'companyBrand': brand_data, 'assignedTo': {'id': 1}, 'assignedReviewer': {'id': 2} } ) else: data['label'].update(owner='odd', companyBrand=brand_data) return {'product': data} @pytest.fixture def mock_product(): """Mock product.""" return {'data': generate_product_response()} @pytest.fixture def mock_product_empty(): """Mock empty product.""" return {'data': {'product': None}} @pytest.fixture def mock_product_w_brand(): """Mock product with brand data.""" return {'data': generate_product_response(brand_data={ 'uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', 'name': 'theorchard' })} @pytest.fixture def mock_product_subaccount(): """Mock product for a subaccount.""" return { 'data': generate_product_response(subaccount_id=100) } @pytest.fixture def mock_asset_response(): """Mock asset final response.""" return { 'data': { 'assetsV2AssetFinal': { 'upload': { 'filename': '75bb8ba9_6566_40da_8da1_c50c786fcb95', 'assetType': 'FLAC', 'parent': { '__typename': 'Track', 'productId': '4310636' } } } } } @pytest.fixture def mock_ows_assets_response(): """Mock ows-assets response.""" return { 'filename': '75bb8ba9_6566_40da_8da1_c50c786fcb95', 'product_id': 4310636 } @pytest.fixture def mock_asset_orphaned_response(): """Mock asset final response.""" return { 'data': { 'assetsV2AssetFinal': { 'upload': { 'filename': '75bb8ba9_6566_40da_8da1_c50c786fcb95', 'assetType': 'FLAC', 'parent': None } } } } @pytest.fixture def mock_asset_no_asset_error_response(): """Mock asset final not found error response.""" return { 'errors': [ { 'message': 'Given value is not an object', 'extensions': { 'exception': { 'path': [ 'assetsV2AssetFinal', 'upload' ] } } } ] } @pytest.fixture def mock_graphql_error_response(): """Mock graphql error response.""" return { 'errors': [ { 'message': 'foo', 'extensions': { 'exception': { 'path': ['bar'] } } } ] }