2 * Copyright (c) 2010-2020 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.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;
34 * @author Joan Pujol Espinar - Initial contribution
36 @ExtendWith(MockitoExtension.class)
37 @NonNullByDefault(value = { DefaultLocation.PARAMETER, DefaultLocation.RETURN_TYPE })
38 public class InfluxDBPersistenceServiceTest {
39 private InfluxDBPersistenceService instance;
41 private @Mock InfluxDBRepository influxDBRepository;
43 private Map<String, @Nullable Object> validConfig;
44 private Map<String, @Nullable Object> invalidConfig;
47 public void before() {
48 instance = new InfluxDBPersistenceService(mock(ItemRegistry.class), mock(MetadataRegistry.class)) {
50 protected InfluxDBRepository createInfluxDBRepository() {
51 return influxDBRepository;
55 validConfig = ConfigurationTestHelper.createValidConfigurationParameters();
56 invalidConfig = ConfigurationTestHelper.createInvalidConfigurationParameters();
64 influxDBRepository = null;
68 public void activateWithValidConfigShouldConnectRepository() {
69 instance.activate(validConfig);
70 verify(influxDBRepository).connect();
74 public void activateWithInvalidConfigShouldNotConnectRepository() {
75 instance.activate(invalidConfig);
76 verify(influxDBRepository, never()).connect();
80 public void activateWithNullConfigShouldNotConnectRepository() {
81 instance.activate(null);
82 verify(influxDBRepository, never()).connect();
86 public void deactivateShouldDisconnectRepository() {
87 instance.activate(validConfig);
88 instance.deactivate();
89 verify(influxDBRepository).disconnect();
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());
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());