@gregoriusrippenstein/erlang-red-unittest 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,120 @@
1
+ module.exports = function(RED) {
2
+ function CoreutassertvaluesFunctionality(config) {
3
+ RED.nodes.createNode(this,config);
4
+
5
+ var node = this;
6
+ var cfg = config;
7
+
8
+
9
+ var sendToDebug = (nde,rule,msgc,lvl) => {
10
+ try {
11
+ let msg = {
12
+ id: nde.id,
13
+ z: nde.z,
14
+ _alias: nde._alias,
15
+ path: nde._flow.path,
16
+ name: nde.name,
17
+ topic: msgc.topic,
18
+ msg: {msg: msgc, rule: rule},
19
+ level: lvl
20
+ }
21
+
22
+ msg = RED.util.encodeObject(msg);
23
+ RED.comms.publish("debug", msg);
24
+ } catch (ex) {
25
+ console.error(ex)
26
+ }
27
+ return false;
28
+ }
29
+
30
+ var postUnsupported = (rule) => {
31
+ node.status({ fill: "red", shape: "dot",
32
+ text: RED._("ut-assert-values.label.unsupported", { property: JSON.stringify(rule) }) });
33
+ sendToDebug(node, rule, 30)
34
+ return rule
35
+ }
36
+
37
+ node.on('close', function() {
38
+ node.status({});
39
+ });
40
+
41
+ /* msg handler, in this case pass the message on unchanged */
42
+ node.on("input", function(msg, send, done) {
43
+ var failures = [];
44
+ var unsupported = [];
45
+
46
+ cfg.rules.forEach(rule => {
47
+ /*
48
+ * Rule is Equal
49
+ */
50
+ if ( rule.t == "eql" && rule.pt == "msg") {
51
+ if ( rule.tot == "str") {
52
+ if ( rule.to != RED.util.getObjectProperty(msg,rule.p) ) {
53
+ failures.push(sendToDebug(node, rule, msg, 20))
54
+ }
55
+ } else if ( rule.tot == "num") {
56
+ if ( parseInt(rule.to) != parseInt(RED.util.getObjectProperty(msg,rule.p)) ) {
57
+ failures.push(sendToDebug(node, rule, msg, 20))
58
+ }
59
+ } else if (rule.tot == "json") {
60
+ let expObj = JSON.parse(rule.to)
61
+ let oldObj = RED.util.getObjectProperty(msg, rule.p)
62
+ if ( JSON.stringify(oldObj, Object.keys(oldObj).sort()) != JSON.stringify(expObj, Object.keys(expObj).sort()) ) {
63
+ failures.push(sendToDebug(node, rule, msg, 20))
64
+ }
65
+ } else {
66
+ unsupported.push(postUnsupported(rule))
67
+ }
68
+ /*
69
+ * Rule is match
70
+ */
71
+ } else if ( rule.t == "mth" && rule.pt == "msg") {
72
+ if (rule.tot == "str") {
73
+ let reExp = new RegExp(rule.to)
74
+ if ( !reExp.test(RED.util.getObjectProperty(msg, rule.p)) ) {
75
+ failures.push(sendToDebug(node, rule, msg, 20))
76
+ }
77
+ } else {
78
+ unsupported.push(postUnsupported(rule))
79
+ }
80
+ /*
81
+ * Other rule types are not supported
82
+ */
83
+ } else {
84
+ unsupported.push(postUnsupported(rule))
85
+ }
86
+
87
+ console.log(rule)
88
+ })
89
+
90
+ if (failures.length > 0 ) {
91
+ node.status({fill: "red", shape: "dot", text: "assert failed"})
92
+ } else {
93
+ if ( unsupported.length > 0) {
94
+ node.status({ fill: "yellow", shape: "ring", text: "unsupported errors" })
95
+ } else {
96
+ node.status({ fill: "green", shape: "ring", text: "assert succeed" })
97
+ }
98
+ }
99
+
100
+ try {
101
+ try {
102
+ send(msg);
103
+ done();
104
+ } catch ( err ) {
105
+ // use node.error if the node might send subsequent messages
106
+ node.error("error occurred", { ...msg, error: err })
107
+ done();
108
+ }
109
+ } catch (err) {
110
+ // use done if the node won't send anymore messages for the
111
+ // message it received.
112
+ msg.error = err
113
+ done(err.message, msg)
114
+ }
115
+ });
116
+ }
117
+
118
+ RED.nodes.registerType("ut-assert-values", CoreutassertvaluesFunctionality);
119
+
120
+ }
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@gregoriusrippenstein/erlang-red-unittest",
3
+ "version": "0.9.1",
4
+ "dependencies": {
5
+ "mustache": "^4.2.0"
6
+ },
7
+
8
+ "keywords": [
9
+ "node-red",
10
+ "erlang-red",
11
+ "unit-testing",
12
+ "assert-the-truth"
13
+ ],
14
+
15
+ "license": "Don't do evil.",
16
+ "author": "Gerrit Riessen <gerrit@flowhub.org>",
17
+ "engines": {
18
+ "node": ">=14"
19
+ },
20
+
21
+ "node-red" : {
22
+ "version": ">=2.0.0",
23
+ "plugins": {
24
+ "unittesting_sidebar": "plugins/sidebar.html"
25
+ },
26
+ "nodes": {
27
+ "ut-assert-failure": "nodes/ut-assert-failure.js",
28
+ "ut-assert-values": "nodes/ut-assert-values.js",
29
+ "ut-assert-success": "nodes/ut-assert-success.js",
30
+ "ut-assert-status": "nodes/ut-assert-status.js",
31
+ "ut-assert-debug": "nodes/ut-assert-debug.js"
32
+ }
33
+ }
34
+ }