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.mqtt.homeassistant.internal;
15 import static org.hamcrest.CoreMatchers.is;
16 import static org.hamcrest.MatcherAssert.assertThat;
17 import static org.hamcrest.core.IsIterableContaining.hasItem;
19 import java.util.Collection;
20 import java.util.Collections;
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.junit.jupiter.api.Test;
24 import org.openhab.core.config.core.Configuration;
27 * @author Jochen Klein - Initial contribution
30 public class HaIDTests {
33 public void testWithoutNode() {
34 HaID subject = new HaID("homeassistant/switch/name/config");
36 assertThat(subject.objectID, is("name"));
38 assertThat(subject.component, is("switch"));
39 assertThat(subject.getTopic("suffix"), is("homeassistant/switch/name/suffix"));
41 Configuration config = new Configuration();
42 subject.toConfig(config);
44 HaID restore = HaID.fromConfig("homeassistant", config);
46 assertThat(restore, is(subject));
48 HandlerConfiguration haConfig = new HandlerConfiguration(subject.baseTopic,
49 Collections.singletonList(subject.toShortTopic()));
51 Collection<HaID> restoreList = HaID.fromConfig(haConfig);
52 assertThat(restoreList, hasItem(new HaID("homeassistant/switch/name/config")));
56 public void testWithNode() {
57 HaID subject = new HaID("homeassistant/switch/node/name/config");
59 assertThat(subject.objectID, is("name"));
61 assertThat(subject.component, is("switch"));
62 assertThat(subject.getTopic("suffix"), is("homeassistant/switch/node/name/suffix"));
64 Configuration config = new Configuration();
65 subject.toConfig(config);
67 HaID restore = HaID.fromConfig("homeassistant", config);
69 assertThat(restore, is(subject));
71 HandlerConfiguration haConfig = new HandlerConfiguration(subject.baseTopic,
72 Collections.singletonList(subject.toShortTopic()));
74 Collection<HaID> restoreList = HaID.fromConfig(haConfig);
75 assertThat(restoreList, hasItem(new HaID("homeassistant/switch/node/name/config")));