refactor code & test
This commit is contained in:
parent
87599ec5f9
commit
5a6cf5c92f
@ -367,24 +367,24 @@ class DefaultTbContext implements TbContext {
|
|||||||
return entityActionMsg(alarm, alarm.getId(), ruleNodeId, action, queueName, ruleChainId);
|
return entityActionMsg(alarm, alarm.getId(), ruleNodeId, action, queueName, ruleChainId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TbMsg attributeUpdateActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<AttributeKvEntry> attributes) {
|
public TbMsg attributesUpdatedActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<AttributeKvEntry> attributes) {
|
||||||
ObjectNode entityNode = JacksonUtil.newObjectNode();
|
ObjectNode entityNode = JacksonUtil.newObjectNode();
|
||||||
if (attributes != null) {
|
if (attributes != null) {
|
||||||
attributes.forEach(attributeKvEntry -> addKvEntry(entityNode, attributeKvEntry));
|
attributes.forEach(attributeKvEntry -> addKvEntry(entityNode, attributeKvEntry));
|
||||||
}
|
}
|
||||||
return attributeActionMsg(originator, ruleNodeId, scope, DataConstants.ATTRIBUTES_UPDATED, JacksonUtil.toString(entityNode));
|
return attributesActionMsg(originator, ruleNodeId, scope, DataConstants.ATTRIBUTES_UPDATED, JacksonUtil.toString(entityNode));
|
||||||
}
|
}
|
||||||
|
|
||||||
public TbMsg attributeDeleteActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<String> keys) {
|
public TbMsg attributesDeletedActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<String> keys) {
|
||||||
ObjectNode entityNode = JacksonUtil.newObjectNode();
|
ObjectNode entityNode = JacksonUtil.newObjectNode();
|
||||||
ArrayNode attrsArrayNode = entityNode.putArray("attributes");
|
ArrayNode attrsArrayNode = entityNode.putArray("attributes");
|
||||||
if (keys != null) {
|
if (keys != null) {
|
||||||
keys.forEach(attrsArrayNode::add);
|
keys.forEach(attrsArrayNode::add);
|
||||||
}
|
}
|
||||||
return attributeActionMsg(originator, ruleNodeId, scope, DataConstants.ATTRIBUTES_DELETED, JacksonUtil.toString(entityNode));
|
return attributesActionMsg(originator, ruleNodeId, scope, DataConstants.ATTRIBUTES_DELETED, JacksonUtil.toString(entityNode));
|
||||||
}
|
}
|
||||||
|
|
||||||
private TbMsg attributeActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, String action, String msgData) {
|
private TbMsg attributesActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, String action, String msgData) {
|
||||||
RuleChainId ruleChainId = null;
|
RuleChainId ruleChainId = null;
|
||||||
String queueName = null;
|
String queueName = null;
|
||||||
if (EntityType.DEVICE.equals(originator.getEntityType())) {
|
if (EntityType.DEVICE.equals(originator.getEntityType())) {
|
||||||
|
|||||||
@ -181,9 +181,9 @@ public interface TbContext {
|
|||||||
// TODO: Does this changes the message?
|
// TODO: Does this changes the message?
|
||||||
TbMsg alarmActionMsg(Alarm alarm, RuleNodeId ruleNodeId, String action);
|
TbMsg alarmActionMsg(Alarm alarm, RuleNodeId ruleNodeId, String action);
|
||||||
|
|
||||||
TbMsg attributeUpdateActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<AttributeKvEntry> attributes);
|
TbMsg attributesUpdatedActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<AttributeKvEntry> attributes);
|
||||||
|
|
||||||
TbMsg attributeDeleteActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<String> keys);
|
TbMsg attributesDeletedActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<String> keys);
|
||||||
|
|
||||||
void onEdgeEventUpdate(TenantId tenantId, EdgeId edgeId);
|
void onEdgeEventUpdate(TenantId tenantId, EdgeId edgeId);
|
||||||
|
|
||||||
|
|||||||
@ -23,12 +23,12 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class AttributeDeleteNodeCallback extends TelemetryNodeCallback {
|
public class AttributesDeleteNodeCallback extends TelemetryNodeCallback {
|
||||||
|
|
||||||
private String scope;
|
private String scope;
|
||||||
private List<String> keys;
|
private List<String> keys;
|
||||||
|
|
||||||
public AttributeDeleteNodeCallback(TbContext ctx, TbMsg msg, String scope, List<String> keys) {
|
public AttributesDeleteNodeCallback(TbContext ctx, TbMsg msg, String scope, List<String> keys) {
|
||||||
super(ctx, msg);
|
super(ctx, msg);
|
||||||
this.scope = scope;
|
this.scope = scope;
|
||||||
this.keys = keys;
|
this.keys = keys;
|
||||||
@ -38,7 +38,7 @@ public class AttributeDeleteNodeCallback extends TelemetryNodeCallback {
|
|||||||
public void onSuccess(@Nullable Void result) {
|
public void onSuccess(@Nullable Void result) {
|
||||||
TbContext ctx = this.getCtx();
|
TbContext ctx = this.getCtx();
|
||||||
TbMsg tbMsg = this.getMsg();
|
TbMsg tbMsg = this.getMsg();
|
||||||
ctx.enqueue(ctx.attributeDeleteActionMsg(tbMsg.getOriginator(), ctx.getSelfId(), scope, keys),
|
ctx.enqueue(ctx.attributesDeletedActionMsg(tbMsg.getOriginator(), ctx.getSelfId(), scope, keys),
|
||||||
() -> ctx.tellSuccess(tbMsg),
|
() -> ctx.tellSuccess(tbMsg),
|
||||||
throwable -> ctx.tellFailure(tbMsg, throwable));
|
throwable -> ctx.tellFailure(tbMsg, throwable));
|
||||||
}
|
}
|
||||||
@ -22,12 +22,12 @@ import org.thingsboard.server.common.msg.TbMsg;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class AttributeUpdateNodeCallback extends TelemetryNodeCallback {
|
public class AttributesUpdateNodeCallback extends TelemetryNodeCallback {
|
||||||
|
|
||||||
private String scope;
|
private String scope;
|
||||||
private List<AttributeKvEntry> attributes;
|
private List<AttributeKvEntry> attributes;
|
||||||
|
|
||||||
public AttributeUpdateNodeCallback(TbContext ctx, TbMsg msg, String scope, List<AttributeKvEntry> attributes) {
|
public AttributesUpdateNodeCallback(TbContext ctx, TbMsg msg, String scope, List<AttributeKvEntry> attributes) {
|
||||||
super(ctx, msg);
|
super(ctx, msg);
|
||||||
this.scope = scope;
|
this.scope = scope;
|
||||||
this.attributes = attributes;
|
this.attributes = attributes;
|
||||||
@ -37,7 +37,7 @@ public class AttributeUpdateNodeCallback extends TelemetryNodeCallback {
|
|||||||
public void onSuccess(@Nullable Void result) {
|
public void onSuccess(@Nullable Void result) {
|
||||||
TbContext ctx = this.getCtx();
|
TbContext ctx = this.getCtx();
|
||||||
TbMsg tbMsg = this.getMsg();
|
TbMsg tbMsg = this.getMsg();
|
||||||
ctx.enqueue(ctx.attributeUpdateActionMsg(tbMsg.getOriginator(), ctx.getSelfId(), scope, attributes),
|
ctx.enqueue(ctx.attributesUpdatedActionMsg(tbMsg.getOriginator(), ctx.getSelfId(), scope, attributes),
|
||||||
() -> ctx.tellSuccess(tbMsg),
|
() -> ctx.tellSuccess(tbMsg),
|
||||||
throwable -> ctx.tellFailure(tbMsg, throwable));
|
throwable -> ctx.tellFailure(tbMsg, throwable));
|
||||||
}
|
}
|
||||||
@ -65,7 +65,7 @@ public class TbMsgDeleteAttributes implements TbNode {
|
|||||||
if (keysToDelete.isEmpty()) {
|
if (keysToDelete.isEmpty()) {
|
||||||
ctx.tellSuccess(msg);
|
ctx.tellSuccess(msg);
|
||||||
} else {
|
} else {
|
||||||
ctx.getTelemetryService().deleteAndNotify(ctx.getTenantId(), msg.getOriginator(), scope, keysToDelete, new AttributeDeleteNodeCallback(ctx, msg, scope, keysToDelete));
|
ctx.getTelemetryService().deleteAndNotify(ctx.getTenantId(), msg.getOriginator(), scope, keysToDelete, new AttributesDeleteNodeCallback(ctx, msg, scope, keysToDelete));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,10 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.Captor;
|
||||||
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
import org.thingsboard.rule.engine.api.RuleEngineTelemetryService;
|
import org.thingsboard.rule.engine.api.RuleEngineTelemetryService;
|
||||||
import org.thingsboard.rule.engine.api.TbContext;
|
import org.thingsboard.rule.engine.api.TbContext;
|
||||||
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
|
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
|
||||||
@ -35,6 +38,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
@ -111,7 +115,15 @@ public class TbMsgDeleteAttributesTest {
|
|||||||
TbMsg msg = TbMsg.newMsg("POST_ATTRIBUTES_REQUEST", deviceId, metaData, data, callback);
|
TbMsg msg = TbMsg.newMsg("POST_ATTRIBUTES_REQUEST", deviceId, metaData, data, callback);
|
||||||
node.onMsg(ctx, msg);
|
node.onMsg(ctx, msg);
|
||||||
|
|
||||||
verify(ctx, times(1)).attributeDeleteActionMsg(any(), any(), anyString(), anyList());
|
ArgumentCaptor<Runnable> successCaptor = ArgumentCaptor.forClass(Runnable.class);
|
||||||
|
ArgumentCaptor<Consumer<Throwable>> failureCaptor = ArgumentCaptor.forClass(Consumer.class);
|
||||||
|
ArgumentCaptor<TbMsg> newMsgCaptor = ArgumentCaptor.forClass(TbMsg.class);
|
||||||
|
|
||||||
|
verify(ctx, times(1)).enqueue(any(), successCaptor.capture(), failureCaptor.capture());
|
||||||
|
successCaptor.getValue().run();
|
||||||
|
verify(ctx, times(1)).tellSuccess(newMsgCaptor.capture());
|
||||||
|
|
||||||
|
verify(ctx, times(1)).attributesDeletedActionMsg(any(), any(), anyString(), anyList());
|
||||||
verify(ctx, never()).tellFailure(any(), any());
|
verify(ctx, never()).tellFailure(any(), any());
|
||||||
verify(telemetryService, times(1)).deleteAndNotify(any(), any(), anyString(), anyList(), any());
|
verify(telemetryService, times(1)).deleteAndNotify(any(), any(), anyString(), anyList(), any());
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user