"""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)