"""Fixtures.""" import datetime import pytest import application from contracts import api, config, response from contracts.constants import header from tests.utils import db_operations config.OWS_ACCOUNT_URL = 'http://theorchard.testurl' @pytest.fixture def db_fixture(request): """DB fixture.""" db_operations.create_tables() db_operations.seed_service_types_table() db_operations.seed_vendor_contract_table() db_operations.seed_vendor_advance_table() db_operations.seed_booked_vendor_contract_table() db_operations.seed_product_split_table() db_operations.seed_track_split_table() db_operations.seed_product_territory_split_table() db_operations.seed_country_table() db_operations.seed_currency_table() db_operations.seed_subaccount_royalty_collection_table() db_operations.seed_subaccount_royalty_collection_territories_table() @pytest.fixture def client(): """Return flask test client. Returns: flask client: flask test client. """ return application.app.test_client() @pytest.fixture def valid_get_header(): """Return valid request headers. Returns: dict: header dict. """ data = {header.GRASS_ACCOUNT_TYPE: 'vendor', header.GRASS_ACCOUNT_ID: '25257'} return data @pytest.fixture def create_not_found_response(): """Fixture for create_not_found_response.""" return response.create_not_found_response() @pytest.fixture def fixture_active_vendor_contract(): """Fixture for active vendor contract.""" return response.Response({'vendor_id': 1, 'vendor_contract_id': 1}) @pytest.fixture def fixture_vendor_contract(): """Fixture for vendor contract.""" return { 'vendor_id': 1, 'id': 1, 'physical_track_publishing_type': 'both', 'oms_type': 'both', 'ringtone_publishing_type': 'both', 'service_type_id': None, 'currency_id': 1, 'start_date': datetime.datetime(2022, 7, 1, 0, 0), 'end_date': datetime.datetime(2029, 7, 1, 0, 0), 'payment_interval': 'month', } @pytest.fixture def fixture_vendor_contract_response(): """Fixture for vendor contract response.""" return response.Response( { 'vendor_id': 1, 'id': 1, 'physical_track_publishing_type': 'both', 'oms_type': 'both', 'ringtone_publishing_type': 'both', 'start_date': '2022-07-01T00:00:00', 'end_date': '2029-07-01T00:00:00', 'payment_interval': 'month', } ) @pytest.fixture def fixture_service_types(): """Fixture for service types.""" return response.Response( { 'items': [ {'id': 2, 'service_type': 'Artist Distribution'}, {'id': 1, 'service_type': 'Artist Services'}, {'id': 3, 'service_type': 'JV'}, ] } ) @pytest.fixture def fixture_contract_service_type_response(): """Fixture for vendor contract service type response.""" return response.Response({'id': 1, 'service_type': 'Artist Services'}) @pytest.fixture def fixture_product_split_response(): """Fixture for product split response.""" return response.Response({'upc': '3513135135', 'product_split': 0.8}) @pytest.fixture def fixture_track_split_response(): """Fixture for track split response.""" return response.Response({'isrc': 'ES20I1310348', 'track_split': 0.8}) @pytest.fixture def fixture_track_split_post_request_parameters(): """Fixture for track split post request parameters.""" return { 'isrc': 'ES20I1310346', 'track_unique_id': 225635, 'track_split': 0.3, 'oa_user_id': 562, 'vend_contract_id': 5623, } @pytest.fixture def fixture_track_split_put_request_parameters(): """Fixture for track split put request parameters.""" return { 'isrc': 'ES20I1310346', 'track_unique_id': 225635, 'track_split': 0.56, 'old_track_split': 0.3, 'oa_user_id': 562, 'vend_contract_id': 5623, } @pytest.fixture def fixture_product_split_post_request_parameters(): """Fixture for product split post request parameters.""" return { 'upc': '889466030369', 'product_split_rate': 0.22, 'release_name': 'test_product', 'oa_user_id': 562, 'vend_contract_id': 5623, } @pytest.fixture def fixture_product_split_put_request_parameters(): """Fixture for product split put request parameters.""" return { 'upc': '889466030369', 'product_split_rate': 0.22, 'release_name': 'test_product', 'old_product_split': 0.3, 'oa_user_id': 562, 'vend_contract_id': 5623, } @pytest.fixture def fixture_product_territory_split_response(): """Fixture for product territory split get response.""" return response.Response( { 'items': [ { 'upc': db_operations.product_territory_split_data[0]['product_id'], 'vendor_id': db_operations.product_territory_split_data[0][ 'vendor_id' ], 'product_territory_split': db_operations.product_territory_split_data[ 0 ]['split_rate'], 'country_details': { 'id': 2, 'name': 'Canada', 'country_code': 'CA', 'abbrivation': 'CA', 'continent': 'North America', 'latitude': 56.130366, 'longitude': -106.346771, 'iso3166a3': 'CAN', 'continent_id': 5, }, } ], 'pagination': { 'type': 'standard', 'offset': 1, 'limit': 2, 'total_records': 2, }, } ) @pytest.fixture def fixture_product_territory_split_post_request_parameters(): """Fixture for product territory split post request parameters.""" return { 'oa_user_id': 562, 'vend_contract_id': 66500, 'country_id': 4, 'split_rate': 0.69, 'upc': 648620331038, 'country_name': 'India', } @pytest.fixture def fixture_product_territory_split_put_request_parameters(): """Fixture for product territory split put request parameters.""" return { 'oa_user_id': 562, 'vend_contract_id': 66500, 'country_id': 2, 'split_rate': 0.56, 'upc': 191018337490, 'old_split_rate': 0.56, 'country_name': 'India', } @pytest.fixture def fixture_vendor_currency_response(): """Fixture for vendor currency.""" return response.Response( {'id': 1, 'vendor_id': 1, 'currency_id': 1, 'code': 'USD', 'symbol': 'USD'} ) @pytest.fixture def app_context(): """Create an api test app fixture.""" with api.app.app_context(): yield