2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.boschshc.internal.devices;
15 import static org.mockito.Mockito.verify;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.core.library.types.DecimalType;
20 import org.openhab.core.library.types.OnOffType;
21 import org.openhab.core.thing.ChannelUID;
22 import org.openhab.core.types.UnDefType;
24 import com.google.gson.JsonElement;
25 import com.google.gson.JsonParser;
28 * Abstract test implementation for battery-powered devices.
30 * @author David Pace - Initial contribution
32 * @param <T> type of the battery-powered device to be tested
35 public abstract class AbstractBatteryPoweredDeviceHandlerTest<T extends AbstractBatteryPoweredDeviceHandler>
36 extends AbstractBoschSHCDeviceHandlerTest<T> {
39 public void testProcessUpdate_BatteryLevel_LowBattery() {
40 JsonElement deviceServiceData = JsonParser.parseString("{ \n" + " \"@type\":\"DeviceServiceData\",\n"
41 + " \"path\":\"/devices/hdm:ZigBee:000d6f0004b93361/services/BatteryLevel\",\n"
42 + " \"id\":\"BatteryLevel\",\n" + " \"deviceId\":\"hdm:ZigBee:000d6f0004b93361\",\n"
43 + " \"faults\":{ \n" + " \"entries\":[\n" + " {\n"
44 + " \"type\":\"LOW_BATTERY\",\n" + " \"category\":\"WARNING\"\n" + " }\n"
45 + " ]\n" + " }\n" + "}");
46 getFixture().processUpdate("BatteryLevel", deviceServiceData);
47 verify(getCallback()).stateUpdated(
48 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_BATTERY_LEVEL),
50 verify(getCallback()).stateUpdated(
51 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_LOW_BATTERY), OnOffType.ON);
55 public void testProcessUpdate_BatteryLevel_CriticalLow() {
56 JsonElement deviceServiceData = JsonParser.parseString("{ \n" + " \"@type\":\"DeviceServiceData\",\n"
57 + " \"path\":\"/devices/hdm:ZigBee:000d6f0004b93361/services/BatteryLevel\",\n"
58 + " \"id\":\"BatteryLevel\",\n" + " \"deviceId\":\"hdm:ZigBee:000d6f0004b93361\",\n"
59 + " \"faults\":{ \n" + " \"entries\":[\n" + " {\n"
60 + " \"type\":\"CRITICAL_LOW\",\n" + " \"category\":\"WARNING\"\n"
61 + " }\n" + " ]\n" + " }\n" + "}");
62 getFixture().processUpdate("BatteryLevel", deviceServiceData);
63 verify(getCallback()).stateUpdated(
64 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_BATTERY_LEVEL),
66 verify(getCallback()).stateUpdated(
67 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_LOW_BATTERY), OnOffType.ON);
71 public void testProcessUpdate_BatteryLevel_CriticallyLowBattery() {
72 JsonElement deviceServiceData = JsonParser.parseString("{ \n" + " \"@type\":\"DeviceServiceData\",\n"
73 + " \"path\":\"/devices/hdm:ZigBee:000d6f0004b93361/services/BatteryLevel\",\n"
74 + " \"id\":\"BatteryLevel\",\n" + " \"deviceId\":\"hdm:ZigBee:000d6f0004b93361\",\n"
75 + " \"faults\":{ \n" + " \"entries\":[\n" + " {\n"
76 + " \"type\":\"CRITICALLY_LOW_BATTERY\",\n" + " \"category\":\"WARNING\"\n"
77 + " }\n" + " ]\n" + " }\n" + "}");
78 getFixture().processUpdate("BatteryLevel", deviceServiceData);
79 verify(getCallback()).stateUpdated(
80 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_BATTERY_LEVEL),
82 verify(getCallback()).stateUpdated(
83 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_LOW_BATTERY), OnOffType.ON);
87 public void testProcessUpdate_BatteryLevel_OK() {
88 JsonElement deviceServiceData = JsonParser.parseString("{ \n" + " \"@type\":\"DeviceServiceData\",\n"
89 + " \"path\":\"/devices/hdm:ZigBee:000d6f0004b93361/services/BatteryLevel\",\n"
90 + " \"id\":\"BatteryLevel\",\n" + " \"deviceId\":\"hdm:ZigBee:000d6f0004b93361\" }");
91 getFixture().processUpdate("BatteryLevel", deviceServiceData);
92 verify(getCallback()).stateUpdated(
93 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_BATTERY_LEVEL),
94 new DecimalType(100));
95 verify(getCallback()).stateUpdated(
96 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_LOW_BATTERY), OnOffType.OFF);
100 public void testProcessUpdate_BatteryLevel_NotAvailable() {
101 JsonElement deviceServiceData = JsonParser.parseString("{ \n" + " \"@type\":\"DeviceServiceData\",\n"
102 + " \"path\":\"/devices/hdm:ZigBee:000d6f0004b93361/services/BatteryLevel\",\n"
103 + " \"id\":\"BatteryLevel\",\n" + " \"deviceId\":\"hdm:ZigBee:000d6f0004b93361\",\n"
104 + " \"faults\":{ \n" + " \"entries\":[\n" + " {\n"
105 + " \"type\":\"NOT_AVAILABLE\",\n" + " \"category\":\"WARNING\"\n"
106 + " }\n" + " ]\n" + " }\n" + "}");
107 getFixture().processUpdate("BatteryLevel", deviceServiceData);
108 verify(getCallback()).stateUpdated(
109 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_BATTERY_LEVEL), UnDefType.UNDEF);
110 verify(getCallback()).stateUpdated(
111 new ChannelUID(getThing().getUID(), BoschSHCBindingConstants.CHANNEL_LOW_BATTERY), OnOffType.OFF);