test_task_crm/tests/models/test_enums.py

36 lines
1.2 KiB
Python

"""Regression tests ensuring Enum mappings store lowercase values."""
from __future__ import annotations
from enum import StrEnum
from typing import cast
from app.models.activity import Activity, ActivityType
from app.models.deal import Deal, DealStage, DealStatus
from app.models.organization_member import OrganizationMember, OrganizationRole
from sqlalchemy import Enum as SqlEnum
def _values(enum_cls: type[StrEnum]) -> list[str]:
return [member.value for member in enum_cls]
def test_organization_role_column_uses_value_strings() -> None:
role_type = cast(SqlEnum, OrganizationMember.__table__.c.role.type) # noqa: SLF001
assert role_type.enums == _values(OrganizationRole)
def test_deal_status_column_uses_value_strings() -> None:
status_type = cast(SqlEnum, Deal.__table__.c.status.type) # noqa: SLF001
assert status_type.enums == _values(DealStatus)
def test_deal_stage_column_uses_value_strings() -> None:
stage_type = cast(SqlEnum, Deal.__table__.c.stage.type) # noqa: SLF001
assert stage_type.enums == _values(DealStage)
def test_activity_type_column_uses_value_strings() -> None:
activity_type = cast(SqlEnum, Activity.__table__.c.type.type) # noqa: SLF001
assert activity_type.enums == _values(ActivityType)