gmao/tests/integration/test_room_profiles_checkpoint_b.py

58 lines
3 KiB
Python

"""Couverture métier du checkpoint B : profils sans création implicite."""
from app_new import db
from app_new.core.models.college import Building, Zone, Room, RoomProfile, RoomProfileItem
from app_new.core.models.equipment import Equipment
from app_new.core.services.equipment_creation import create_equipment
from app_new.core.models.equipment import EquipmentCategory
def test_room_profile_is_editable_and_application_uses_shared_service(authenticated_client, app):
with app.app_context():
building = Building(name="TEST_UI_020_B_BUILDING")
db.session.add(building)
db.session.flush()
zone = Zone(name="TEST_UI_020_B_ZONE", building_id=building.id)
category = EquipmentCategory(name="TEST_UI_020_B_LUMINAIRE")
db.session.add_all([zone, category])
db.session.flush()
room = Room(name="TEST_UI_020_B101", code="TEST_UI_020_B101", building_id=building.id, zone_id=zone.id)
db.session.add(room)
db.session.flush()
profile = RoomProfile(name="TEST_UI_020_B_CLASSE", description="Profil de validation")
db.session.add(profile)
db.session.flush()
item = RoomProfileItem(profile_id=profile.id, label="Luminaire", category_id=category.id, quantity=10, is_group=True)
db.session.add(item)
db.session.commit()
profile_id, room_id, item_id = profile.id, room.id, item.id
assert RoomProfile.query.get(profile_id) is not None
assert Equipment.query.filter_by(room_id=room_id).count() == 0
with app.app_context():
item = RoomProfileItem.query.get(item_id)
created = create_equipment(name=item.label, category_id=item.category_id,
room_id=room_id, quantity=4, is_group=item.is_group,
create_schedule=False)
db.session.commit()
assert created.id is not None
assert Equipment.query.filter_by(room_id=room_id).count() == 1
assert Equipment.query.filter_by(room_id=room_id).one().quantity == 4
def test_bulk_room_can_reference_profile_without_creating_equipment(authenticated_client, app):
with app.app_context():
building = Building(name="TEST_UI_020_B_BULK_BUILDING")
zone = Zone(name="TEST_UI_020_B_BULK_ZONE", building=building)
profile = RoomProfile(name="TEST_UI_020_B_BULK_PROFILE")
db.session.add_all([building, zone, profile])
db.session.commit()
building_id, zone_id, profile_id = building.id, zone.id, profile.id
with app.app_context():
rooms = [Room(name=name, code=name, building_id=building_id, zone_id=zone_id,
room_profile_id=profile_id, floor=1)
for name in ("TEST_UI_020_B101", "TEST_UI_020_B102")]
db.session.add_all(rooms)
db.session.commit()
saved = Room.query.filter(Room.building_id == building_id, Room.room_profile_id == profile_id).all()
assert len(saved) == 2
assert Equipment.query.filter(Equipment.room_id.in_([room.id for room in saved])).count() == 0