@@ -348,18 +348,47 @@ async def test_async_get_floors_by_alias(
348348 floor1 = floor_registry .async_create ("First floor" , aliases = ("alias_1" , "alias_2" ))
349349 floor2 = floor_registry .async_create ("Second floor" , aliases = ("alias_1" , "alias_3" ))
350350
351- alias1_list = floor_registry .async_get_floors_by_alias ("A l i a s_1" )
352- alias2_list = floor_registry .async_get_floors_by_alias ("A l i a s_2" )
353- alias3_list = floor_registry .async_get_floors_by_alias ("A l i a s_3" )
354-
355- assert len (alias1_list ) == 2
356- assert len (alias2_list ) == 1
357- assert len (alias3_list ) == 1
358-
359- assert floor1 in alias1_list
360- assert floor1 in alias2_list
361- assert floor2 in alias1_list
362- assert floor2 in alias3_list
351+ assert floor_registry .async_get_floors_by_alias ("A l i a s_1" ) == [floor1 , floor2 ]
352+ assert floor_registry .async_get_floors_by_alias ("A l i a s_2" ) == [floor1 ]
353+ assert floor_registry .async_get_floors_by_alias ("A l i a s_3" ) == [floor2 ]
354+
355+
356+ async def test_async_get_floors_by_alias_collisions (
357+ floor_registry : fr .FloorRegistry ,
358+ ) -> None :
359+ """Make sure we can get the floors by alias when the aliases have collisions."""
360+ floor = floor_registry .async_create ("First floor" )
361+ assert floor_registry .async_get_floors_by_alias ("A l i a s 1" ) == []
362+
363+ # Add an alias
364+ updated_floor = floor_registry .async_update (floor .floor_id , aliases = {"alias1" })
365+ assert floor_registry .async_get_floors_by_alias ("A l i a s 1" ) == [updated_floor ]
366+
367+ # Add a colliding alias
368+ updated_floor = floor_registry .async_update (
369+ floor .floor_id , aliases = {"alias1" , "alias 1" }
370+ )
371+ assert floor_registry .async_get_floors_by_alias ("A l i a s 1" ) == [updated_floor ]
372+
373+ # Add a colliding alias
374+ updated_floor = floor_registry .async_update (
375+ floor .floor_id , aliases = {"alias1" , "alias 1" , "alias 1" }
376+ )
377+ assert floor_registry .async_get_floors_by_alias ("A l i a s 1" ) == [updated_floor ]
378+
379+ # Remove a colliding alias
380+ updated_floor = floor_registry .async_update (
381+ floor .floor_id , aliases = {"alias1" , "alias 1" }
382+ )
383+ assert floor_registry .async_get_floors_by_alias ("A l i a s 1" ) == [updated_floor ]
384+
385+ # Remove a colliding alias
386+ updated_floor = floor_registry .async_update (floor .floor_id , aliases = {"alias1" })
387+ assert floor_registry .async_get_floors_by_alias ("A l i a s 1" ) == [updated_floor ]
388+
389+ # Remove all aliases
390+ updated_floor = floor_registry .async_update (floor .floor_id , aliases = {})
391+ assert floor_registry .async_get_floors_by_alias ("A l i a s 1" ) == []
363392
364393
365394async def test_async_get_floor_by_name_not_found (
0 commit comments