"""conftest.py. Test fixtures and configurations. """ import os import application import pytest from product_configuration.connectors.sentry import sentry_client @pytest.fixture def distribution_format_media_types(): """Return distribution_format_media types.""" return [ {'distribution_format_media_id': 1, 'name': 'Music Video'}, {'distribution_format_media_id': 2, 'name': '7\" Vinyl'}, {'distribution_format_media_id': 3, 'name': '12\" Vinyl'}, {'distribution_format_media_id': 4, 'name': 'Cassette'}] @pytest.fixture def distribution_format_media_formats(): """Return distribution_format_media formats.""" return [ {'distribution_format_media_format_id': 1, 'name': 'Single'}, {'distribution_format_media_format_id': 2, 'name': 'EP'}, {'distribution_format_media_format_id': 3, 'name': 'LP'}] @pytest.fixture def distribution_formats(): """Return distribution_format with associated media types and formats.""" return [ { 'distribution_format_id': 1, 'distribution_format_media_id': 2, 'distribution_format_media_format_id': 1, 'distribution_format_media_name': '7" Vinyl', 'distribution_format_media_format_name': 'Single', 'context_type': 'physical', 'display_flag': 'Y' }, { 'distribution_format_id': 2, 'distribution_format_media_id': 2, 'distribution_format_media_format_id': 2, 'distribution_format_media_name': '7" Vinyl', 'distribution_format_media_format_name': 'EP', 'context_type': 'physical', 'display_flag': 'Y' }, { 'distribution_format_id': 3, 'distribution_format_media_id': 1, 'distribution_format_media_format_id': None, 'distribution_format_media_name': 'Music Video', 'distribution_format_media_format_name': None, 'context_type': 'digital', 'display_flag': 'Y' } ] @pytest.fixture def proper_supply_chain_configurations(): """Return mock supply chain data for proper feed.""" return [ {'distribution_format_id': '1', 'proper_format': '7', 'proper_formid': 'VNL7'}, # noqa {'distribution_format_id': '2', 'proper_format': '10', 'proper_formid': 'VN10'}, # noqa {'distribution_format_id': '3', 'proper_format': '12', 'proper_formid': 'LP'}, # noqa {'distribution_format_id': '4', 'proper_format': 'C100', 'proper_formid': 'CD'}, # noqa {'distribution_format_id': '5', 'proper_format': 'USB', 'proper_formid': None} # noqa ] @pytest.fixture def supply_chain_configuration_schema(): """Return mock supply chain configuration schema.""" return [{ 'supply_chain_id': 1, 'name': 'GRAS', 'configuration_schema': { '$schema': 'http://json-schema.org/draft-03/schema', 'description': 'Supply chain configuration model for GRAS', 'properties': { 'config_key': { 'type': 'string', 'description': 'The `config_key` identifier.' }, 'gras_name': { 'type': 'string', 'description': 'The `gras_name` identifier.' } }, 'type': 'object' } }] @pytest.fixture def mock_tsv_path(): """Generate mock tsv file path.""" path = 'proper_supply_chain_mock.tsv' return os.path.join(os.getcwd(), 'tests/testutils/test_data', path) @pytest.fixture def client(): """Return flask test client.""" return application.app.test_client() @pytest.fixture def supply_chain_default_value(): """Return supply chain defaults values with associated stores.""" return [ { 'supply_chain_default_id': 1, 'is_returnable': 1, 'return_disposition': 'Keep', 'date_added': '2017-12-29 03:52', 'date_updated': '2017-12-29 03:52', 'customer_master_master_id': 738, 'distribution_format_media_id': 5 }, { 'supply_chain_default_id': 2, 'is_returnable': 1, 'return_disposition': 'Scrap', 'date_added': '2017-12-29 03:52', 'date_updated': '2017-12-29 03:52', 'customer_master_master_id': 738, 'distribution_format_media_id': 1 }, { 'supply_chain_default_id': 3, 'is_returnable': 1, 'return_disposition': 'Scrap', 'date_added': '2017-12-29 03:52', 'date_updated': '2017-12-29 03:52', 'customer_master_master_id': 738, 'distribution_format_media_id': 2 }, { 'supply_chain_default_id': 4, 'is_returnable': 1, 'return_disposition': 'Scrap', 'date_added': '2017-12-29 03:52', 'date_updated': '2017-12-29 03:52', 'customer_master_master_id': 738, 'distribution_format_media_id': 3 }, { 'supply_chain_default_id': 5, 'is_returnable': 1, 'return_disposition': 'Keep', 'date_added': '2017-12-29 03:52', 'date_updated': '2017-12-29 03:52', 'customer_master_master_id': 739, 'distribution_format_media_id': 5 } ] @pytest.fixture def supply_chain_dafault_types(): """Return supply_chain_default_types types.""" return [ { '738': [ { 'distribution_format_media_id': 5, 'is_returnable': 1, 'return_disposition': 'Keep' }, { 'distribution_format_media_id': 1, 'is_returnable': 1, 'return_disposition': 'Scrap' }, { 'distribution_format_media_id': 2, 'is_returnable': 1, 'return_disposition': 'Scrap' }, { 'distribution_format_media_id': 3, 'is_returnable': 1, 'return_disposition': 'Scrap' } ], '739': [ { 'distribution_format_media_id': 5, 'is_returnable': 1, 'return_disposition': 'Keep' } ] } ] @pytest.fixture def supply_chain_dafault_types_logic(): """Return supply_chain_default_types types.""" return { 738: [ { 'distribution_format_media_id': 5, 'is_returnable': 1, 'return_disposition': 'Keep' }, { 'distribution_format_media_id': 1, 'is_returnable': 1, 'return_disposition': 'Scrap' }, { 'distribution_format_media_id': 2, 'is_returnable': 1, 'return_disposition': 'Scrap' }, { 'distribution_format_media_id': 3, 'is_returnable': 1, 'return_disposition': 'Scrap' } ], 739: [ { 'distribution_format_media_id': 5, 'is_returnable': 1, 'return_disposition': 'Keep' } ] } @pytest.fixture def supply_chain_dafault_types_handle(): """Return supply_chain_default_types types.""" return { '738': [ { 'distribution_format_media_id': 5, 'is_returnable': 1, 'return_disposition': 'Keep' }, { 'distribution_format_media_id': 1, 'is_returnable': 1, 'return_disposition': 'Scrap' }, { 'distribution_format_media_id': 2, 'is_returnable': 1, 'return_disposition': 'Scrap' }, { 'distribution_format_media_id': 3, 'is_returnable': 1, 'return_disposition': 'Scrap' } ], '739': [ { 'distribution_format_media_id': 5, 'is_returnable': 1, 'return_disposition': 'Keep' } ] } @pytest.fixture def distribution_format_value(): """Return distribution_format with associated media types and formats.""" return [ { 'distribution_format_id': 2, 'distribution_format_media_id': 2, 'distribution_format_media_format_id': 2, 'context_type': 'physical', 'display_flag': 'Y' } ] @pytest.fixture def app_context(): """App context fixture.""" with application.app.app_context(): yield @pytest.fixture def sentry_sdk_capture_exception_mock(mocker): """Sentry SDK capture_exception mock.""" return mocker.patch.object(sentry_client, 'capture_exception')