mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Fix event type names for non-specified Traccar events (#54561)
* Fix event type name * Extend list of types only when all_events is specified * Remove flake8 warnings
This commit is contained in:
parent
2bcfae6998
commit
3e93215a1f
@ -74,6 +74,26 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
DEFAULT_SCAN_INTERVAL = timedelta(seconds=30)
|
DEFAULT_SCAN_INTERVAL = timedelta(seconds=30)
|
||||||
SCAN_INTERVAL = DEFAULT_SCAN_INTERVAL
|
SCAN_INTERVAL = DEFAULT_SCAN_INTERVAL
|
||||||
|
|
||||||
|
EVENTS = [
|
||||||
|
EVENT_DEVICE_MOVING,
|
||||||
|
EVENT_COMMAND_RESULT,
|
||||||
|
EVENT_DEVICE_FUEL_DROP,
|
||||||
|
EVENT_GEOFENCE_ENTER,
|
||||||
|
EVENT_DEVICE_OFFLINE,
|
||||||
|
EVENT_DRIVER_CHANGED,
|
||||||
|
EVENT_GEOFENCE_EXIT,
|
||||||
|
EVENT_DEVICE_OVERSPEED,
|
||||||
|
EVENT_DEVICE_ONLINE,
|
||||||
|
EVENT_DEVICE_STOPPED,
|
||||||
|
EVENT_MAINTENANCE,
|
||||||
|
EVENT_ALARM,
|
||||||
|
EVENT_TEXT_MESSAGE,
|
||||||
|
EVENT_DEVICE_UNKNOWN,
|
||||||
|
EVENT_IGNITION_OFF,
|
||||||
|
EVENT_IGNITION_ON,
|
||||||
|
EVENT_ALL_EVENTS,
|
||||||
|
]
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PARENT_PLATFORM_SCHEMA.extend(
|
PLATFORM_SCHEMA = PARENT_PLATFORM_SCHEMA.extend(
|
||||||
{
|
{
|
||||||
vol.Required(CONF_PASSWORD): cv.string,
|
vol.Required(CONF_PASSWORD): cv.string,
|
||||||
@ -91,27 +111,7 @@ PLATFORM_SCHEMA = PARENT_PLATFORM_SCHEMA.extend(
|
|||||||
),
|
),
|
||||||
vol.Optional(CONF_EVENT, default=[]): vol.All(
|
vol.Optional(CONF_EVENT, default=[]): vol.All(
|
||||||
cv.ensure_list,
|
cv.ensure_list,
|
||||||
[
|
[vol.In(EVENTS)],
|
||||||
vol.Any(
|
|
||||||
EVENT_DEVICE_MOVING,
|
|
||||||
EVENT_COMMAND_RESULT,
|
|
||||||
EVENT_DEVICE_FUEL_DROP,
|
|
||||||
EVENT_GEOFENCE_ENTER,
|
|
||||||
EVENT_DEVICE_OFFLINE,
|
|
||||||
EVENT_DRIVER_CHANGED,
|
|
||||||
EVENT_GEOFENCE_EXIT,
|
|
||||||
EVENT_DEVICE_OVERSPEED,
|
|
||||||
EVENT_DEVICE_ONLINE,
|
|
||||||
EVENT_DEVICE_STOPPED,
|
|
||||||
EVENT_MAINTENANCE,
|
|
||||||
EVENT_ALARM,
|
|
||||||
EVENT_TEXT_MESSAGE,
|
|
||||||
EVENT_DEVICE_UNKNOWN,
|
|
||||||
EVENT_IGNITION_OFF,
|
|
||||||
EVENT_IGNITION_ON,
|
|
||||||
EVENT_ALL_EVENTS,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -203,6 +203,8 @@ class TraccarScanner:
|
|||||||
):
|
):
|
||||||
"""Initialize."""
|
"""Initialize."""
|
||||||
|
|
||||||
|
if EVENT_ALL_EVENTS in event_types:
|
||||||
|
event_types = EVENTS
|
||||||
self._event_types = {camelcase(evt): evt for evt in event_types}
|
self._event_types = {camelcase(evt): evt for evt in event_types}
|
||||||
self._custom_attributes = custom_attributes
|
self._custom_attributes = custom_attributes
|
||||||
self._scan_interval = scan_interval
|
self._scan_interval = scan_interval
|
||||||
|
62
tests/components/traccar/test_device_tracker.py
Normal file
62
tests/components/traccar/test_device_tracker.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
"""The tests for the Traccar device tracker platform."""
|
||||||
|
from datetime import datetime
|
||||||
|
from unittest.mock import AsyncMock, patch
|
||||||
|
|
||||||
|
from homeassistant.components.device_tracker.const import DOMAIN
|
||||||
|
from homeassistant.components.traccar.device_tracker import (
|
||||||
|
PLATFORM_SCHEMA as TRACCAR_PLATFORM_SCHEMA,
|
||||||
|
)
|
||||||
|
from homeassistant.const import (
|
||||||
|
CONF_EVENT,
|
||||||
|
CONF_HOST,
|
||||||
|
CONF_PASSWORD,
|
||||||
|
CONF_PLATFORM,
|
||||||
|
CONF_USERNAME,
|
||||||
|
)
|
||||||
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
|
from tests.common import async_capture_events
|
||||||
|
|
||||||
|
|
||||||
|
async def test_import_events_catch_all(hass):
|
||||||
|
"""Test importing all events and firing them in HA using their event types."""
|
||||||
|
conf_dict = {
|
||||||
|
DOMAIN: TRACCAR_PLATFORM_SCHEMA(
|
||||||
|
{
|
||||||
|
CONF_PLATFORM: "traccar",
|
||||||
|
CONF_HOST: "fake_host",
|
||||||
|
CONF_USERNAME: "fake_user",
|
||||||
|
CONF_PASSWORD: "fake_pass",
|
||||||
|
CONF_EVENT: ["all_events"],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
device = {"id": 1, "name": "abc123"}
|
||||||
|
api_mock = AsyncMock()
|
||||||
|
api_mock.devices = [device]
|
||||||
|
api_mock.get_events.return_value = [
|
||||||
|
{
|
||||||
|
"deviceId": device["id"],
|
||||||
|
"type": "ignitionOn",
|
||||||
|
"serverTime": datetime.utcnow(),
|
||||||
|
"attributes": {},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"deviceId": device["id"],
|
||||||
|
"type": "ignitionOff",
|
||||||
|
"serverTime": datetime.utcnow(),
|
||||||
|
"attributes": {},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
events_ignition_on = async_capture_events(hass, "traccar_ignition_on")
|
||||||
|
events_ignition_off = async_capture_events(hass, "traccar_ignition_off")
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"homeassistant.components.traccar.device_tracker.API", return_value=api_mock
|
||||||
|
):
|
||||||
|
assert await async_setup_component(hass, DOMAIN, conf_dict)
|
||||||
|
|
||||||
|
assert len(events_ignition_on) == 1
|
||||||
|
assert len(events_ignition_off) == 1
|
Loading…
x
Reference in New Issue
Block a user