from collections import OrderedDict import datetime from oto import response import pytest from masters_registry.constant import bulk_tasks_const from masters_registry.constant import error from masters_registry.models import bulk_tasks def get_bulk_import_isrc_report_header(): header = ','.join( bulk_tasks_const.UPC_IMPORT_ISRC_REPORT_HEADER) return header @pytest.fixture def task_update_db(): return response.Response( status=200, message=bulk_tasks.TaskStatus( id=12, correlation_id='1476454800174', user_id=1294, create_datetime=datetime.datetime(2000, 12, 12), status=bulk_tasks_const.DONE_STATUS, type=bulk_tasks_const.BULK_IMPORT, count=5, result=[ { 'success_count': 2, 'error_count': 0, 'status_report': [ { 'vendor_id': '1234', 'isrc': 'ART720610027', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': None }, { 'vendor_id': '1234', 'isrc': 'ART720610028', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': ['IT', 'AZ'] } ], 'upc': '889845515661' }, { 'success_count': 3, 'error_count': 0, 'status_report': [ { 'vendor_id': '1234', 'isrc': 'USESK0618104', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': ['RU', 'UA'] }, { 'vendor_id': '1234', 'isrc': 'USESK0618108', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': ['CA', 'US'] }, { 'vendor_id': '1234', 'isrc': 'USESK0618110', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': None } ], 'upc': '888002153500' }, { 'success_count': 2, 'error_count': 0, 'status_report': [ { 'vendor_id': '1234', 'isrc': 'JPD731600109', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': ['KZ', 'UA'] }, { 'vendor_id': '1234', 'isrc': 'JPD731600110', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': None } ], 'upc': '190374478403' }, { 'success_count': 3, 'error_count': 0, 'status_report': [ { 'vendor_id': '1234', 'isrc': 'US4B90467301', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': None }, { 'vendor_id': '1234', 'isrc': 'US4B90467302', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': None }, { 'vendor_id': '1234', 'isrc': 'US4B90467303', 'tuid': '987', 'success': True, 'error_message': '', 'locked_territories': None } ], 'upc': '038153067328' } ] ) ) @pytest.fixture def csv_valid_import_upc(): csv_header = ','.join(bulk_tasks_const.UPC_IMPORT_UPC_REPORT_HEADER) csv_body = ( '\n' '1234,"=""889845515661""",Success,2,0\n' '1234,"=""888002153500""",Success,3,0\n' '1234,"=""190374478403""",Success,2,0\n' '1234,"=""038153067328""",Success,3,0\n' ) return csv_header + csv_body @pytest.fixture def csv_valid_import_isrc(): csv_header = get_bulk_import_isrc_report_header() csv_body = ( '\n' '1234,"=""889845515661""",Success,N/A,987,ART720610027,Success,\n' '1234,"=""889845515661""",Success,N/A,987,ART720610028,' 'Warning,"Locked Territories: IT,AZ"\n' '1234,"=""888002153500""",Success,N/A,987,USESK0618104,' 'Warning,"Locked Territories: RU,UA"\n' '1234,"=""888002153500""",Success,N/A,987,USESK0618108,' 'Warning,"Locked Territories: CA,US"\n' '1234,"=""888002153500""",Success,N/A,987,USESK0618110,Success,\n' '1234,"=""190374478403""",Success,N/A,987,JPD731600109,' 'Warning,"Locked Territories: KZ,UA"\n' '1234,"=""190374478403""",Success,N/A,987,JPD731600110,Success,\n' '1234,"=""038153067328""",Success,N/A,987,US4B90467301,Success,\n' '1234,"=""038153067328""",Success,N/A,987,US4B90467302,Success,\n' '1234,"=""038153067328""",Success,N/A,987,US4B90467303,Success,\n' ) return csv_header + csv_body @pytest.fixture def task_lock_db(): return response.Response( status=200, message=bulk_tasks.TaskStatus( correlation_id='1476455009601', user_id=1294, create_datetime=datetime.datetime(2000, 12, 12), status=bulk_tasks_const.DONE_STATUS, type=bulk_tasks_const.BULK_LOCK, count=5, result={ 'successful_isrcs': [ 'CAM461000866', 'PLE951300137', 'USUSS1011559', 'USFBR1312111', 'NLG620578581' ], 'failed_isrcs': [], 'reason': 'test bulk lock reason', 'territories': [ 'AD', 'AE' ] } ) ) @pytest.fixture def csv_valid_lock(): csv_header = ','.join(bulk_tasks_const.BULK_LOCK_REPORT_HEADER_OLD) csv_body = ( '\n' 'CAM461000866,"AD, AE",test bulk lock reason,Success,N/A\n' 'PLE951300137,"AD, AE",test bulk lock reason,Success,N/A\n' 'USUSS1011559,"AD, AE",test bulk lock reason,Success,N/A\n' 'USFBR1312111,"AD, AE",test bulk lock reason,Success,N/A\n' 'NLG620578581,"AD, AE",test bulk lock reason,Success,N/A\n' ) return csv_header + csv_body def upc_json_for_done_status(): return { 'success_count': 2, 'error_count': 0 } def upc_json_for_partial_fail_status(): return { 'success_count': 1, 'error_count': 1 } def upc_json_for_failed_status(): return { 'success_count': 0, 'error_count': 2 } def task_upc_carved_out_of_yt(): return response.Response( status=200, message=bulk_tasks.TaskStatus( correlation_id='1476454800174', user_id=1294, create_datetime=datetime.datetime(2000, 12, 12), status=bulk_tasks_const.DONE_STATUS, type=bulk_tasks_const.BULK_IMPORT, count=5, result=[ { 'success_count': 0, 'error_count': 2, 'status_report': [ { 'vendor_id': '123', 'isrc': 'ART720610027', 'tuid': '987', 'success': False, 'error_message': error.UPC_YOUTUBE_CARVED_OUT, 'locked_territories': None }, { 'vendor_id': '123', 'isrc': 'ART720610028', 'tuid': '987', 'success': False, 'error_message': error.UPC_YOUTUBE_CARVED_OUT, 'locked_territories': None } ], 'upc': '889845515661' } ] ) ) @pytest.fixture def csv_valid_with_carved_out_upc(): csv_header = get_bulk_import_isrc_report_header() csv_body = ( '\n' '123,"=""889845515661""",Success,N/A,987,' + 'ART720610027,Warning,UPC is carved out from YouTube\n' + '123,"=""889845515661""",Success,N/A,987,' + 'ART720610028,Warning,UPC is carved out from YouTube\n' ) return csv_header + csv_body @pytest.fixture def task_na_upc_failed_reason(): return { 'success_count': 0, 'error_count': 2, 'status_report': [ { 'isrc': 'ART720610027', 'success': False, 'error_message': 'Some error', 'locked_territories': None }, { 'isrc': 'ART720610028', 'success': False, 'error_message': 'Some error', 'locked_territories': None } ] } @pytest.fixture def task_carved_out_upc_failed_reason(): return { 'success_count': 0, 'error_count': 2, 'status_report': [ { 'isrc': 'ART720610027', 'success': False, 'error_message': error.UPC_YOUTUBE_CARVED_OUT, 'locked_territories': None }, { 'isrc': 'ART720610028', 'success': False, 'error_message': error.UPC_YOUTUBE_CARVED_OUT, 'locked_territories': ['IT', 'AZ'] } ], 'upc': '889845515661' } @pytest.fixture def task_isrc_doesnt_exit_in_registry(): return { 'upc': '100075236325', 'status_report': [ { 'success': False, 'error_message': error.DELETED_ISRC_UPDATE_ERROR, 'isrc': 'USFZH0701052' }, { 'success': False, 'error_message': error.DELETED_ISRC_UPDATE_ERROR, 'isrc': 'USFZH0701053' } ], 'success_count': 0, 'error_count': 2 } def task_substore_carveouts(): return response.Response( status=200, message=bulk_tasks.TaskStatus( correlation_id='1476454800174', user_id=22, create_datetime=datetime.datetime(2000, 12, 12), status=bulk_tasks_const.FAILED_STATUS, type=bulk_tasks_const.BULK_IMPORT, count=1, result=[ { 'success_count': 0, 'error_count': 1, 'status_report': [ { 'vendor_id': '123', 'upc': '191018672348', 'tuid': '987', 'success': False, 'locked_territories': None, 'error_message': '', 'substore_carveouts': [ ('453', {'RU', 'RO'}) ], 'isrc': 'US26V4410009' } ], 'upc': '191018672348' } ] ) ) def task_info_update_report(): return bulk_tasks.TaskStatus( id=15, create_datetime=datetime.datetime(2000, 12, 12), type=bulk_tasks_const.BULK_IMPORT ) def csv_valid_substore_carveouts(): csv_header = get_bulk_import_isrc_report_header() csv_body = ( '\n' '123,"=""191018672348""",Success,N/A,987,US26V4410009,Warning,' '"UPC has sub-store carve-out(s)for [YouTube]:' ' RO,RU"\n' ) return csv_header + csv_body def task_info_lock_report(): return bulk_tasks.TaskStatus( id=16, create_datetime=datetime.datetime(2000, 12, 12), type=bulk_tasks_const.BULK_LOCK ) def task_initial_db(): return response.Response( status=200, message=bulk_tasks.TaskStatus( correlation_id='1476454800174', id=123, user_id=1294, create_datetime=datetime.datetime(2000, 12, 12), status=bulk_tasks_const.DONE_STATUS, type=bulk_tasks_const.BULK_IMPORT, context='USA12345678,USA9876543' ) ) @pytest.fixture def task_initial_succeed_csv(): return """ISRC USA12345678 USA9876543 """ def task_bulk_resolve_conflicts_db(): return response.Response( status=200, message=bulk_tasks.TaskStatus( correlation_id='1476455009601', user_id=1294, create_datetime=datetime.datetime(2000, 12, 12), status=bulk_tasks_const.DONE_STATUS, type=bulk_tasks_const.BULK_RESOLVE_INTERNAL_CONFLICTS, count=5, result={ 'account_id': '123', 'successful_isrcs': OrderedDict([ ( 'CA1', OrderedDict([(11, ['IT']), (12345, [])]) ), ( 'CA2', OrderedDict([(11, ['PT']), (12345, ['IT', 'PT'])]) ) ]), 'failed_isrcs': OrderedDict([ ('QA1', [222]), ('QA2', [11, 222]), ]), } ) ) def csv_bulk_resolve_conflicts(): csv_header = ','.join( bulk_tasks_const.BULK_RESOLVE_CONFLICTS_REPORT_HEADER) csv_body = ( '\n' '123,"=""889910758229""",CA1,11,Conflict Resolved,IT\n' '123,"=""669910011232""",CA1,12345,No Conflict Found,N/A\n' '123,"=""889910758229""",CA2,11,Conflict Resolved,PT\n' '123,"=""669910011232""",CA2,12345,Conflict Resolved,"IT, PT"\n' '123,"=""669910011232""",QA1,222,Fail,N/A\n' '123,"=""889910758229""",QA2,11,Fail,N/A\n' '123,"=""669910011232""",QA2,222,Fail,N/A\n' ) return csv_header + csv_body