112 lines
3.5 KiB
Python
112 lines
3.5 KiB
Python
import pytest
|
|
|
|
from src.domain.entities import (
|
|
PharmacyEntity,
|
|
PharmacyStatus,
|
|
MedicationEntity,
|
|
ERPType,
|
|
SyncStrategy,
|
|
UserRole,
|
|
ConnectorEntity,
|
|
ConnectorStatus,
|
|
ReservationEntity,
|
|
ReservationStatus,
|
|
AuditLogEntity,
|
|
)
|
|
from uuid import uuid4
|
|
|
|
|
|
class TestPharmacyEntity:
|
|
def test_create_pharmacy(self):
|
|
entity = PharmacyEntity(
|
|
code="PH-001",
|
|
name="Farmacia Central",
|
|
address="Calle Mayor 1",
|
|
city="Madrid",
|
|
status=PharmacyStatus.ACTIVE,
|
|
erp_type=ERPType.FARMATIC,
|
|
sync_strategy=SyncStrategy.INCREMENTAL,
|
|
)
|
|
assert entity.code == "PH-001"
|
|
assert entity.name == "Farmacia Central"
|
|
assert entity.status == PharmacyStatus.ACTIVE
|
|
assert entity.erp_type == ERPType.FARMATIC
|
|
assert entity.sync_strategy == SyncStrategy.INCREMENTAL
|
|
|
|
def test_pharmacy_default_values(self):
|
|
entity = PharmacyEntity(code="PH-002", name="Test")
|
|
assert entity.country == "ES"
|
|
assert entity.status == PharmacyStatus.PENDING
|
|
assert entity.sync_strategy == SyncStrategy.INCREMENTAL
|
|
assert entity.sync_interval_minutes == 30
|
|
|
|
def test_pharmacy_status_enum(self):
|
|
assert PharmacyStatus.ACTIVE.value == "active"
|
|
assert PharmacyStatus.INACTIVE.value == "inactive"
|
|
assert PharmacyStatus.SUSPENDED.value == "suspended"
|
|
assert PharmacyStatus.PENDING.value == "pending"
|
|
|
|
|
|
class TestMedicationEntity:
|
|
def test_create_medication(self):
|
|
entity = MedicationEntity(
|
|
nregistro="12345",
|
|
name="Ibuprofeno 400mg",
|
|
active_ingredient="Ibuprofeno",
|
|
dosage="400mg",
|
|
form="Comprimidos",
|
|
prescription_required=False,
|
|
)
|
|
assert entity.nregistro == "12345"
|
|
assert entity.name == "Ibuprofeno 400mg"
|
|
assert entity.prescription_required is False
|
|
|
|
|
|
class TestConnectorEntity:
|
|
def test_create_connector(self):
|
|
entity = ConnectorEntity(
|
|
erp_system_id=uuid4(),
|
|
pharmacy_id=uuid4(),
|
|
name="Farmatic Connector",
|
|
connector_type=ERPType.FARMATIC,
|
|
)
|
|
assert entity.connector_type == ERPType.FARMATIC
|
|
assert entity.version == "1.0.0"
|
|
assert entity.status == ConnectorStatus.PENDING
|
|
|
|
|
|
class TestReservationEntity:
|
|
def test_create_reservation(self):
|
|
entity = ReservationEntity(
|
|
pharmacy_id=uuid4(),
|
|
medication_id=uuid4(),
|
|
quantity=5,
|
|
idempotency_key="unique-key-123",
|
|
)
|
|
assert entity.quantity == 5
|
|
assert entity.status == ReservationStatus.PENDING
|
|
assert entity.idempotency_key == "unique-key-123"
|
|
|
|
|
|
class TestAuditLogEntity:
|
|
def test_create_audit_log(self):
|
|
entity = AuditLogEntity(
|
|
actor_id=uuid4(),
|
|
actor_type="technical_user",
|
|
action="pharmacy.create",
|
|
resource_type="pharmacy",
|
|
resource_id="PH-001",
|
|
ip_address="192.168.1.1",
|
|
)
|
|
assert entity.action == "pharmacy.create"
|
|
assert entity.resource_type == "pharmacy"
|
|
|
|
def test_enums(self):
|
|
assert ERPType.FARMATIC.value == "farmatic"
|
|
assert ERPType.NIXFARMA.value == "nixfarma"
|
|
assert ERPType.UNYCOP.value == "unycop"
|
|
assert ERPType.MOCK.value == "mock"
|
|
assert SyncStrategy.FULL.value == "full"
|
|
assert SyncStrategy.HYBRID.value == "hybrid"
|
|
assert UserRole.SUPERADMIN.value == "superadmin"
|