"""Test for ows-account.""" from contextlib import nullcontext from typing import ContextManager from unittest.mock import MagicMock, call import pytest from flask.ctx import AppContext from owsrequest.utils import mock_request from requests import HTTPError from assets.constants import service from assets.exceptions import VendorNotFound from assets.models import ows_account @pytest.mark.parametrize( ( "mock_raises", "raise_for_status_exception", ), [ pytest.param( nullcontext(), None, id="200 success", ), pytest.param( pytest.raises(VendorNotFound), HTTPError(response=MagicMock(status_code=404)), id="404 not found", ), pytest.param( pytest.raises(HTTPError), HTTPError(response=MagicMock(status_code=500)), id="500 failure", ), ], ) def test_lookup_vendor( mock_raises: ContextManager[None], raise_for_status_exception: HTTPError, fixture_vendor_id: int, mock_raise_for_status: MagicMock, fixture_app: AppContext, ) -> None: """Test for lookup_vendor method.""" path = f"/vendor/{fixture_vendor_id}" mock_raise_for_status.side_effect = raise_for_status_exception mock_request.head(service.OWS_ACCOUNT, path) with mock_raises: ows_account.lookup_vendor(fixture_vendor_id) assert mock_raise_for_status.mock_calls == [call()]