"""Test AccountByIdResourceGetter.""" from unittest.mock import MagicMock, patch import pytest from owsresponse import response from account.constants import constants from account.logic.resource_getters.account import AccountByIdResourceGetter @pytest.fixture() def resource_getter() -> AccountByIdResourceGetter: return AccountByIdResourceGetter(123) @patch('account.logic.resource_getters.account.lookup_vendors_by_vendor_ids') def test_happy_path( mock_lookup: MagicMock, resource_getter: AccountByIdResourceGetter, ) -> None: """Test get_attributes happy path.""" mock_lookup.return_value = response.Response( { 'vendors': [ { 'id': 123, 'company_brand_uuid': '955a1bbd-b623-4ea1-ab5f-8d6620c442fb', 'parent_company_uuid': 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', 'uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', }, ] } ) actual = resource_getter.get_attributes() mock_lookup.assert_called_once_with([123], fetch_flags=[constants.FETCH_TENANT_HIERARCHY]) assert actual == { 'tenant': { 'tenant_uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', 'tenant_type': 'account', 'tenant_hierarchy': [ '955a1bbd-b623-4ea1-ab5f-8d6620c442fb', 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', ], }, 'name': 123, } @pytest.mark.parametrize( 'mock_empty_response', [ pytest.param(None, id='None means there is no vendor data.'), pytest.param( response.create_not_found_response(), id='empty message means there is no vendor data', ), pytest.param( response.Response([]), id='empty list message means there is no vendor data', ), pytest.param( response.Response({'vendors': []}), id='empty list message in vendor object means there is no vendor data.', ), ], ) @patch('account.logic.resource_getters.account.lookup_vendors_by_vendor_ids') def test_empty_attributes_returned( mock_lookup: MagicMock, mock_empty_response: response.Response | None, resource_getter: AccountByIdResourceGetter, ) -> None: """Test get_attributes returns empty for bad lookups.""" mock_lookup.return_value = mock_empty_response actual = resource_getter.get_attributes() mock_lookup.assert_called_once_with([123], fetch_flags=[constants.FETCH_TENANT_HIERARCHY]) assert actual == {}