@@ -633,6 +633,7 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
633633 This test verifies:
634634 1. Existing map_info room names are preserved.
635635 2. Missing rooms from RoomsTrait are added.
636+ 3. map_info fallback names are replaced by RoomsTrait names.
636637 """
637638 map_info = MultiMapsListMapInfo (
638639 map_flag = 0 ,
@@ -648,6 +649,11 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
648649 iot_name_id = "2362042" ,
649650 iot_name = "Bedroom from map_info" ,
650651 ),
652+ MultiMapsListRoom (
653+ id = 20 ,
654+ iot_name_id = "9999001" ,
655+ iot_name = None ,
656+ ),
651657 ],
652658 )
653659
@@ -656,13 +662,15 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
656662 # - segment_id 19 with valid name: exists in map_info, should NOT override
657663 # - segment_id 17 with fallback name: not in map_info, should be added
658664 # - segment_id 18 with valid name: not in map_info, should be added
665+ # - segment_id 20 with valid name: overrides map_info fallback "Room 20"
659666 rooms_trait .rooms = [
660667 NamedRoomMapping (segment_id = 16 , iot_id = "2362048" , name = "Room 16" ), # Exists in map_info, should not override
661668 NamedRoomMapping (
662669 segment_id = 19 , iot_id = "2362042" , name = "Updated Bedroom Name"
663670 ), # Exists in map_info, should not override
664671 NamedRoomMapping (segment_id = 17 , iot_id = "2362044" , name = "Room 17" ), # Not in map_info, should be added
665672 NamedRoomMapping (segment_id = 18 , iot_id = "2362041" , name = "Example room 3" ), # Not in map_info, should be added
673+ NamedRoomMapping (segment_id = 20 , iot_id = "9999001" , name = "Office from rooms_trait" ),
666674 ]
667675
668676 # Mock rooms_trait.refresh to prevent actual device calls
@@ -671,17 +679,17 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
671679
672680 assert result .map_flag == 0
673681 assert result .name == "Test Map"
674- assert len (result .rooms ) == 4
682+ assert len (result .rooms ) == 5
675683
676684 # Sort rooms by segment_id for consistent assertions
677685 sorted_rooms = sorted (result .rooms , key = lambda r : r .segment_id )
678686
679- # Room 16: from map_info, kept (not overridden by Unknown )
687+ # Room 16: from map_info, kept (not overridden by rooms_trait fallback )
680688 assert sorted_rooms [0 ].segment_id == 16
681689 assert sorted_rooms [0 ].name == "Kitchen from map_info"
682690 assert sorted_rooms [0 ].iot_id == "2362048"
683691
684- # Room 17: from rooms_trait with "Unknown", falls back to "Room 17"
692+ # Room 17: from rooms_trait with fallback name, added because not in map_info
685693 assert sorted_rooms [1 ].segment_id == 17
686694 assert sorted_rooms [1 ].name == "Room 17"
687695 assert sorted_rooms [1 ].iot_id == "2362044"
@@ -695,3 +703,8 @@ async def test_refresh_map_info_prefers_map_info_names_and_adds_missing_rooms(
695703 assert sorted_rooms [3 ].segment_id == 19
696704 assert sorted_rooms [3 ].name == "Bedroom from map_info"
697705 assert sorted_rooms [3 ].iot_id == "2362042"
706+
707+ # Room 20: map_info fallback name replaced by rooms_trait name
708+ assert sorted_rooms [4 ].segment_id == 20
709+ assert sorted_rooms [4 ].name == "Office from rooms_trait"
710+ assert sorted_rooms [4 ].iot_id == "9999001"
0 commit comments