]> git.basschouten.com Git - openhab-addons.git/blob
9a3fac40a2b0c7d07d10c2c3d4d8bc69195bf817
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.vesync.internal.handler.responses;
14
15 import org.eclipse.jdt.annotation.NonNullByDefault;
16 import org.junit.jupiter.api.Test;
17 import org.openhab.binding.vesync.internal.VeSyncConstants;
18 import org.openhab.binding.vesync.internal.dto.responses.VesyncLoginResponse;
19 import org.openhab.binding.vesync.internal.dto.responses.VesyncManagedDevicesPage;
20
21 import static org.junit.jupiter.api.Assertions.*;
22
23 /**
24  * The {@link VesyncManagedDevicesPageTest} class implements unit test case for {@link VesyncLoginResponse}
25  *
26  * @author David Goodyear - Initial contribution
27  */
28 @NonNullByDefault
29 public class VesyncManagedDevicesPageTest {
30
31     public final static String testGoodSearchResponsePageBody = "{\n" +
32             "    \"traceId\": \"1634387642\",\n" +
33             "    \"code\": 0,\n" +
34             "    \"msg\": \"request success\",\n" +
35             "    \"result\": {\n" +
36             "        \"total\": 2,\n" +
37             "        \"pageSize\": 100,\n" +
38             "        \"pageNo\": 1,\n" +
39             "        \"list\": [\n" +
40             "            {\n" +
41             "                \"deviceRegion\": \"EU\",\n" +
42             "                \"isOwner\": true,\n" +
43             "                \"authKey\": null,\n" +
44             "                \"deviceName\": \"Air Filter\",\n" +
45             "                \"deviceImg\": \"https://image.vesync.com/defaultImages/Core_400S_Series/icon_core400s_purifier_160.png\",\n" +
46             "                \"cid\": \"cidValue1\",\n" +
47             "                \"deviceStatus\": \"on\",\n" +
48             "                \"connectionStatus\": \"online\",\n" +
49             "                \"connectionType\": \"WiFi+BTOnboarding+BTNotify\",\n" +
50             "                \"deviceType\": \"Core400S\",\n" +
51             "                \"type\": \"wifi-air\",\n" +
52             "                \"uuid\": \"abcdefab-1234-1234-abcd-123498761234\",\n" +
53             "                \"configModule\": \"WiFiBTOnboardingNotify_AirPurifier_Core400S_EU\",\n" +
54             "                \"macID\": \"ab:cd:ef:12:34:56\",\n" +
55             "                \"mode\": \"simModeData\",\n" +
56             "                \"speed\": 4,\n" +
57             "                \"extension\": {\n" +
58             "                    \"airQuality\": -1,\n" +
59             "                    \"airQualityLevel\": 1,\n" +
60             "                    \"mode\": \"auto\",\n" +
61             "                    \"fanSpeedLevel\": \"1\"\n" +
62             "                },\n" +
63             "                \"currentFirmVersion\": null,\n" +
64             "                \"subDeviceNo\": \"simSubDevice\",\n" +
65             "                \"subDeviceType\": \"simSubDeviceType\",\n" +
66             "                \"deviceFirstSetupTime\": \"Oct 15, 2021 3:43:02 PM\"\n" +
67             "            }\n" +
68             "        ]\n" +
69             "    }\n" +
70             "}";
71
72     @Test
73     public void testParseManagedDevicesSearchGoodResponse() {
74         VesyncManagedDevicesPage response = VeSyncConstants.GSON.fromJson(testGoodSearchResponsePageBody,
75                 VesyncManagedDevicesPage.class);
76         if (response != null) {
77             assertEquals("1634387642", response.getTraceId());
78             assertEquals("1", response.result.getPageNo());
79             assertEquals("100", response.result.getPageSize());
80             assertEquals("2", response.result.getTotal());
81             assertEquals("1", String.valueOf(response.result.list.length));
82
83             assertEquals("EU", response.result.list[0].getDeviceRegion());
84             assertEquals("Air Filter", response.result.list[0].getDeviceName());
85             assertEquals("https://image.vesync.com/defaultImages/Core_400S_Series/icon_core400s_purifier_160.png", response.result.list[0].getDeviceImg());
86             assertEquals("on", response.result.list[0].getDeviceStatus());
87             assertEquals("online", response.result.list[0].getConnectionStatus());
88             assertEquals("WiFi+BTOnboarding+BTNotify", response.result.list[0].getConnectionType());
89             assertEquals("Core400S", response.result.list[0].getDeviceType());
90             assertEquals("wifi-air", response.result.list[0].getType());
91             assertEquals("abcdefab-1234-1234-abcd-123498761234", response.result.list[0].getUuid());
92             assertEquals("WiFiBTOnboardingNotify_AirPurifier_Core400S_EU", response.result.list[0].getConfigModule());
93             assertEquals("simModeData",response.result.list[0].getMode());
94             assertEquals("simSubDevice", response.result.list[0].getSubDeviceNo());
95             assertEquals("simSubDeviceType", response.result.list[0].getSubDeviceType());
96             assertEquals( "4", response.result.list[0].getSpeed());
97             assertEquals("cidValue1",response.result.list[0].getCid());
98             assertEquals("ab:cd:ef:12:34:56", response.result.list[0].getMacId());
99         } else {
100             fail("GSON returned null");
101         }
102     }
103 }