"""Test on company_brand model.""" from typing import Any from uuid import UUID import pytest from account.models import company_brand from tests.unit import db_operations @pytest.fixture def db_fixture(): """Set up the vendor/label info tables.""" db_operations.create_tables() db_operations.seed_vendor_table() db_operations.seed_genre_table() db_operations.seed_region_table() db_operations.seed_country_table() db_operations.seed_parent_company_table() db_operations.seed_company_brand_table() db_operations.seed_soundscan_codes_table() db_operations.seed_vendor_assigned_to_data() db_operations.seed_service_tier_table() def test_get_company_brands(db_fixture) -> None: """Test get_company_brands returns all company brands.""" result = company_brand.get_company_brands() assert len(result) == 3 uuids = {cb.uuid for cb in result} assert uuids == { 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', '31f4f0f0-cbb4-4a2c-9eb0-d7288c5a2588', '9b36a627-4be9-4762-b790-5628676f5f90', } def test_get_company_brand(db_fixture) -> None: """Test get_company_brand returns the correct brand by UUID.""" result = company_brand.get_company_brand('d25a4cd1-e820-45f2-be5c-56edcfeb8298') assert result is not None assert result.name == 'test_theorchard' assert result.display_name == 'The Orchard (Test)' def test_get_company_brand_to_dict(db_fixture) -> None: """Test to_dict includes parent_company_uuid.""" result = company_brand.get_company_brand('d25a4cd1-e820-45f2-be5c-56edcfeb8298') assert result is not None d = result.to_dict() assert d['uuid'] == 'd25a4cd1-e820-45f2-be5c-56edcfeb8298' assert d['parent_company_id'] == 2 assert d['parent_company_uuid'] == '955a1bbd-b623-4ea1-ab5f-8d6620c442fb' def test_get_company_brand_not_found(db_fixture) -> None: """Test get_company_brand returns None for unknown UUID.""" result = company_brand.get_company_brand('does-not-exist') assert result is None @pytest.mark.parametrize( 'names, expected, description', [ ([], [], 'empty list returns empty list'), ( ['test_theorchard', 'test_cb', 'test_sme'], [ { 'id': 1, 'parent_company_uuid': '955a1bbd-b623-4ea1-ab5f-8d6620c442fb', 'uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', }, { 'id': 3, 'parent_company_uuid': 'f1594122-7f99-4916-b103-08b0444c7b46', 'uuid': '9b36a627-4be9-4762-b790-5628676f5f90', }, ], 'only items in db are returned', ), ], ) def test_lookup_company_brands_by_names( db_fixture, names: list[str], expected: dict[str, Any], description: str, ) -> None: """Test lookup_company_brands_by_names.""" result = company_brand.lookup_company_brands_by_names(names) assert result.message == expected, description @pytest.mark.parametrize( 'uuids, expected, description', [ ([], [], 'Empty list returns empty list'), ( [ UUID('d25a4cd1-e820-45f2-be5c-56edcfeb8298'), UUID('9b36a627-4be9-4762-b790-5628676f5f90'), UUID('bc0fdaf0-a48b-4e5e-b4fa-efd31a4aac0b'), ], [ { 'company_brand_id': 1, 'parent_company_uuid': '955a1bbd-b623-4ea1-ab5f-8d6620c442fb', 'uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', }, { 'company_brand_id': 3, 'parent_company_uuid': 'f1594122-7f99-4916-b103-08b0444c7b46', 'uuid': '9b36a627-4be9-4762-b790-5628676f5f90', }, ], 'Only items in db are returned', ), ], ) def test_lookup_company_brands_by_uuids( db_fixture, uuids: list[UUID], expected: dict[str, Any], description: str, ) -> None: """Test lookup_company_brands_by_uuids.""" result = company_brand.lookup_company_brands_by_uuids(uuids) assert result.message == expected, description @pytest.mark.parametrize( 'ids, expected, description', [ ([], [], 'Empty list returns empty list'), ( [1, 999999, 3], [ { 'company_brand_id': 1, 'uuid': 'd25a4cd1-e820-45f2-be5c-56edcfeb8298', 'parent_company_uuid': '955a1bbd-b623-4ea1-ab5f-8d6620c442fb', }, { 'company_brand_id': 3, 'uuid': '9b36a627-4be9-4762-b790-5628676f5f90', 'parent_company_uuid': 'f1594122-7f99-4916-b103-08b0444c7b46', }, ], 'Only items in db are returned', ), ], ) def test_lookup_company_brands_by_ids( db_fixture, ids: list[int], expected: dict[str, Any], description: str, ) -> None: """Test lookup_company_brands_by_ids.""" result = company_brand.lookup_company_brands_by_ids(ids) assert result.message == expected, description