"""Test replace_with_placeholder_upc handler.""" from unittest.mock import MagicMock, patch from index import handler @patch('index.S3Schema') @patch('index.load_ddex_json') @patch('index.get_placeholder_upc') @patch('index.save_s3_context') def test_upc_replaced_with_already_existed_placeholder_upc( mock_save_s3_context, mock_get_placeholder_upc, mock_load_ddex_json, mock_s3_schema, mock_event): """Test the main handler.""" input_upc = '9999999' placeholder_upc = '88888888' mock_event['product']['upc'] = input_upc s3_context_mock = MagicMock() mock_s3_schema.return_value.load.return_value = s3_context_mock product_mock = MagicMock() s3_context_mock.product = product_mock product_mock.upc = input_upc product_mock.display_upc = None mock_get_placeholder_upc.return_value = placeholder_upc output = handler(mock_event, None) mock_get_placeholder_upc.assert_called_with(input_upc) context, s3_context = mock_save_s3_context.call_args.args assert context.product.upc == placeholder_upc assert context.product.display_upc == input_upc assert s3_context.product.upc == placeholder_upc assert s3_context.product.display_upc == input_upc assert output['product']['upc'] == placeholder_upc assert output['product']['display_upc'] == input_upc @patch('index.S3Schema') @patch('index.load_ddex_json') @patch('index.get_placeholder_upc') @patch('index.save_s3_context') @patch('index.get_product_by_upc') @patch('index.provision_upc') def test_upc_replaced_by_placeholder_upc(mock_provision_upc, mock_get_product_by_upc, mock_save_s3_context, mock_get_placeholder_upc, mock_load_ddex_json, mock_s3_schema, mock_event): """Test the main handler.""" input_upc = '9999999' placeholder_upc = '88888888' mock_event['product']['upc'] = input_upc s3_context_mock = MagicMock() mock_s3_schema.return_value.load.return_value = s3_context_mock product_mock = MagicMock() s3_context_mock.product = product_mock product_mock.upc = input_upc product_mock.display_upc = None mock_get_placeholder_upc.return_value = None mock_provision_upc.return_value = placeholder_upc mock_get_product_by_upc.return_value = {'notForDistribution': 'N', 'status': 'label_processing'} output = handler(mock_event, None) mock_get_placeholder_upc.assert_called_with(input_upc) context, s3_context = mock_save_s3_context.call_args.args assert context.product.upc is None assert context.product.display_upc == input_upc assert s3_context.product.upc is None assert s3_context.product.display_upc == input_upc assert output['product']['upc'] is None assert output['product']['display_upc'] == input_upc @patch('index.S3Schema') @patch('index.load_ddex_json') @patch('index.get_placeholder_upc') @patch('index.save_s3_context') @patch('index.get_product_by_upc') @patch('index.provision_upc') def test_do_nothing_for_in_content_products(mock_provision_upc, mock_get_product_by_upc, mock_save_s3_context, mock_get_placeholder_upc, mock_load_ddex_json, mock_s3_schema, mock_event): """Test the main handler.""" input_upc = '9999999' mock_event['product']['upc'] = input_upc s3_context_mock = MagicMock() mock_s3_schema.return_value.load.return_value = s3_context_mock product_mock = MagicMock() s3_context_mock.product = product_mock product_mock.upc = input_upc product_mock.display_upc = None mock_get_placeholder_upc.return_value = None mock_get_product_by_upc.return_value = {'notForDistribution': 'N', 'status': 'in_content'} output = handler(mock_event, None) mock_get_placeholder_upc.assert_called_with(input_upc) mock_save_s3_context.assert_not_called() assert output['product']['upc'] == input_upc assert output['product']['display_upc'] == '' @patch('index.S3Schema') @patch('index.load_ddex_json') @patch('index.get_placeholder_upc') @patch('index.save_s3_context') @patch('index.get_product_by_upc') @patch('index.provision_upc') def test_do_nothing_for_sme_product(mock_provision_upc, mock_get_product_by_upc, mock_save_s3_context, mock_get_placeholder_upc, mock_load_ddex_json, mock_s3_schema, mock_event): """Test the main handler.""" input_upc = '9999999' mock_event['product']['upc'] = input_upc s3_context_mock = MagicMock() mock_s3_schema.return_value.load.return_value = s3_context_mock product_mock = MagicMock() s3_context_mock.product = product_mock product_mock.upc = input_upc product_mock.display_upc = None mock_get_placeholder_upc.return_value = None mock_get_product_by_upc.return_value = { 'notForDistribution': 'SMEAnalyticsDummy', 'status': 'label_processing'} output = handler(mock_event, None) mock_get_placeholder_upc.assert_called_with(input_upc) mock_save_s3_context.assert_not_called() assert output['product']['upc'] == input_upc assert output['product']['display_upc'] == ''