import json from unittest.mock import patch from masters_registry import config from masters_registry.constant import error from tests.helpers import patches def test_post_upcs_isrc_max_value( client, valid_headers, ows_features_mock, feature_engine): """Test passing more upcs than maximum allowed number """ upcs = {'upcs': ['upc' for _ in range(0, config.MAX_UPCS_COUNT + 10)]} valid_headers['Content-Type'] = 'application/json' res = client.post( '/ownership/upcs', data=json.dumps(upcs), headers=valid_headers) assert json.loads(res.data.decode()) == { 'code': error.MAX_UPCS_EXCEEDED_CODE, 'message': error.MAX_UPCS_EXCEEDED_MESSAGE} assert res.status_code == 400 def test_post_upcs_isrc_empty( client, valid_headers, ows_features_mock, feature_engine): """Test passing an empty list """ upcs = {'upcs': []} valid_headers['Content-Type'] = 'application/json' res = client.post( '/ownership/upcs', data=json.dumps(upcs), headers=valid_headers) assert json.loads(res.data.decode()) == { 'code': error.MISSING_UPCS_CODE, 'message': error.MISSING_UPCS_MESSAGE} assert res.status_code == 400 @patch( 'masters_registry.models.ows_carveouts.get_territory_carveout_for_upc', new=patches.ows_carveouts_get_territory_carveout_for_upc) @patch( 'masters_registry.models.ows_territories.convert_territories', new=patches.ows_territories_get_territories_patch) @patch( 'masters_registry.models.ows_territories.get_complement_territories', new=patches.ownership_get_complement_patch) @patch('masters_registry.models.ownership.get_ownership', new=patches.ownership_get_ownership_not_found_patch) @patch('masters_registry.logic.masters_registry.bulk_import_upcs', new=patches.logic_masters_registry_bulk_import_upcs) def test_post_upcs( client, valid_headers, ows_features_mock, feature_engine, get_isrcs_from_db, bulk_status_db_fixture): """Test post correct list """ patches.mock_session_scope(get_isrcs_from_db) upcs = {'upcs': ['123456789120']} valid_headers['Content-Type'] = 'application/json' res = client.post( '/ownership/upcs', data=json.dumps(upcs), headers=valid_headers) assert res.status_code == 200 res_json = json.loads(res.data.decode()) assert res_json['correlation_id'] == valid_headers['Correlation-Id'] @patch( 'masters_registry.models.ows_carveouts.get_territory_carveout_for_upc', new=patches.ows_carveouts_get_territory_carveout_for_upc) @patch( 'masters_registry.models.ows_territories.convert_territories', new=patches.ows_territories_get_territories_patch) @patch( 'masters_registry.models.ows_territories.get_complement_territories', new=patches.ownership_get_complement_patch) @patch('masters_registry.models.ownership.get_ownership', new=patches.ownership_get_ownership_not_found_patch) def test_bulk_import_upc_not_music_type( client, valid_headers, ows_features_mock, feature_engine, get_non_music_upc_isrcs_from_db, bulk_status_db_fixture): """Expect error because given UPC isn't of music type.""" patches.mock_session_scope(get_non_music_upc_isrcs_from_db) upcs = {'upcs': ['123456789120']} valid_headers['Content-Type'] = 'application/json' res = client.post( '/ownership/upcs', data=json.dumps(upcs), headers=valid_headers) assert res.status_code == 400 res_json = json.loads(res.data.decode()) expected_error = error.INVALID_UPC_TYPE assert res_json[0]['error_message'] == expected_error