From 88a768f06732c46987fcd462ab8d8c0dc23c8581 Mon Sep 17 00:00:00 2001 From: IrynaMatveieva Date: Fri, 21 Jun 2024 10:50:40 +0300 Subject: [PATCH] added verification for match values insertion into statement --- .../TbSaveToCustomCassandraTableNodeTest.java | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNodeTest.java index 27d69f2d66..b3f3f2caa4 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNodeTest.java @@ -34,6 +34,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.util.ReflectionTestUtils; import org.thingsboard.common.util.JacksonUtil; import org.thingsboard.common.util.ListeningExecutor; 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.TbResultSetFuture; -import java.util.LinkedHashMap; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.UUID; 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.anyLong; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.never; import static org.mockito.BDDMockito.spy; @@ -255,16 +256,17 @@ public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgrad } @Test - public void givenValidMsgStructure_whenOnMsg_thenSaveToCustomCassandraTable() throws TbNodeException { + public void givenValidMsgStructure_whenOnMsg_thenVerifyMatchOfValuesInsertionOrderIntoStatementAndSaveToCustomCassandraTable() throws TbNodeException { config.setDefaultTTL(25L); config.setTableName("readings"); - Map mappings = new LinkedHashMap<>(); - mappings.put("$entityId", "entityIdTableColumn"); - mappings.put("doubleField", "doubleTableColumn"); - mappings.put("longField", "longTableColumn"); - mappings.put("booleanField", "booleanTableColumn"); - mappings.put("stringField", "stringTableColumn"); - mappings.put("jsonField", "jsonTableColumn"); + Map mappings = Map.of( + "$entityId", "entityIdTableColumn", + "doubleField", "doubleTableColumn", + "longField", "longTableColumn", + "booleanField", "booleanTableColumn", + "stringField", "stringTableColumn", + "jsonField", "jsonTableColumn" + ); config.setFieldsMapping(mappings); mockOnInit(); @@ -353,13 +355,15 @@ public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgrad } private void verifySettingStatementBuilder() { - then(boundStatementBuilderMock).should().setUuid(0, DEVICE_ID.getId()); - then(boundStatementBuilderMock).should().setDouble(1, 22.5); - then(boundStatementBuilderMock).should().setLong(2, 56L); - then(boundStatementBuilderMock).should().setBoolean(3, true); - then(boundStatementBuilderMock).should().setString(4, "some string"); - then(boundStatementBuilderMock).should().setString(5, "{\"key\":\"value\"}"); - then(boundStatementBuilderMock).should().setInt(anyInt(), eq(25)); + Map fieldsMap = (Map) ReflectionTestUtils.getField(node, "fieldsMap"); + List values = new ArrayList<>(fieldsMap.values()); + then(boundStatementBuilderMock).should().setUuid(values.indexOf("entityIdTableColumn"), DEVICE_ID.getId()); + then(boundStatementBuilderMock).should().setDouble(values.indexOf("doubleTableColumn"), 22.5); + then(boundStatementBuilderMock).should().setLong(values.indexOf("longTableColumn"), 56L); + then(boundStatementBuilderMock).should().setBoolean(values.indexOf("booleanTableColumn"), true); + 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) {