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