async def test_hold( sut: LightController, monkeypatch: MonkeyPatch, mocker: MockerFixture, attribute_input: str, direction_input: str, previous_direction: str, light_state: Literal["on", "off"], smooth_power_on: bool, expected_calls: int, expected_direction: str, ): value_attribute = 10 monkeypatch.setattr(sut, "get_entity_state", fake_fn(to_return=light_state, async_=True)) monkeypatch.setattr(sut, "get_value_attribute", fake_fn(to_return=value_attribute, async_=True)) monkeypatch.setattr(sut, "get_attribute", fake_fn(to_return=attribute_input, async_=True)) sut.smooth_power_on = smooth_power_on sut.feature_support._supported_features = 0 stepper = MinMaxStepper(1, 10, 10) stepper.previous_direction = previous_direction sut.automatic_steppers = {attribute_input: stepper} super_hold_patch = mocker.patch.object(ReleaseHoldController, "hold") await sut.hold(attribute_input, direction_input) assert super_hold_patch.call_count == expected_calls if expected_calls > 0: super_hold_patch.assert_called_with(attribute_input, expected_direction)
def test_minmax_stepper_get_direction( minmax: Tuple[int, int], value: int, direction: str, previous_direction: str, expected_direction: str, expected_new_previous_direction: str, ): stepper = MinMaxStepper(*minmax, 10) stepper.previous_direction = previous_direction # SUT new_direction = stepper.get_direction(value, direction) # Checks assert new_direction == expected_direction assert stepper.previous_direction == expected_new_previous_direction
async def test_hold( sut, monkeypatch, mocker, attribute_input, direction_input, previous_direction, light_state, smooth_power_on, expected_calls, expected_direction, ): value_attribute = 10 async def fake_get_entity_state(*args, **kwargs): return light_state async def fake_get_value_attribute(*args, **kwargs): return value_attribute async def fake_get_attribute(*args, **kwargs): return attribute_input monkeypatch.setattr(sut, "get_entity_state", fake_get_entity_state) monkeypatch.setattr(sut, "get_value_attribute", fake_get_value_attribute) monkeypatch.setattr(sut, "get_attribute", fake_get_attribute) sut.smooth_power_on = smooth_power_on stepper = MinMaxStepper(1, 10, 10) stepper.previous_direction = previous_direction sut.automatic_steppers = {attribute_input: stepper} super_hold_patch = mocker.patch.object(ReleaseHoldController, "hold") # SUT await sut.hold(attribute_input, direction_input) # Checks assert super_hold_patch.call_count == expected_calls if expected_calls > 0: super_hold_patch.assert_called_with(attribute_input, expected_direction)