mirror of
https://github.com/esphome/esphome.git
synced 2026-09-13 08:17:34 +00:00
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
"""Regression test: lvgl.dropdown.update with selected_index must fire on_value/on_update.
|
|
|
|
LvSelect (backing both dropdown and roller) did not set `value_property`, so the generic
|
|
update-action machinery in automation.py never sent the synthetic update event for a
|
|
`selected_index:` change made via `lvgl.dropdown.update`/`lvgl.roller.update`, unlike `value:`
|
|
on number widgets or `text:` on text widgets. Fixed by setting `LvSelect.value_property` to
|
|
`CONF_SELECTED_INDEX`.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from esphome.__main__ import generate_cpp_contents
|
|
from esphome.config import read_config
|
|
from esphome.core import CORE
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def main_cpp(request: pytest.FixtureRequest) -> str:
|
|
config_path = (
|
|
Path(request.fspath).parent / "config" / "dropdown_update_fires_event_test.yaml"
|
|
)
|
|
original_path = CORE.config_path
|
|
try:
|
|
CORE.config_path = config_path
|
|
CORE.config = read_config({})
|
|
generate_cpp_contents(CORE.config)
|
|
return CORE.cpp_main_section
|
|
finally:
|
|
CORE.config_path = original_path
|
|
CORE.reset()
|
|
|
|
|
|
def test_dropdown_update_sends_update_event(main_cpp: str) -> None:
|
|
assert (
|
|
"lv_obj_send_event(test_dropdown->obj, lvgl::lv_update_event, nullptr)"
|
|
in main_cpp
|
|
)
|