"""Test for ows-artist model.""" from owsrequest import request from owsrequest import test_utils from owsrequest.test_utils import MockOwsResponse from project_manager.models import ows_product_review def raise_value_error(_): """Raise error when parsing json.""" raise ValueError('No json here!') def test_get_status(monkeypatch, get_contentreview_data_ok): """Test successful request for product status from ows-product-review.""" product_id = 1001 status_payload = { 'id': 1001, 'ec_and_ar': False, 'release_status': 'transfer_to_content', 'release_approval_status': 'checked_in' } monkeypatch.setattr( request, 'get', test_utils.mock_ows_requests([get_contentreview_data_ok])) response = ows_product_review.get_status(product_id) assert response.status == 200 assert response.message.get('release_status') == \ status_payload['release_status'] assert response.message.get('release_approval_status') == \ status_payload['release_approval_status'] def test_get_status_not_found( monkeypatch, get_contentreview_data_not_found): """Test `Not Found` response when fetching a product status.""" product_id = 1002 data = { 'code': 'bad_request', 'message': 'Review queue record with id `1002` not found' } monkeypatch.setattr( request, 'get', test_utils.mock_ows_requests([get_contentreview_data_not_found])) response = ows_product_review.get_status(product_id) assert response.status == 400 assert response.errors.get('code') == data['code'] assert response.errors.get('message') == data['message'] def test_get_status_fatal_error(monkeypatch): """Test `500 Error` when fetching a product status.""" product_id = 9999 monkeypatch.setattr( request, 'get', test_utils.mock_ows_requests([{ 'service': 'ows-product-review', 'path': '/status/{}'.format(product_id), 'status': 500}]) ) monkeypatch.setattr(MockOwsResponse, 'json', raise_value_error) response = ows_product_review.get_status(product_id) assert response.status == 500 assert response.errors['code'] == 'Internal Error'