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