"""Unit tests for product.py.""" from mock import Mock from switchboard_consumer.constants.system import ORCHARD from switchboard_consumer.logic.product import create_product, unsubmit_product def test_create_product_success(create_product_message, mock_logger, orchard_client): """Test for success of product creation.""" create_product_payload = Mock() expected_product_id = 12345 orchard_client.create_product.return_value = { 'productId': expected_product_id } product_id, results = create_product( mock_logger, create_product_message, orchard_client, create_product_payload) switchboard_ids = create_product_message.ids[0] orchard_ids = { 'system': ORCHARD, 'localId': str(expected_product_id), 'businessKey': switchboard_ids['businessKey'], 'businessKeyType': switchboard_ids['businessKeyType'] } assert product_id == expected_product_id assert len(results) == 1 assert switchboard_ids in results[0]['ids'] assert orchard_ids in results[0]['ids'] def test_create_product_failure(create_product_message, mock_logger, orchard_client): """Test for failure on create product.""" create_product_payload = Mock() orchard_client.create_product.return_value = { 'errors': [ { 'extensions': { 'code': 'create_product_error_code', }, 'message': 'ERROR_MESSAGE', } ] } product_id, results = create_product( mock_logger, create_product_message, orchard_client, create_product_payload) assert not product_id assert results[0]['errors'] == [ { 'code': 'create_product_error_code', 'message': 'ERROR_MESSAGE' } ] def test_unsubmit_product_success(create_product_message, mock_logger, orchard_client): """Test for success of unsubmitting product.""" product_id = 123 orchard_client.unsubmit_product.return_value = { 'result': 'submitted' } unsubmit_result = unsubmit_product( mock_logger, create_product_message, product_id, orchard_client) assert unsubmit_result == {} def test_unsubmit_product_failure(create_product_message, mock_logger, orchard_client): """Test for success of unsubmitting product.""" product_id = 123 orchard_client.unsubmit_product.return_value = { 'errors': [ { 'extensions': { 'code': 'unsubmit_product_error_code', }, 'message': 'ERROR_MESSAGE', } ] } unsubmit_result = unsubmit_product( mock_logger, create_product_message, product_id, orchard_client) assert unsubmit_result['errors'] == [ { 'code': 'unsubmit_product_error_code', 'message': 'ERROR_MESSAGE' } ]