"""Tests for parent company handlers.""" from unittest import mock from flask import testing as flask_testing from account.models import company_brand, parent_company @mock.patch('account.handlers.parent_company.parent_company_model') def test_get_parent_companies( mock_model: mock.MagicMock, fixture_client: flask_testing.FlaskClient, ): """Test get_parent_companies returns parent companies.""" pc1 = parent_company.ParentCompany(id=1, name='PC1', uuid='uuid1', display_name='PC1 Display') pc2 = parent_company.ParentCompany(id=2, name='PC2', uuid='uuid2', display_name='PC2 Display') mock_model.get_parent_companies.return_value = [pc1, pc2] response = fixture_client.get('/parent_companies') assert response.status_code == 200 assert response.json == { 'parent_companies': [ {'id': 1, 'name': 'PC1', 'uuid': 'uuid1', 'display_name': 'PC1 Display'}, {'id': 2, 'name': 'PC2', 'uuid': 'uuid2', 'display_name': 'PC2 Display'}, ], } mock_model.get_parent_companies.assert_called_once() @mock.patch('account.handlers.parent_company.parent_company_model') def test_get_parent_company_not_found( mock_model: mock.MagicMock, fixture_client: flask_testing.FlaskClient, ): """Test get_parent_company returns 404 when not found.""" mock_model.get_parent_company.return_value = None response = fixture_client.get('/parent_companies/unknown-uuid') assert response.status_code == 404 @mock.patch('account.handlers.parent_company.parent_company_model') def test_get_parent_company( mock_model: mock.MagicMock, fixture_client: flask_testing.FlaskClient, ): """Test get_parent_company returns a single parent company.""" pc1 = parent_company.ParentCompany(id=1, name='PC1', uuid='uuid1', display_name='PC1 Display') mock_model.get_parent_company.return_value = pc1 response = fixture_client.get('/parent_companies/uuid1') assert response.status_code == 200 assert response.json == {'id': 1, 'name': 'PC1', 'uuid': 'uuid1', 'display_name': 'PC1 Display'} mock_model.get_parent_company.assert_called_once_with('uuid1') @mock.patch('account.handlers.parent_company.parent_company_model') def test_get_parent_company_companies_not_found( mock_model: mock.MagicMock, fixture_client: flask_testing.FlaskClient, ): """Test get_parent_company_companies returns 404 when not found.""" mock_model.get_parent_company_company_brands.return_value = None response = fixture_client.get('/parent_companies/unknown-uuid/companies') assert response.status_code == 404 @mock.patch('account.handlers.parent_company.parent_company_model') def test_get_parent_company_companies( mock_model: mock.MagicMock, fixture_client: flask_testing.FlaskClient, ): """Test get_parent_company_companies returns companies.""" cb1 = company_brand.CompanyBrand( id=10, name='Brand1', uuid='brand-uuid-1', display_name='B1', logo_url='https://cdn.theorchard.io/assets/brand1/icons/brand.svg', parent_company_id=1, ) cb2 = company_brand.CompanyBrand( id=11, name='Brand2', uuid='brand-uuid-2', display_name='B2', logo_url='https://cdn.theorchard.io/assets/brand2/icons/brand.svg', parent_company_id=1, ) pc1 = parent_company.ParentCompany(id=1, name='PC1', uuid='uuid1', display_name='PC1 Display') cb1.parent_company = pc1 cb2.parent_company = pc1 pc1.company_brands = [cb1, cb2] mock_model.get_parent_company_company_brands.return_value = pc1 response = fixture_client.get('/parent_companies/uuid1/companies') assert response.status_code == 200 assert response.json == { 'companies': [ { 'id': 10, 'name': 'Brand1', 'uuid': 'brand-uuid-1', 'display_name': 'B1', 'logo_url': 'https://cdn.theorchard.io/assets/brand1/icons/brand.svg', }, { 'id': 11, 'name': 'Brand2', 'uuid': 'brand-uuid-2', 'display_name': 'B2', 'logo_url': 'https://cdn.theorchard.io/assets/brand2/icons/brand.svg', }, ], } mock_model.get_parent_company_company_brands.assert_called_once_with('uuid1')