@@ -421,13 +421,6 @@ async def test_attributes(
421421 assert ATTR_CURRENT_POSITION not in state .attributes
422422 assert ATTR_CURRENT_TILT_POSITION not in state .attributes
423423
424- # Group member has set assumed_state
425- hass .states .async_set (DEMO_TILT , CoverState .CLOSED , {ATTR_ASSUMED_STATE : True })
426- await hass .async_block_till_done ()
427-
428- state = hass .states .get (COVER_GROUP )
429- assert ATTR_ASSUMED_STATE not in state .attributes
430-
431424 # Test entity registry integration
432425 entry = entity_registry .async_get (COVER_GROUP )
433426 assert entry
@@ -859,6 +852,61 @@ async def test_is_opening_closing(hass: HomeAssistant) -> None:
859852 assert hass .states .get (COVER_GROUP ).state == CoverState .OPENING
860853
861854
855+ @pytest .mark .parametrize ("config_count" , [(CONFIG_ATTRIBUTES , 1 )])
856+ @pytest .mark .usefixtures ("setup_comp" )
857+ async def test_assumed_state (hass : HomeAssistant ) -> None :
858+ """Test assumed_state attribute behavior."""
859+ # No members with assumed_state -> group doesn't have assumed_state in attributes
860+ hass .states .async_set (DEMO_COVER , CoverState .OPEN , {})
861+ hass .states .async_set (DEMO_COVER_POS , CoverState .OPEN , {})
862+ hass .states .async_set (DEMO_COVER_TILT , CoverState .CLOSED , {})
863+ hass .states .async_set (DEMO_TILT , CoverState .CLOSED , {})
864+ await hass .async_block_till_done ()
865+
866+ state = hass .states .get (COVER_GROUP )
867+ assert ATTR_ASSUMED_STATE not in state .attributes
868+
869+ # One member with assumed_state=True -> group has assumed_state=True
870+ hass .states .async_set (DEMO_COVER , CoverState .OPEN , {ATTR_ASSUMED_STATE : True })
871+ await hass .async_block_till_done ()
872+
873+ state = hass .states .get (COVER_GROUP )
874+ assert state .attributes .get (ATTR_ASSUMED_STATE ) is True
875+
876+ # Multiple members with assumed_state=True -> group has assumed_state=True
877+ hass .states .async_set (
878+ DEMO_COVER_TILT , CoverState .CLOSED , {ATTR_ASSUMED_STATE : True }
879+ )
880+ hass .states .async_set (DEMO_TILT , CoverState .CLOSED , {ATTR_ASSUMED_STATE : True })
881+ await hass .async_block_till_done ()
882+
883+ state = hass .states .get (COVER_GROUP )
884+ assert state .attributes .get (ATTR_ASSUMED_STATE ) is True
885+
886+ # Unavailable member with assumed_state=True -> group has assumed_state=True
887+ hass .states .async_set (DEMO_COVER , CoverState .OPEN , {})
888+ hass .states .async_set (DEMO_COVER_TILT , CoverState .CLOSED , {})
889+ hass .states .async_set (DEMO_TILT , STATE_UNAVAILABLE , {ATTR_ASSUMED_STATE : True })
890+ await hass .async_block_till_done ()
891+
892+ state = hass .states .get (COVER_GROUP )
893+ assert state .attributes .get (ATTR_ASSUMED_STATE ) is True
894+
895+ # Unknown member with assumed_state=True -> group has assumed_state=True
896+ hass .states .async_set (DEMO_TILT , STATE_UNKNOWN , {ATTR_ASSUMED_STATE : True })
897+ await hass .async_block_till_done ()
898+
899+ state = hass .states .get (COVER_GROUP )
900+ assert state .attributes .get (ATTR_ASSUMED_STATE ) is True
901+
902+ # All members without assumed_state -> group doesn't have assumed_state in attributes
903+ hass .states .async_set (DEMO_TILT , CoverState .CLOSED , {})
904+ await hass .async_block_till_done ()
905+
906+ state = hass .states .get (COVER_GROUP )
907+ assert ATTR_ASSUMED_STATE not in state .attributes
908+
909+
862910async def test_nested_group (hass : HomeAssistant ) -> None :
863911 """Test nested cover group."""
864912 await async_setup_component (
0 commit comments