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
2 changed files with 85 additions and 21 deletions
|
@ -74,6 +74,26 @@ _LOGGER = logging.getLogger(__name__)
|
|||
DEFAULT_SCAN_INTERVAL = timedelta(seconds=30)
|
||||
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(
|
||||
{
|
||||
vol.Required(CONF_PASSWORD): cv.string,
|
||||
|
@ -91,27 +111,7 @@ PLATFORM_SCHEMA = PARENT_PLATFORM_SCHEMA.extend(
|
|||
),
|
||||
vol.Optional(CONF_EVENT, default=[]): vol.All(
|
||||
cv.ensure_list,
|
||||
[
|
||||
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,
|
||||
)
|
||||
],
|
||||
[vol.In(EVENTS)],
|
||||
),
|
||||
}
|
||||
)
|
||||
|
@ -203,6 +203,8 @@ class TraccarScanner:
|
|||
):
|
||||
"""Initialize."""
|
||||
|
||||
if EVENT_ALL_EVENTS in event_types:
|
||||
event_types = EVENTS
|
||||
self._event_types = {camelcase(evt): evt for evt in event_types}
|
||||
self._custom_attributes = custom_attributes
|
||||
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…
Add table
Reference in a new issue