added verification for match values insertion into statement

This commit is contained in:
IrynaMatveieva 2024-06-21 10:50:40 +03:00
parent bfdea4d7e3
commit 88a768f067

View File

@ -34,6 +34,7 @@ import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.util.ReflectionTestUtils;
import org.thingsboard.common.util.JacksonUtil; import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.common.util.ListeningExecutor; import org.thingsboard.common.util.ListeningExecutor;
import org.thingsboard.rule.engine.AbstractRuleNodeUpgradeTest; import org.thingsboard.rule.engine.AbstractRuleNodeUpgradeTest;
@ -57,7 +58,8 @@ import org.thingsboard.server.dao.nosql.CassandraStatementTask;
import org.thingsboard.server.dao.nosql.TbResultSet; import org.thingsboard.server.dao.nosql.TbResultSet;
import org.thingsboard.server.dao.nosql.TbResultSetFuture; import org.thingsboard.server.dao.nosql.TbResultSetFuture;
import java.util.LinkedHashMap; import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -74,7 +76,6 @@ import static org.mockito.ArgumentMatchers.anyDouble;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.never; import static org.mockito.BDDMockito.never;
import static org.mockito.BDDMockito.spy; import static org.mockito.BDDMockito.spy;
@ -255,16 +256,17 @@ public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgrad
} }
@Test @Test
public void givenValidMsgStructure_whenOnMsg_thenSaveToCustomCassandraTable() throws TbNodeException { public void givenValidMsgStructure_whenOnMsg_thenVerifyMatchOfValuesInsertionOrderIntoStatementAndSaveToCustomCassandraTable() throws TbNodeException {
config.setDefaultTTL(25L); config.setDefaultTTL(25L);
config.setTableName("readings"); config.setTableName("readings");
Map<String, String> mappings = new LinkedHashMap<>(); Map<String, String> mappings = Map.of(
mappings.put("$entityId", "entityIdTableColumn"); "$entityId", "entityIdTableColumn",
mappings.put("doubleField", "doubleTableColumn"); "doubleField", "doubleTableColumn",
mappings.put("longField", "longTableColumn"); "longField", "longTableColumn",
mappings.put("booleanField", "booleanTableColumn"); "booleanField", "booleanTableColumn",
mappings.put("stringField", "stringTableColumn"); "stringField", "stringTableColumn",
mappings.put("jsonField", "jsonTableColumn"); "jsonField", "jsonTableColumn"
);
config.setFieldsMapping(mappings); config.setFieldsMapping(mappings);
mockOnInit(); mockOnInit();
@ -353,13 +355,15 @@ public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgrad
} }
private void verifySettingStatementBuilder() { private void verifySettingStatementBuilder() {
then(boundStatementBuilderMock).should().setUuid(0, DEVICE_ID.getId()); Map<String, String> fieldsMap = (Map<String, String>) ReflectionTestUtils.getField(node, "fieldsMap");
then(boundStatementBuilderMock).should().setDouble(1, 22.5); List<String> values = new ArrayList<>(fieldsMap.values());
then(boundStatementBuilderMock).should().setLong(2, 56L); then(boundStatementBuilderMock).should().setUuid(values.indexOf("entityIdTableColumn"), DEVICE_ID.getId());
then(boundStatementBuilderMock).should().setBoolean(3, true); then(boundStatementBuilderMock).should().setDouble(values.indexOf("doubleTableColumn"), 22.5);
then(boundStatementBuilderMock).should().setString(4, "some string"); then(boundStatementBuilderMock).should().setLong(values.indexOf("longTableColumn"), 56L);
then(boundStatementBuilderMock).should().setString(5, "{\"key\":\"value\"}"); then(boundStatementBuilderMock).should().setBoolean(values.indexOf("booleanTableColumn"), true);
then(boundStatementBuilderMock).should().setInt(anyInt(), eq(25)); then(boundStatementBuilderMock).should().setString(values.indexOf("stringTableColumn"), "some string");
then(boundStatementBuilderMock).should().setString(values.indexOf("jsonTableColumn"), "{\"key\":\"value\"}");
then(boundStatementBuilderMock).should().setInt(values.size(), 25);
} }
private TenantProfile getTenantProfileWithTtl(int ttlInDays) { private TenantProfile getTenantProfileWithTtl(int ttlInDays) {