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.vesync.internal.handler.responses;
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;
21 import static org.junit.jupiter.api.Assertions.*;
24 * The {@link VesyncManagedDevicesPageTest} class implements unit test case for {@link VesyncLoginResponse}
26 * @author David Goodyear - Initial contribution
29 public class VesyncManagedDevicesPageTest {
31 public final static String testGoodSearchResponsePageBody = "{\n" +
32 " \"traceId\": \"1634387642\",\n" +
34 " \"msg\": \"request success\",\n" +
37 " \"pageSize\": 100,\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" +
57 " \"extension\": {\n" +
58 " \"airQuality\": -1,\n" +
59 " \"airQualityLevel\": 1,\n" +
60 " \"mode\": \"auto\",\n" +
61 " \"fanSpeedLevel\": \"1\"\n" +
63 " \"currentFirmVersion\": null,\n" +
64 " \"subDeviceNo\": \"simSubDevice\",\n" +
65 " \"subDeviceType\": \"simSubDeviceType\",\n" +
66 " \"deviceFirstSetupTime\": \"Oct 15, 2021 3:43:02 PM\"\n" +
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));
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());
100 fail("GSON returned null");