]> git.basschouten.com Git - openhab-addons.git/blob
fa527080e51ff58984e44d19469aa6e97273fdb1
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 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.persistence.influxdb.internal;
14
15 import static org.mockito.ArgumentMatchers.any;
16 import static org.mockito.Mockito.*;
17
18 import java.util.Map;
19
20 import org.eclipse.jdt.annotation.DefaultLocation;
21 import org.eclipse.jdt.annotation.NonNullByDefault;
22 import org.eclipse.jdt.annotation.Nullable;
23 import org.junit.jupiter.api.AfterEach;
24 import org.junit.jupiter.api.BeforeEach;
25 import org.junit.jupiter.api.Test;
26 import org.junit.jupiter.api.extension.ExtendWith;
27 import org.mockito.Mock;
28 import org.mockito.junit.jupiter.MockitoExtension;
29 import org.openhab.core.items.ItemRegistry;
30 import org.openhab.core.items.MetadataRegistry;
31 import org.openhab.persistence.influxdb.InfluxDBPersistenceService;
32
33 /**
34  * @author Joan Pujol Espinar - Initial contribution
35  */
36 @ExtendWith(MockitoExtension.class)
37 @NonNullByDefault(value = { DefaultLocation.PARAMETER, DefaultLocation.RETURN_TYPE })
38 public class InfluxDBPersistenceServiceTest {
39     private InfluxDBPersistenceService instance;
40
41     private @Mock InfluxDBRepository influxDBRepository;
42
43     private Map<String, @Nullable Object> validConfig;
44     private Map<String, @Nullable Object> invalidConfig;
45
46     @BeforeEach
47     public void before() {
48         instance = new InfluxDBPersistenceService(mock(ItemRegistry.class), mock(MetadataRegistry.class)) {
49             @Override
50             protected InfluxDBRepository createInfluxDBRepository() {
51                 return influxDBRepository;
52             }
53         };
54
55         validConfig = ConfigurationTestHelper.createValidConfigurationParameters();
56         invalidConfig = ConfigurationTestHelper.createInvalidConfigurationParameters();
57     }
58
59     @AfterEach
60     public void after() {
61         validConfig = null;
62         invalidConfig = null;
63         instance = null;
64         influxDBRepository = null;
65     }
66
67     @Test
68     public void activateWithValidConfigShouldConnectRepository() {
69         instance.activate(validConfig);
70         verify(influxDBRepository).connect();
71     }
72
73     @Test
74     public void activateWithInvalidConfigShouldNotConnectRepository() {
75         instance.activate(invalidConfig);
76         verify(influxDBRepository, never()).connect();
77     }
78
79     @Test
80     public void activateWithNullConfigShouldNotConnectRepository() {
81         instance.activate(null);
82         verify(influxDBRepository, never()).connect();
83     }
84
85     @Test
86     public void deactivateShouldDisconnectRepository() {
87         instance.activate(validConfig);
88         instance.deactivate();
89         verify(influxDBRepository).disconnect();
90     }
91
92     @Test
93     public void storeItemWithConnectedRepository() {
94         instance.activate(validConfig);
95         when(influxDBRepository.isConnected()).thenReturn(true);
96         instance.store(ItemTestHelper.createNumberItem("number", 5));
97         verify(influxDBRepository).write(any());
98     }
99
100     @Test
101     public void storeItemWithDisconnectedRepositoryIsIgnored() {
102         instance.activate(validConfig);
103         when(influxDBRepository.isConnected()).thenReturn(false);
104         instance.store(ItemTestHelper.createNumberItem("number", 5));
105         verify(influxDBRepository, never()).write(any());
106     }
107 }