"""Test handler.""" from unittest.mock import MagicMock, patch import index @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler( mock_graphql_execute, mock_current_logger, context): """Test the main handler.""" mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger expected_product_id = 234324 expected_tuid = 32279606 mock_graphql_execute.return_value = { 'data': { 'productByUpc': { 'productId': 234324, 'tracks': [{ 'tuid': '32279606', 'isrc': 'QZCDB2000001' }], 'notForDistribution': 'N', 'vendorId': 123, 'subaccountId': 999, 'releaseDate': '2016-01-01', } } } response = index.handler(context, None) assert response.get('product').get('product_id') == expected_product_id assert response.get('tracks')[0].get('tuid') == expected_tuid @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler_no_matching_isrc( mock_graphql_execute, mock_current_logger, context): """Test the main handler with.""" mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger expected_product_id = 234324 mock_graphql_execute.return_value = { 'data': { 'productByUpc': { 'productId': 234324, 'tracks': [{ 'tuid': '32279606', 'isrc': 'QZCDB2000002' }], 'notForDistribution': 'N', 'vendorId': 123, 'subaccountId': 999, 'releaseDate': '2016-01-01', } } } response = index.handler(context, None) assert response.get('product').get('product_id') == expected_product_id assert not response.get('tracks')[0].get('tuid') @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler_with_mixed_found_and_missing_tracks( mock_graphql_execute, mock_current_logger, context): """Test the main handler.""" mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger expected_product_id = 234324 expected_first_track_tuid = 32279606 expected_third_track_tuid = 32279608 context['tracks'].extend(( { 'tuid': None, 'release_reference': 'R2', 'sequence_number': 2, 'release_type': 'TrackRelease', 'volume': 1, 'isrc': 'QZCDB2000123', 'resource_reference': 'A1', }, { 'tuid': None, 'release_reference': 'R3', 'sequence_number': 3, 'release_type': 'TrackRelease', 'volume': 1, 'isrc': 'QZCDB2000003', 'resource_reference': 'A1', } )) mock_graphql_execute.return_value = { 'data': { 'productByUpc': { 'productId': 234324, 'tracks': [ { 'tuid': '32279606', 'isrc': 'QZCDB2000001' }, { 'tuid': '32279607', 'isrc': 'QZCDB2000002' }, { 'tuid': '32279608', 'isrc': 'QZCDB2000003' } ], 'notForDistribution': 'N', 'vendorId': 123, 'subaccountId': 999, 'releaseDate': '2016-01-01', } } } response = index.handler(context, None) assert response.get('product').get('product_id') == expected_product_id assert response.get('tracks')[0].get('tuid') == expected_first_track_tuid assert not response.get('tracks')[1].get('tuid') assert response.get('tracks')[2].get('tuid') == expected_third_track_tuid @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler_returns_vendor_id( mock_graphql_execute, mock_current_logger, context, get_product_by_upc_response): """Test the main handler with vendor id.""" mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger expected_vendor_id = 123 mock_graphql_execute.return_value = get_product_by_upc_response response = index.handler(context, None) assert response.get('product').get('vendor_id') == expected_vendor_id @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler_returns_subaccount_id( mock_graphql_execute, mock_current_logger, context, get_product_by_upc_response): """Test the main handler with subaccount id.""" mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger expected_subaccount_id = 999 mock_graphql_execute.return_value = get_product_by_upc_response response = index.handler(context, None) assert response.get('product').get('subaccount_id') == \ expected_subaccount_id @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler_returns_original_values( mock_graphql_execute, mock_current_logger, context, get_product_by_upc_response): """Test the main handler with original values.""" mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger mock_graphql_execute.return_value = get_product_by_upc_response response = index.handler(context, None) assert response.get('product').get('original_values').get( 'sale_start_date' ) == '2021-02-19' assert response.get('product').get('original_values').get( 'carveout_country_codes' ) == ['US', 'CA'] assert response.get('product').get('original_values').get( 'release_date' ) == '2016-01-01' @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler_returns_product_status( mock_graphql_execute, mock_current_logger, context, get_product_by_upc_response): """Test the main handler with product status value.""" mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger mock_graphql_execute.return_value = get_product_by_upc_response response = index.handler(context, None) assert response.get('product').get('status') == 'in_content' @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler_returns_orchard_label( mock_graphql_execute, mock_current_logger, context, get_product_by_upc_response): """Test the main handler with product status value.""" mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger mock_graphql_execute.return_value = get_product_by_upc_response response = index.handler(context, None) assert response.get('orchard_label') == 'TVT Records' @patch('index.logger') @patch('index.graphql_gateway.execute') def test_handler_unsubmits_ttc_product( mock_graphql_execute, mock_current_logger, context_ttc_product, unsubmit_success_response, get_product_by_upc_response_ttc): """Test that a TTC product gets unsubmitted before it is worked on.""" index.unsubmit_product = MagicMock( return_value=unsubmit_success_response['data']['unsubmitProduct']) mock_logger = MagicMock(name='info') mock_current_logger.return_value = mock_logger mock_graphql_execute.return_value = get_product_by_upc_response_ttc index.handler(context_ttc_product, None) index.unsubmit_product.assert_called_once()