"""Test VAPI Model.""" from contextlib import nullcontext as does_not_raise from unittest.mock import MagicMock, NonCallableMagicMock, call import pytest import requests from requests_oauthlib import OAuth2Session from product_review.models import vapi as vapi_model @pytest.mark.parametrize( ( "test_description", "status", "expected_raise", "expected_raise_message", ), [ ( "error", 808, pytest.raises(Exception), '{"status": 808, "code": "vapi_error", "message": "asdf"}', ), ( "success", 200, does_not_raise(), "None", ), ], ) def test_approve_revised_products( test_description, status, expected_raise, expected_raise_message, app_context, mocker, ): """Test approve_revised_product.""" mocker.patch.object( requests, "get", return_value=NonCallableMagicMock( status_code=200, json=MagicMock(return_value={"query": {"code": "test-code"}}), ), ) mocker.patch.object( requests, "request", return_value=NonCallableMagicMock(status_code=status, text="asdf"), ) mocker.patch.object( OAuth2Session, "fetch_token", return_value={ "access_token": "test-token", }, ) with expected_raise as er: vapi_model.approve_revised_product(12321) assert str(getattr(er, "value", None)) == expected_raise_message assert requests.request.mock_calls == [ call( "post", "https://example.com/contentreview/post?releaseId=12321&releaseApprovalComments=Approved&errorMode=1", # noqa headers={"version": "1", "access-token": "test-token"}, ), ] @pytest.mark.parametrize( ( "test_description", "status", "expected_raise", "expected_raise_message", ), [ ( "error", 808, pytest.raises(Exception), '{"status": 808, "code": "vapi_error", "message": "asdf"}', ), ( "success", 200, does_not_raise(), "None", ), ], ) def test_save_revised_localized_product_fields( test_description, status, expected_raise, expected_raise_message, app_context, mocker, ): """Test save_revised_localized_product_fields.""" mocker.patch.object( requests, "get", return_value=NonCallableMagicMock( status_code=200, json=MagicMock(return_value={"query": {"code": "test-code"}}), ), ) mocker.patch.object( requests, "request", return_value=NonCallableMagicMock(status_code=status, text="asdf"), ) mocker.patch.object( OAuth2Session, "fetch_token", return_value={ "access_token": "test-token", }, ) with expected_raise as er: vapi_model.save_revised_localized_product_fields(12321) assert str(getattr(er, "value", None)) == expected_raise_message assert requests.request.mock_calls == [ call( "post", "https://example.com/releaselocalized/post?data=12321&errorMode=1", # noqa headers={"version": "1", "access-token": "test-token"}, ), ] @pytest.mark.parametrize( ( "test_description", "status", "expected_raise", "expected_raise_message", ), [ ( "error", 808, pytest.raises(Exception), '{"status": 808, "code": "vapi_error", "message": "asdf"}', ), ( "success", 200, does_not_raise(), "None", ), ], ) def test_save_revised_localized_track_fields( test_description, status, expected_raise, expected_raise_message, app_context, mocker, ): """Test save_revised_localized_track_fields.""" mocker.patch.object( requests, "get", return_value=NonCallableMagicMock( status_code=200, json=MagicMock(return_value={"query": {"code": "test-code"}}), ), ) mocker.patch.object( requests, "request", return_value=NonCallableMagicMock(status_code=status, text="asdf"), ) mocker.patch.object( OAuth2Session, "fetch_token", return_value={ "access_token": "test-token", }, ) with expected_raise as er: vapi_model.save_revised_localized_track_fields(12321) assert str(getattr(er, "value", None)) == expected_raise_message assert requests.request.mock_calls == [ call( "post", "https://example.com/tracklocalized/post?data=12321&errorMode=1", # noqa headers={"version": "1", "access-token": "test-token"}, ), ]