"""Tests for Organization services.""" from apps.organization.models import Organization from apps.organization.services import OrganizationNotFoundError, OrganizationService from django.test import TestCase from .factories import OrganizationFactory class OrganizationServiceTest(TestCase): """Tests for OrganizationService.""" def test_get_or_create_by_inn_rejects_missing_organization(self): """OrganizationService must not create organizations outside exchange import.""" with self.assertRaises(OrganizationNotFoundError): OrganizationService.get_or_create_by_inn( inn="1234567890", defaults={"name": "Test Org", "ogrn": "1234567890123"}, ) self.assertEqual(Organization.objects.count(), 0) def test_get_or_create_by_inn_returns_existing(self): """Test get_or_create_by_inn returns existing organization.""" existing = OrganizationFactory.create(inn="9876543210") org, created = OrganizationService.get_or_create_by_inn( inn="9876543210", defaults={"name": "Different Name"}, ) self.assertFalse(created) self.assertEqual(org.pk, existing.pk) self.assertEqual(org.name, existing.name) def test_get_by_inn_found(self): """Test get_by_inn returns organization.""" existing = OrganizationFactory.create(inn="5555555555") result = OrganizationService.get_by_inn("5555555555") self.assertEqual(result.pk, existing.pk) def test_get_by_inn_not_found(self): """Test get_by_inn returns None when not found.""" result = OrganizationService.get_by_inn("0000000000") self.assertIsNone(result) def test_search_by_name(self): """Test search_by_name functionality.""" OrganizationFactory.create(name="ООО Ромашка") OrganizationFactory.create(name="ООО Василек") OrganizationFactory.create(name="АО Ромашка-Плюс") results = OrganizationService.search_by_name("Ромашка") self.assertEqual(results.count(), 2)