@gregoriusrippenstein/erlang-red-unittest 0.9.5 → 0.10.0

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.
@@ -2,8 +2,14 @@
2
2
  <p>Ensure specific values are set on the message passing through this node.</p>
3
3
  Ensure specific values are set on the message passing through this node.
4
4
 
5
+ <p>
5
6
  If the values do not match, this node will cause and error.
6
7
 
7
- **This has no implementation when used with Node-RED, this is a Erlang-RED specific node.**
8
+ <p>
9
+ Upon completion, the node sets the "assert_succeed" flag on the message to either true or false depending on whether
10
+ all tests succeed or some failed. This is an all or one flag.
11
+
12
+ <p>
13
+ The "assert_failures" array value is set on the message to contain all failures and unsupported features.
8
14
 
9
15
  </script>
@@ -42,6 +42,7 @@
42
42
  inputs: 1,
43
43
 
44
44
  outputs: 1,
45
+ outputLabels: ["result"],
45
46
 
46
47
  label: function () {
47
48
  function prop2name(type, key) {
@@ -4,6 +4,18 @@ module.exports = function(RED) {
4
4
 
5
5
  var node = this;
6
6
  var cfg = config;
7
+
8
+ /*
9
+ * Note to self: getMessageProperty(..) and getObjectProperty(...) only differ in that
10
+ * getMessageProperty will remove any 'msg.' prefix from the property name. This is not
11
+ * the case here since we're using the Node-RED inbuilt helpers for setting values.
12
+ * --> here: https://github.com/node-red/node-red/blob/0f653ed7b2640feba8885e48b9448df7d42acaf0/packages/node_modules/%40node-red/util/lib/util.js#L397-L402
13
+ *
14
+ *
15
+ * from --> https://github.com/node-red/node-red/blob/0f653ed7b2640feba8885e48b9448df7d42acaf0/packages/node_modules/%40node-red/util/lib/util.js#L407-L418
16
+ *
17
+ * getObjectProperty will return undefined if a property isn't set.
18
+ */
7
19
 
8
20
 
9
21
  var sendToDebug = (nde,rule,msgc,lvl) => {
@@ -24,14 +36,15 @@ module.exports = function(RED) {
24
36
  } catch (ex) {
25
37
  console.error(ex)
26
38
  }
27
- return false;
39
+ return ["failure", rule];
28
40
  }
29
41
 
30
42
  var postUnsupported = (rule, msg) => {
31
43
  node.status({ fill: "red", shape: "dot",
32
44
  text: RED._("ut-assert-values.label.unsupported", { property: JSON.stringify(rule) }) });
33
45
  sendToDebug(node, rule, msg, 30)
34
- return rule
46
+
47
+ return ["unsupported", rule]
35
48
  }
36
49
 
37
50
  var escapeSpecials = (str) => {
@@ -61,6 +74,12 @@ module.exports = function(RED) {
61
74
  if ( parseInt(rule.to) != parseInt(RED.util.getObjectProperty(msg,rule.p)) ) {
62
75
  failures.push(sendToDebug(node, rule, msg, 20))
63
76
  }
77
+ } else if (rule.tot == "bool") {
78
+ if ( rule.to == "true" && !RED.util.getObjectProperty(msg, rule.p)) {
79
+ failures.push(sendToDebug(node, rule, msg, 20))
80
+ } else if (rule.to == "false" && !!RED.util.getObjectProperty(msg, rule.p) ) {
81
+ failures.push(sendToDebug(node, rule, msg, 20))
82
+ }
64
83
  } else if (rule.tot == "json") {
65
84
  let expObj = JSON.parse(rule.to)
66
85
  let oldObj = RED.util.getObjectProperty(msg, rule.p)
@@ -74,6 +93,20 @@ module.exports = function(RED) {
74
93
  } else {
75
94
  unsupported.push(postUnsupported(rule,msg))
76
95
  }
96
+ /*
97
+ * Rule is not set on message object
98
+ */
99
+ } else if (rule.t == "notset" && rule.pt == "msg") {
100
+ if (RED.util.getObjectProperty(msg, rule.p) !== undefined) {
101
+ failures.push(sendToDebug(node, rule, msg, 20))
102
+ }
103
+ /*
104
+ * Rule is not set on message object
105
+ */
106
+ } else if (rule.t == "set" && rule.pt == "msg") {
107
+ if (RED.util.getObjectProperty(msg, rule.p) === undefined) {
108
+ failures.push(sendToDebug(node, rule, msg, 20))
109
+ }
77
110
  /*
78
111
  * Rule is match
79
112
  */
@@ -92,38 +125,28 @@ module.exports = function(RED) {
92
125
  } else {
93
126
  unsupported.push(postUnsupported(rule,msg))
94
127
  }
95
-
96
- console.log(rule)
97
128
  })
98
129
 
99
130
  if (failures.length > 0 ) {
100
131
  node.status({fill: "red", shape: "dot", text: "assert failed"})
132
+ msg.assert_succeed = false
133
+ msg.assert_failures = failures.concat(unsupported)
101
134
  } else {
102
135
  if ( unsupported.length > 0) {
103
136
  node.status({ fill: "yellow", shape: "ring", text: "unsupported errors - check debug" })
137
+ msg.assert_succeed = false
138
+ msg.assert_failures = failures.concat( unsupported )
104
139
  } else {
105
140
  node.status({ fill: "green", shape: "ring", text: "assert succeed" })
141
+ msg.assert_succeed = true
142
+ delete msg.assert_failures
106
143
  }
107
144
  }
108
-
109
- try {
110
- try {
111
- send(msg);
112
- done();
113
- } catch ( err ) {
114
- // use node.error if the node might send subsequent messages
115
- node.error("error occurred", { ...msg, error: err })
116
- done();
117
- }
118
- } catch (err) {
119
- // use done if the node won't send anymore messages for the
120
- // message it received.
121
- msg.error = err
122
- done(err.message, msg)
123
- }
145
+
146
+ send(msg);
147
+ done();
124
148
  });
125
149
  }
126
150
 
127
151
  RED.nodes.registerType("ut-assert-values", CoreutassertvaluesFunctionality);
128
-
129
152
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gregoriusrippenstein/erlang-red-unittest",
3
- "version": "0.9.5",
3
+ "version": "0.10.0",
4
4
  "dependencies": {
5
5
  },
6
6