from typing import Any from unittest.mock import MagicMock, patch from uuid import UUID import pytest from owsresponse import response from account.logic import company_brand @pytest.fixture def expected_lookup_company_brands_response() -> list[Any]: return [ { 'company_brand_id': 10, 'uuid': '2ed1077d-bcd3-4db6-9a47-c37da82aab18', 'parent_company_uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', } ] @patch('account.logic.company_brand.format_for_dataloader') @patch('account.logic.company_brand.company_brand_model') def test_lookup_company_brands_by_uuids( mock_company_brand_model: MagicMock, mock_format_for_dataloader: MagicMock, expected_lookup_company_brands_response: list[Any], ): """Test lookup company_brands using uuids.""" mock_company_brand_model.lookup_company_brands_by_uuids.return_value = response.Response( expected_lookup_company_brands_response ) uuids = [ UUID('053a1a75-acc5-4cd8-9206-a194335d2afa'), UUID('bad45218-68d8-42b6-b4ee-730ef9e16309'), ] mock_format_for_dataloader.return_value = expected_lookup_company_brands_response result = company_brand.lookup_company_brands_by_uuids(uuids) assert result assert result.status == 200 assert result.message == {'company_brands': expected_lookup_company_brands_response} mock_format_for_dataloader.assert_called_once_with( expected_lookup_company_brands_response, uuids, 'uuid', ) @patch('account.logic.company_brand.company_brand_model') def test_lookup_company_brands_by_uuids_non_200( mock_company_brand_model: MagicMock, ): """Test lookup company_brands using uuids.""" expected = [] mock_company_brand_model.lookup_company_brands_by_uuids.return_value = response.Response( expected, status=400 ) result = company_brand.lookup_company_brands_by_uuids( [UUID('053a1a75-acc5-4cd8-9206-a194335d2afa')] ) assert not result assert result.status == 400 assert result.message == expected @patch('account.logic.company_brand.format_for_dataloader') @patch('account.logic.company_brand.company_brand_model') def test_lookup_company_brands_by_ids( mock_company_brand_model: MagicMock, mock_format_for_dataloader: MagicMock, expected_lookup_company_brands_response: list[Any], ): """Test lookup company_brands using ids.""" mock_company_brand_model.lookup_company_brands_by_ids.return_value = response.Response( expected_lookup_company_brands_response ) mock_format_for_dataloader.return_value = expected_lookup_company_brands_response result = company_brand.lookup_company_brands_by_ids([10]) assert result assert result.status == 200 assert result.message == {'company_brands': expected_lookup_company_brands_response} mock_format_for_dataloader.assert_called_once_with( expected_lookup_company_brands_response, [10], 'company_brand_id', ) @patch('account.logic.company_brand.company_brand_model') def test_lookup_company_brands_by_ids_non_200( mock_company_brand_model: MagicMock, ): """Test lookup company_brands using uuids.""" expected = [] mock_company_brand_model.lookup_company_brands_by_ids.return_value = response.Response( expected, status=400 ) result = company_brand.lookup_company_brands_by_ids([1, 2]) assert not result assert result.status == 400 assert result.message == expected