@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
|
-
|
|
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
|
-
|
|
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,
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
110
|
-
|
|
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.
|
|
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
|
}
|
package/plugins/sidebar.html
CHANGED
|
@@ -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',
|
|
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)
|