"""Test CompanyBrandByNameResourceGetter.""" from unittest.mock import MagicMock, patch import pytest from owsresponse import response from account.logic.resource_getters.company_brand import CompanyBrandByNameResourceGetter @pytest.fixture() def resource_getter() -> CompanyBrandByNameResourceGetter: return CompanyBrandByNameResourceGetter('cool beans') @patch('account.logic.resource_getters.company_brand.lookup_company_brands_by_names') def test_happy_path( mock_lookup: MagicMock, resource_getter: CompanyBrandByNameResourceGetter, ) -> None: """Test get_attributes happy path.""" mock_lookup.return_value = response.Response( [ { 'id': 1, 'parent_company_uuid': '955a1bbd-b623-4ea1-ab5f-8d6620c442fb', 'uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', }, ] ) actual = resource_getter.get_attributes() mock_lookup.assert_called_once_with(['cool beans']) assert actual == { 'tenant': { 'tenant_uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', 'tenant_type': 'company_brand', 'tenant_hierarchy': [ '955a1bbd-b623-4ea1-ab5f-8d6620c442fb', ], }, 'name': 'cool beans', } @patch('account.logic.resource_getters.company_brand.lookup_company_brands_by_names') def test_empty_hierarchy( mock_lookup: MagicMock, resource_getter: CompanyBrandByNameResourceGetter, ) -> None: """Test get_attributes returns no hierarchy if parent_company_uuid is not present.""" mock_lookup.return_value = response.Response( [ { 'id': 1, 'uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', }, ] ) actual = resource_getter.get_attributes() mock_lookup.assert_called_once_with(['cool beans']) assert actual == { 'tenant': { 'tenant_uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', 'tenant_type': 'company_brand', 'tenant_hierarchy': [], }, 'name': 'cool beans', } @pytest.mark.parametrize( 'mock_empty_response', [ pytest.param(None, id='None means there is no company brand data.'), pytest.param( response.Response(), id='empty message means there is no company brand data', ), pytest.param( response.Response('some string'), id='if message is not a list means there is no company brand data', ), pytest.param( response.Response([]), id='empty list message means there is no company brand data', ), ], ) @patch('account.logic.resource_getters.company_brand.lookup_company_brands_by_names') def test_empty_attributes_returned( mock_lookup: MagicMock, mock_empty_response: response.Response | None, resource_getter: CompanyBrandByNameResourceGetter, ) -> 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(['cool beans']) assert actual == {}