mirror of
https://github.com/esphome/esphome.git
synced 2026-08-22 22:26:21 +00:00
62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
"""Tests for the shared io expander interrupt_pin validator."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib
|
|
|
|
import pytest
|
|
|
|
from esphome import config_validation as cv
|
|
from esphome.components.esp32 import KEY_BOARD, KEY_VARIANT, VARIANT_ESP32
|
|
from esphome.components.gpio_expander import validate_interrupt_pin
|
|
from esphome.const import PlatformFramework
|
|
from tests.component_tests.types import SetCoreConfigCallable
|
|
|
|
|
|
@pytest.fixture
|
|
def stage_esp32(set_core_config: SetCoreConfigCallable) -> None:
|
|
set_core_config(
|
|
PlatformFramework.ESP32_IDF,
|
|
platform_data={KEY_BOARD: "esp32dev", KEY_VARIANT: VARIANT_ESP32},
|
|
)
|
|
|
|
|
|
def test_plain_pin_accepted(stage_esp32: None) -> None:
|
|
value = validate_interrupt_pin(
|
|
{"number": 16, "mode": {"input": True, "pullup": True}}
|
|
)
|
|
assert value["number"] == 16
|
|
|
|
|
|
def test_inverted_rejected(stage_esp32: None) -> None:
|
|
with pytest.raises(cv.Invalid, match="'inverted: true' is not supported"):
|
|
validate_interrupt_pin({"number": 16, "inverted": True})
|
|
|
|
|
|
def test_allow_other_uses_rejected(stage_esp32: None) -> None:
|
|
with pytest.raises(cv.Invalid, match="'allow_other_uses: true' is not supported"):
|
|
validate_interrupt_pin({"number": 16, "allow_other_uses": True})
|
|
|
|
|
|
# mcp23017 covers the shared mcp23xxx_base schema
|
|
@pytest.mark.parametrize(
|
|
"component",
|
|
[
|
|
"pcf8574",
|
|
"pca9554",
|
|
"tca9555",
|
|
"pca6416a",
|
|
"pi4ioe5v6408",
|
|
"mcp23016",
|
|
"mcp23017",
|
|
],
|
|
)
|
|
def test_component_schemas_route_through_validator(
|
|
stage_esp32: None, component: str
|
|
) -> None:
|
|
module = importlib.import_module(f"esphome.components.{component}")
|
|
with pytest.raises(cv.Invalid, match="'inverted: true' is not supported"):
|
|
module.CONFIG_SCHEMA(
|
|
{"id": "expander_hub", "interrupt_pin": {"number": 16, "inverted": True}}
|
|
)
|