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.persistence.influxdb.internal;
15 import static org.mockito.ArgumentMatchers.any;
16 import static org.mockito.Mockito.*;
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;
33 * @author Joan Pujol Espinar - Initial contribution
35 @ExtendWith(MockitoExtension.class)
36 @NonNullByDefault(value = { DefaultLocation.PARAMETER, DefaultLocation.RETURN_TYPE })
37 public class InfluxDBPersistenceServiceTest {
38 private InfluxDBPersistenceService instance;
40 private @Mock InfluxDBRepository influxDBRepository;
42 private Map<String, Object> validConfig;
43 private Map<String, Object> invalidConfig;
46 public void before() {
47 instance = new InfluxDBPersistenceService(mock(ItemRegistry.class), mock(MetadataRegistry.class)) {
49 protected InfluxDBRepository createInfluxDBRepository() {
50 return influxDBRepository;
54 validConfig = ConfigurationTestHelper.createValidConfigurationParameters();
55 invalidConfig = ConfigurationTestHelper.createInvalidConfigurationParameters();
63 influxDBRepository = null;
67 public void activateWithValidConfigShouldConnectRepository() {
68 instance.activate(validConfig);
69 verify(influxDBRepository).connect();
73 public void activateWithInvalidConfigShouldNotConnectRepository() {
74 instance.activate(invalidConfig);
75 verify(influxDBRepository, never()).connect();
79 public void activateWithNullConfigShouldNotConnectRepository() {
80 instance.activate(null);
81 verify(influxDBRepository, never()).connect();
85 public void deactivateShouldDisconnectRepository() {
86 instance.activate(validConfig);
87 instance.deactivate();
88 verify(influxDBRepository).disconnect();
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());
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());