@gregoriusrippenstein/erlang-red-unittest 0.9.5 → 0.10.3

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>
@@ -76,6 +76,14 @@
76
76
  RED.view.select(item.nodeid);
77
77
  }
78
78
  }).on('treelistconfirm', function (event, item) {
79
+ }).on("treelistitemmouseover", function (e, item) {
80
+ item.node.highlighted = true;
81
+ item.node.dirty = true;
82
+ RED.view.redraw();
83
+ }).on("treelistitemmouseout", function (e, item) {
84
+ item.node.highlighted = false;
85
+ item.node.dirty = true;
86
+ RED.view.redraw();
79
87
  });
80
88
 
81
89
  var search = $("#node-input-assert-debug-target-filter").searchBox({
@@ -100,6 +108,7 @@
100
108
  label: RED.utils.getNodeLabel(nde),
101
109
  icon: "",
102
110
  nodeid: nde.id,
111
+ node: nde,
103
112
  sublabel: nde.type,
104
113
  selected: nde.id == this.nodeid,
105
114
  checkbox: false,
@@ -134,7 +143,7 @@
134
143
  </div>
135
144
 
136
145
  <div class="form-row">
137
- <input type="checkbox" id="node-input-inverse"
146
+ <input type="checkbox" id="node-input-inverse"
138
147
  style="display:inline-block; width:15px; vertical-align:baseline;">
139
148
  <label for="node-input-inverse"><span data-i18n="ut-assert-debug.label.inverse"></span></label>
140
149
  </div>
@@ -154,7 +163,7 @@
154
163
  </div>
155
164
  </div>
156
165
 
157
- <div class="form-row" style="margin-left: 10px; position: relative; height: 40vh; margin-right: 15px; min-height: 5vh;"">
166
+ <div class="form-row" style="margin-left: 10px; position: relative; height: 40vh; margin-right: 15px; min-height: 5vh;">
158
167
  <div style="margin-bottom: 5px; width: 35%; padding-left: 60%;">
159
168
  <input type="text" id="node-input-assert-debug-target-filter">
160
169
  </div>
@@ -91,6 +91,14 @@
91
91
  RED.view.select(item.nodeid);
92
92
  }
93
93
  }).on('treelistconfirm', function (event, item) {
94
+ }).on("treelistitemmouseover", function (e, item) {
95
+ item.node.highlighted = true;
96
+ item.node.dirty = true;
97
+ RED.view.redraw();
98
+ }).on("treelistitemmouseout", function (e, item) {
99
+ item.node.highlighted = false;
100
+ item.node.dirty = true;
101
+ RED.view.redraw();
94
102
  });
95
103
 
96
104
  var search = $("#node-input-assert-status-target-filter").searchBox({
@@ -115,6 +123,7 @@
115
123
  label: RED.utils.getNodeLabel(nde),
116
124
  icon: "",
117
125
  nodeid: nde.id,
126
+ node: nde,
118
127
  sublabel: nde.type,
119
128
  selected: nde.id == this.nodeid,
120
129
  checkbox: false,
@@ -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.3",
4
4
  "dependencies": {
5
5
  },
6
6
 
@@ -14,6 +14,7 @@
14
14
  ],
15
15
 
16
16
  "license": "Don't do evil.",
17
+ "homepage": "https://github.com/gorenje/erlang-red-unittesting-nodes#readme",
17
18
  "author": "Gerrit Riessen <gerrit@flowhub.org>",
18
19
  "engines": {
19
20
  "node": ">=14"
@@ -33,5 +34,13 @@
33
34
  "ut-assert-status": "nodes/ut-assert-status.js",
34
35
  "ut-assert-debug": "nodes/ut-assert-debug.js"
35
36
  }
36
- }
37
+ },
38
+
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/gorenje/erlang-red-unittesting-nodes.git"
42
+ },
43
+ "bugs": {
44
+ "url": "https://github.com/gorenje/erlang-red-unittesting-nodes"
45
+ }
37
46
  }
@@ -335,7 +335,7 @@ RED.sidebar.addTab({
335
335
  visible: true
336
336
  });
337
337
 
338
-
338
+ /*
339
339
  var tabs = RED.tabs.create({
340
340
  id: 'func-unittesting-tabs',
341
341
  onchange: function (tab) {
@@ -366,6 +366,9 @@ tabs.addTab({
366
366
  });
367
367
 
368
368
  tabs.activateTab("func-unittesting-tab-pull");
369
+ */
370
+
371
+ $('#func-unittesting-tab-pull').show();
369
372
 
370
373
  var dirList = $("#node-input-unittestingpull-sb-target-container-div").css({
371
374
  width: "100%",
@@ -376,7 +379,7 @@ var dirList = $("#node-input-unittestingpull-sb-target-container-div").css({
376
379
  }
377
380
  ).on('treelistselect', function (event, item) {
378
381
  if ( item.flowid) {
379
- $('#unittesting-view-testflow-link').prop('href', `?tstid=${item.flowid}`)
382
+ $('#unittesting-view-testflow-link').prop('href', `https://flows.red-erik.org/f/${item.flowid}`)
380
383
  $('#unittesting-view-testflow-link').fadeIn(300)
381
384
  } else {
382
385
  $('#unittesting-view-testflow-link').fadeOut(300)