"""Tests for ows-account model.""" import json from contextlib import nullcontext as does_not_raise import pytest from owsrequest import request from owsrequest.test_utils import MockOwsResponse from product_review.constants import services from product_review.models import ows_account @pytest.mark.parametrize( ( "description", "status", "expected_raise", "expected_raise_message", "expected_response_text", "expected_result", ), [ ("success", 200, does_not_raise(), "None", "theorchard", "theorchard"), ( "500 fail", 500, pytest.raises(Exception), json.dumps( { "status": 500, "code": "ows_account_error_code", "message": "some error", } ), "some error", None, ), ], ) def test_get_vendor_company_brand( mocker, description, status, expected_raise, expected_raise_message, expected_response_text, expected_result, ): """Test get vendor company brand.""" mock_response = MockOwsResponse( status, expected_result, ) mock_response.text = expected_response_text mocker.patch.object(request, "get", return_value=mock_response) result = None with expected_raise as er: result = ows_account.get_vendor_company_brand(12321) assert str(getattr(er, "value", None)) == expected_raise_message request.get.assert_called_once_with( services.OWS_ACCOUNT, "/vendor/brand/12321", ) assert result == expected_result @pytest.mark.parametrize( ( "description", "status", "expected_raise", "expected_raise_message", "expected_response_text", "expected_result", ), [ ("success", 200, does_not_raise(), "None", "abc", {"foo": "bar"}), ( "500 fail", 500, pytest.raises(Exception), json.dumps( { "status": 500, "code": "ows_account_error_code", "message": "some error", } ), "some error", None, ), ], ) def test_get_vendor_document( mocker, description, status, expected_raise, expected_raise_message, expected_response_text, expected_result, ): """Test get vendor document.""" mock_response = MockOwsResponse(status, expected_result) mock_response.text = expected_response_text mocker.patch.object(request, "get", return_value=mock_response) result = None with expected_raise as er: result = ows_account.get_vendor_document(123) assert str(getattr(er, "value", None)) == expected_raise_message request.get.assert_called_once_with(services.OWS_ACCOUNT, "/vendor/123/document") assert result == expected_result