"""Test for ows-product-review.""" from oto import response from owsrequest import request, test_utils import pytest from product_workflow.constants import error, services from product_workflow.models import ( ows_product_review as ows_product_review_model) @pytest.mark.parametrize(( 'test_description', 'ows_product_review_code', 'ows_product_review_message', 'expected_result_code', 'expected_result_message', 'expected_result_errors', ), [ ( 'get_review_queue_eligibility failure', 400, { 'oopsie': 'doopsie', }, 400, None, {'code': 400, 'message': '{"oopsie": "doopsie"}'}, ), ( 'get_review_queue_eligibility success', 200, 'asdf', 200, '"asdf"', None, ), ]) def test_get_review_queue_eligibility( test_description, ows_product_review_code, ows_product_review_message, expected_result_code, expected_result_message, expected_result_errors, mocker, ): """Test get_review_queue_eligibility.""" call_specs = [{ 'service': services.OWS_PRODUCT_REVIEW, 'path': '/review-queue/product/12321/eligibility-check', 'status': ows_product_review_code, 'json': ows_product_review_message, }] mocker.patch.object( request, 'get', test_utils.mock_ows_requests(call_specs)) result = ows_product_review_model.get_review_queue_eligibility(12321) assert result.status == expected_result_code assert result.message == expected_result_message assert result.errors == expected_result_errors @pytest.mark.parametrize(( 'test_description', 'ows_product_review_code', 'ows_product_review_message', 'expected_result_code', 'expected_result_message', 'expected_result_errors', ), [ ( 'test_unsubmit_product_404_failure', 404, { 'code': 'not_found_error', 'message': 'Product 234234234234243 not found.', }, 404, None, response.create_not_found_response( error.ERROR_MESSAGE_PRODUCT_APPROVAL_NOT_FOUND.format(12321) ).errors, ), ( 'test_unsubmit_product_non_404_failure', 400, { 'code': 'bad_request', 'message': 'Bad Request', }, 400, None, { 'code': 'bad_request', 'message': 'Bad Request', }, ), ( 'test_unsubmit_product_success', 204, None, 200, {'message': 'release approval deleted'}, None, ), ]) def test_unsubmit_product( test_description, ows_product_review_code, ows_product_review_message, expected_result_code, expected_result_message, expected_result_errors, mocker, ): """test_unsubmit_product.""" call_specs = [{ 'service': services.OWS_PRODUCT_REVIEW, 'path': '/review-queue/product/12321', 'status': ows_product_review_code, 'json': ows_product_review_message, }] mocker.patch.object( request, 'delete', test_utils.mock_ows_requests(call_specs)) result = ows_product_review_model.unsubmit_product(12321) assert result.status == expected_result_code assert result.message == expected_result_message assert result.errors == expected_result_errors