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.dbquery.internal;
15 import static org.hamcrest.CoreMatchers.is;
16 import static org.hamcrest.CoreMatchers.nullValue;
17 import static org.hamcrest.MatcherAssert.assertThat;
21 import org.eclipse.jdt.annotation.NonNullByDefault;
22 import org.junit.jupiter.api.Test;
23 import org.openhab.binding.dbquery.internal.config.QueryConfiguration;
24 import org.openhab.binding.dbquery.internal.domain.QueryResult;
25 import org.openhab.binding.dbquery.internal.domain.QueryResultExtractor;
26 import org.openhab.binding.dbquery.internal.domain.ResultRow;
30 * @author Joan Pujol - Initial contribution
33 class Influx2QueryResultExtractorTest {
34 public static final QueryResult ONE_ROW_ONE_COLUMN_RESULT = QueryResult.ofSingleValue("AnyValueName", "value");
35 public static final QueryResult SEVERAL_ROWS_COLUMNS_RESULT = QueryResult.of(
36 new ResultRow(Map.of("valueName", "value1", "column2", "value2")),
37 new ResultRow(Map.of("valueName", "value1", "column2", "value2")));
38 public static final QueryResult ONE_ROW_SEVERAL_COLUMNS_RESULT = QueryResult
39 .of(new ResultRow(Map.of("valueName", "value1", "column2", "value2")));
40 public static final QueryResult INCORRECT_RESULT = QueryResult.ofIncorrectResult("Incorrect result");
42 private static final QueryConfiguration SCALAR_VALUE_CONFIG = new QueryConfiguration("query", 10, 10, true, null,
44 private static final QueryConfiguration NON_SCALAR_VALUE_CONFIG = new QueryConfiguration("query", 10, 10, false,
46 private static final QueryConfiguration SCALAR_VALUE_CONFIG_WITH_SCALAR_COLUMN = new QueryConfiguration("query", 10,
47 10, true, "valueName", false);
50 void givenAResultWithOneRowAndOneColumnAndScalarConfigurationScalarValueIsReturned() {
51 var extracted = new QueryResultExtractor(SCALAR_VALUE_CONFIG).extractResult(ONE_ROW_ONE_COLUMN_RESULT);
53 assertThat(extracted.isCorrect(), is(Boolean.TRUE));
54 assertThat(extracted.getResult(), is("value"));
58 void givenAResultWithSeveralRowsAndScalarConfigurationIncorrectValueIsReturned() {
59 var extracted = new QueryResultExtractor(SCALAR_VALUE_CONFIG).extractResult(SEVERAL_ROWS_COLUMNS_RESULT);
61 assertThat(extracted.isCorrect(), is(false));
62 assertThat(extracted.getResult(), nullValue());
66 void givenAResultWithSeveralColumnsAndScalarConfigurationIncorrectValueIsReturned() {
67 var extracted = new QueryResultExtractor(SCALAR_VALUE_CONFIG).extractResult(ONE_ROW_SEVERAL_COLUMNS_RESULT);
69 assertThat(extracted.isCorrect(), is(false));
70 assertThat(extracted.getResult(), nullValue());
74 void givenAResultWithSeveralColumnsAndScalarConfigurationAndScalarColumnDefinedValueIsReturned() {
75 var extracted = new QueryResultExtractor(SCALAR_VALUE_CONFIG_WITH_SCALAR_COLUMN)
76 .extractResult(ONE_ROW_SEVERAL_COLUMNS_RESULT);
78 assertThat(extracted.isCorrect(), is(true));
79 assertThat(extracted.getResult(), is("value1"));
83 void givenAResultWithSeveralRowsAndNonScalarConfigQueryResultIsReturned() {
84 var extracted = new QueryResultExtractor(NON_SCALAR_VALUE_CONFIG).extractResult(SEVERAL_ROWS_COLUMNS_RESULT);
86 assertThat(extracted.isCorrect(), is(true));
87 assertThat(extracted.getResult(), is(SEVERAL_ROWS_COLUMNS_RESULT));
91 void givenAIncorrectResultIncorrectValueIsReturned() {
92 var extracted = new QueryResultExtractor(NON_SCALAR_VALUE_CONFIG).extractResult(INCORRECT_RESULT);
94 assertThat(extracted.isCorrect(), is(false));
95 assertThat(extracted.getResult(), nullValue());