Skip to content

Commit 5815a6c

Browse files
committed
test: add test for setting end time when start time is not set
1 parent 454199c commit 5815a6c

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

tests/devices/traits/v1/test_dnd.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,43 @@ async def test_set_end_time_success(dnd_trait: DoNotDisturbTrait, mock_rpc_chann
181181
assert dnd_trait.end_time == datetime.time(9, 45)
182182

183183

184+
async def test_set_end_time_when_start_time_not_set(dnd_trait: DoNotDisturbTrait, mock_rpc_channel: AsyncMock) -> None:
185+
"""Test setting end time when start time is not set."""
186+
mock_rpc_channel.send_command.side_effect = [
187+
# Response for SET_DND_TIMER
188+
{},
189+
# Response for GET_DND_TIMER after updating
190+
{
191+
"startHour": None,
192+
"startMinute": None,
193+
"endHour": 9,
194+
"endMinute": 45,
195+
"enabled": 1,
196+
},
197+
]
198+
199+
# Set up initial trait state so it does NOT have a start time
200+
dnd_trait.start_hour = None
201+
dnd_trait.start_minute = None
202+
dnd_trait.end_hour = None
203+
dnd_trait.end_minute = None
204+
205+
await dnd_trait.set_end_time(datetime.time(9, 45))
206+
207+
expected_params = [None, None, 9, 45]
208+
assert mock_rpc_channel.send_command.mock_calls == [
209+
call(RoborockCommand.SET_DND_TIMER, params=expected_params),
210+
call(RoborockCommand.GET_DND_TIMER),
211+
]
212+
213+
assert dnd_trait.start_hour is None
214+
assert dnd_trait.start_minute is None
215+
assert dnd_trait.end_hour == 9
216+
assert dnd_trait.end_minute == 45
217+
assert dnd_trait.end_time == datetime.time(9, 45)
218+
assert dnd_trait.start_time is None
219+
220+
184221
async def test_clear_dnd_timer_success(dnd_trait: DoNotDisturbTrait, mock_rpc_channel: AsyncMock) -> None:
185222
"""Test successfully clearing DnD timer settings."""
186223
mock_rpc_channel.send_command.side_effect = [

0 commit comments

Comments
 (0)