11"""Tests for the floor registry."""
22
3- from datetime import datetime
3+ from datetime import UTC , datetime
44from functools import partial
55import re
66from typing import Any
@@ -478,11 +478,88 @@ async def test_migration_from_1_1(
478478 "floors" : [
479479 {
480480 "floor_id" : "12345A" ,
481- "name" : "mock " ,
481+ "name" : "AA floor no level floor " ,
482482 "aliases" : [],
483483 "icon" : None ,
484484 "level" : None ,
485- }
485+ },
486+ {
487+ "floor_id" : "12345B" ,
488+ "name" : "CC floor no level floor" ,
489+ "aliases" : [],
490+ "icon" : None ,
491+ "level" : None ,
492+ },
493+ {
494+ "floor_id" : "12345C" ,
495+ "name" : "bb floor no level floor" ,
496+ "aliases" : [],
497+ "icon" : None ,
498+ "level" : None ,
499+ },
500+ {
501+ "floor_id" : "12345D" ,
502+ "name" : "AA floor level -1" ,
503+ "aliases" : [],
504+ "icon" : None ,
505+ "level" : - 1 ,
506+ },
507+ {
508+ "floor_id" : "12345E" ,
509+ "name" : "CC floor level -1" ,
510+ "aliases" : [],
511+ "icon" : None ,
512+ "level" : - 1 ,
513+ },
514+ {
515+ "floor_id" : "12345F" ,
516+ "name" : "bb floor level -1" ,
517+ "aliases" : [],
518+ "icon" : None ,
519+ "level" : - 1 ,
520+ },
521+ {
522+ "floor_id" : "12345G" ,
523+ "name" : "AA floor level 0" ,
524+ "aliases" : [],
525+ "icon" : None ,
526+ "level" : 0 ,
527+ },
528+ {
529+ "floor_id" : "12345H" ,
530+ "name" : "CC floor level 0" ,
531+ "aliases" : [],
532+ "icon" : None ,
533+ "level" : 0 ,
534+ },
535+ {
536+ "floor_id" : "12345I" ,
537+ "name" : "bb floor level 0" ,
538+ "aliases" : [],
539+ "icon" : None ,
540+ "level" : 0 ,
541+ },
542+ {
543+ "floor_id" : "12345J" ,
544+ "name" : "AA floor level 1" ,
545+ "aliases" : [],
546+ "icon" : None ,
547+ "level" : 1 ,
548+ },
549+ {
550+ "floor_id" : "12345K" ,
551+ "name" : "CC floor level 1" ,
552+ "aliases" : [],
553+ "icon" : None ,
554+ "level" : 1 ,
555+ },
556+ {
557+ "floor_id" : "12345L" ,
558+ "name" : "bb floor level 1" ,
559+ "aliases" : [],
560+ "icon" : None ,
561+ "level" : 1 ,
562+ },
486563 ]
487564 },
488565 }
@@ -491,9 +568,121 @@ async def test_migration_from_1_1(
491568 registry = fr .async_get (hass )
492569
493570 # Test data was loaded
494- entry = registry .async_get_floor_by_name ("mock " )
571+ entry = registry .async_get_floor_by_name ("AA floor no level floor " )
495572 assert entry .floor_id == "12345A"
496573
574+ # Check sort order
575+ assert list (registry .async_list_floors ()) == [
576+ fr .FloorEntry (
577+ name = "AA floor level 1" ,
578+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
579+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
580+ aliases = set (),
581+ floor_id = "12345J" ,
582+ icon = None ,
583+ level = 1 ,
584+ ),
585+ fr .FloorEntry (
586+ name = "bb floor level 1" ,
587+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
588+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
589+ aliases = set (),
590+ floor_id = "12345L" ,
591+ icon = None ,
592+ level = 1 ,
593+ ),
594+ fr .FloorEntry (
595+ name = "CC floor level 1" ,
596+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
597+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
598+ aliases = set (),
599+ floor_id = "12345K" ,
600+ icon = None ,
601+ level = 1 ,
602+ ),
603+ fr .FloorEntry (
604+ name = "AA floor level 0" ,
605+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
606+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
607+ aliases = set (),
608+ floor_id = "12345G" ,
609+ icon = None ,
610+ level = 0 ,
611+ ),
612+ fr .FloorEntry (
613+ name = "bb floor level 0" ,
614+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
615+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
616+ aliases = set (),
617+ floor_id = "12345I" ,
618+ icon = None ,
619+ level = 0 ,
620+ ),
621+ fr .FloorEntry (
622+ name = "CC floor level 0" ,
623+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
624+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
625+ aliases = set (),
626+ floor_id = "12345H" ,
627+ icon = None ,
628+ level = 0 ,
629+ ),
630+ fr .FloorEntry (
631+ name = "AA floor level -1" ,
632+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
633+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
634+ aliases = set (),
635+ floor_id = "12345D" ,
636+ icon = None ,
637+ level = - 1 ,
638+ ),
639+ fr .FloorEntry (
640+ name = "bb floor level -1" ,
641+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
642+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
643+ aliases = set (),
644+ floor_id = "12345F" ,
645+ icon = None ,
646+ level = - 1 ,
647+ ),
648+ fr .FloorEntry (
649+ name = "CC floor level -1" ,
650+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
651+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
652+ aliases = set (),
653+ floor_id = "12345E" ,
654+ icon = None ,
655+ level = - 1 ,
656+ ),
657+ fr .FloorEntry (
658+ name = "AA floor no level floor" ,
659+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
660+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
661+ aliases = set (),
662+ floor_id = "12345A" ,
663+ icon = None ,
664+ level = None ,
665+ ),
666+ fr .FloorEntry (
667+ name = "bb floor no level floor" ,
668+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
669+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
670+ aliases = set (),
671+ floor_id = "12345C" ,
672+ icon = None ,
673+ level = None ,
674+ ),
675+ fr .FloorEntry (
676+ name = "CC floor no level floor" ,
677+ created_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
678+ modified_at = datetime (1970 , 1 , 1 , 0 , 0 , tzinfo = UTC ),
679+ aliases = set (),
680+ floor_id = "12345B" ,
681+ icon = None ,
682+ level = None ,
683+ ),
684+ ]
685+
497686 # Check we store migrated data
498687 await flush_store (registry ._store )
499688 assert hass_storage [fr .STORAGE_KEY ] == {
@@ -504,13 +693,112 @@ async def test_migration_from_1_1(
504693 "floors" : [
505694 {
506695 "aliases" : [],
696+ "created_at" : "1970-01-01T00:00:00+00:00" ,
697+ "floor_id" : "12345J" ,
698+ "icon" : None ,
699+ "level" : 1 ,
700+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
701+ "name" : "AA floor level 1" ,
702+ },
703+ {
704+ "aliases" : [],
705+ "created_at" : "1970-01-01T00:00:00+00:00" ,
706+ "floor_id" : "12345L" ,
507707 "icon" : None ,
708+ "level" : 1 ,
709+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
710+ "name" : "bb floor level 1" ,
711+ },
712+ {
713+ "aliases" : [],
714+ "created_at" : "1970-01-01T00:00:00+00:00" ,
715+ "floor_id" : "12345K" ,
716+ "icon" : None ,
717+ "level" : 1 ,
718+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
719+ "name" : "CC floor level 1" ,
720+ },
721+ {
722+ "aliases" : [],
723+ "created_at" : "1970-01-01T00:00:00+00:00" ,
724+ "floor_id" : "12345G" ,
725+ "icon" : None ,
726+ "level" : 0 ,
727+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
728+ "name" : "AA floor level 0" ,
729+ },
730+ {
731+ "aliases" : [],
732+ "created_at" : "1970-01-01T00:00:00+00:00" ,
733+ "floor_id" : "12345I" ,
734+ "icon" : None ,
735+ "level" : 0 ,
736+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
737+ "name" : "bb floor level 0" ,
738+ },
739+ {
740+ "aliases" : [],
741+ "created_at" : "1970-01-01T00:00:00+00:00" ,
742+ "floor_id" : "12345H" ,
743+ "icon" : None ,
744+ "level" : 0 ,
745+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
746+ "name" : "CC floor level 0" ,
747+ },
748+ {
749+ "aliases" : [],
750+ "created_at" : "1970-01-01T00:00:00+00:00" ,
751+ "floor_id" : "12345D" ,
752+ "icon" : None ,
753+ "level" : - 1 ,
754+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
755+ "name" : "AA floor level -1" ,
756+ },
757+ {
758+ "aliases" : [],
759+ "created_at" : "1970-01-01T00:00:00+00:00" ,
760+ "floor_id" : "12345F" ,
761+ "icon" : None ,
762+ "level" : - 1 ,
763+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
764+ "name" : "bb floor level -1" ,
765+ },
766+ {
767+ "aliases" : [],
768+ "created_at" : "1970-01-01T00:00:00+00:00" ,
769+ "floor_id" : "12345E" ,
770+ "icon" : None ,
771+ "level" : - 1 ,
772+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
773+ "name" : "CC floor level -1" ,
774+ },
775+ {
776+ "aliases" : [],
777+ "created_at" : "1970-01-01T00:00:00+00:00" ,
508778 "floor_id" : "12345A" ,
779+ "icon" : None ,
509780 "level" : None ,
510- "name" : "mock" ,
781+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
782+ "name" : "AA floor no level floor" ,
783+ },
784+ {
785+ "aliases" : [],
511786 "created_at" : "1970-01-01T00:00:00+00:00" ,
787+ "floor_id" : "12345C" ,
788+ "icon" : None ,
789+ "level" : None ,
512790 "modified_at" : "1970-01-01T00:00:00+00:00" ,
513- }
791+ "name" : "bb floor no level floor" ,
792+ },
793+ {
794+ "aliases" : [],
795+ "created_at" : "1970-01-01T00:00:00+00:00" ,
796+ "floor_id" : "12345B" ,
797+ "icon" : None ,
798+ "level" : None ,
799+ "modified_at" : "1970-01-01T00:00:00+00:00" ,
800+ "name" : "CC floor no level floor" ,
801+ },
514802 ]
515803 },
516804 }
0 commit comments