mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
137 lines
3.4 KiB
Python
137 lines
3.4 KiB
Python
from typing import Any, cast
|
|
|
|
import sqlalchemy as sa
|
|
|
|
from infrastructure.postgres.magic_plan_tables import (
|
|
MagicPlanDoorModel,
|
|
MagicPlanFloorModel,
|
|
MagicPlanPlanModel,
|
|
MagicPlanRoomModel,
|
|
MagicPlanWindowModel,
|
|
)
|
|
|
|
|
|
def _table(model: type[Any]) -> sa.Table:
|
|
return cast(sa.Table, getattr(model, "__table__"))
|
|
|
|
# --- MagicPlanPlan ---
|
|
|
|
|
|
def test_plan_table_name() -> None:
|
|
assert MagicPlanPlanModel.__tablename__ == "magic_plan_plan"
|
|
|
|
|
|
def test_plan_has_magic_plan_uid_column() -> None:
|
|
assert "magic_plan_uid" in _table(MagicPlanPlanModel).columns
|
|
|
|
|
|
def test_plan_magic_plan_uid_is_unique() -> None:
|
|
t = _table(MagicPlanPlanModel)
|
|
col = t.columns["magic_plan_uid"]
|
|
has_unique_constraint = any(
|
|
isinstance(c, sa.UniqueConstraint) and "magic_plan_uid" in c.columns
|
|
for c in t.constraints
|
|
)
|
|
assert has_unique_constraint or col.unique
|
|
|
|
|
|
def test_plan_instantiation() -> None:
|
|
plan = MagicPlanPlanModel(
|
|
magic_plan_uid="uid-123", name="Test", address="1 High St", postcode="SW1A 1AA"
|
|
)
|
|
assert plan.magic_plan_uid == "uid-123"
|
|
assert plan.name == "Test"
|
|
assert plan.postcode == "SW1A 1AA"
|
|
|
|
|
|
# --- MagicPlanFloor ---
|
|
|
|
|
|
def test_floor_table_name() -> None:
|
|
assert MagicPlanFloorModel.__tablename__ == "magic_plan_floor"
|
|
|
|
|
|
def test_floor_fk_column_name() -> None:
|
|
assert "magic_plan_plan_id" in _table(MagicPlanFloorModel).columns
|
|
|
|
|
|
def test_floor_has_level() -> None:
|
|
floor = MagicPlanFloorModel(magic_plan_plan_id=1, level=0)
|
|
assert floor.level == 0
|
|
|
|
|
|
# --- MagicPlanRoom ---
|
|
|
|
|
|
def test_room_table_name() -> None:
|
|
assert MagicPlanRoomModel.__tablename__ == "magic_plan_room"
|
|
|
|
|
|
def test_room_fk_column_name() -> None:
|
|
assert "magic_plan_floor_id" in _table(MagicPlanRoomModel).columns
|
|
|
|
|
|
def test_room_has_measurement_columns() -> None:
|
|
cols = _table(MagicPlanRoomModel).columns
|
|
assert "width_m" in cols
|
|
assert "length_m" in cols
|
|
assert "area_m2" in cols
|
|
|
|
|
|
def test_room_instantiation() -> None:
|
|
room = MagicPlanRoomModel(
|
|
magic_plan_floor_id=1, name="Kitchen", width_m=2.67, length_m=2.98, area_m2=7.95
|
|
)
|
|
assert room.name == "Kitchen"
|
|
assert room.width_m == 2.67
|
|
|
|
|
|
# --- MagicPlanWindow ---
|
|
|
|
|
|
def test_window_table_name() -> None:
|
|
assert MagicPlanWindowModel.__tablename__ == "magic_plan_window"
|
|
|
|
|
|
def test_window_fk_column_name() -> None:
|
|
assert "magic_plan_room_id" in _table(MagicPlanWindowModel).columns
|
|
|
|
|
|
def test_window_has_measurement_columns() -> None:
|
|
cols = _table(MagicPlanWindowModel).columns
|
|
assert "width_m" in cols
|
|
assert "height_m" in cols
|
|
assert "area_m2" in cols
|
|
|
|
|
|
def test_window_instantiation() -> None:
|
|
window = MagicPlanWindowModel(
|
|
magic_plan_room_id=1,
|
|
width_m=1.4,
|
|
height_m=1.2,
|
|
area_m2=1.68,
|
|
)
|
|
assert window.width_m == 1.4
|
|
|
|
|
|
# --- MagicPlanDoor ---
|
|
|
|
|
|
def test_door_table_name() -> None:
|
|
assert MagicPlanDoorModel.__tablename__ == "magic_plan_door"
|
|
|
|
|
|
def test_door_fk_column_name() -> None:
|
|
assert "magic_plan_room_id" in _table(MagicPlanDoorModel).columns
|
|
|
|
|
|
def test_door_has_width_mm_and_type() -> None:
|
|
cols = _table(MagicPlanDoorModel).columns
|
|
assert "width_mm" in cols
|
|
assert "type" in cols
|
|
|
|
|
|
def test_door_instantiation() -> None:
|
|
door = MagicPlanDoorModel(magic_plan_room_id=1, width_mm=790.0, type="hinged")
|
|
assert door.width_mm == 790.0
|
|
assert door.type == "hinged"
|