aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-05-06 19:43:44 +0100
committerMichael Williamson <mike@zwobble.org>2013-05-06 19:43:44 +0100
commite1d1373cda7fcf66aff7a89883c10ed9a8f7ffc7 (patch)
tree557a1186b89cc736cccddc7f31f2af8372960da4
parent02ebf0f54ae9cc45daee49e444407bf90f07e781 (diff)
Remove duplicate messages when combining results
-rw-r--r--lib/results.js16
-rw-r--r--tests/results.tests.js17
2 files changed, 32 insertions, 1 deletions
diff --git a/lib/results.js b/lib/results.js
index 55efd25..fe9f632 100644
--- a/lib/results.js
+++ b/lib/results.js
@@ -35,5 +35,19 @@ function warning(message) {
}
function combineMessages(results) {
- return _.flatten(_.pluck(results, "messages"), true);
+ var messages = [];
+ _.flatten(_.pluck(results, "messages"), true).forEach(function(message) {
+ if (!containsMessage(messages, message)) {
+ messages.push(message);
+ }
+ });
+ return messages;
+}
+
+function containsMessage(messages, message) {
+ return _.find(messages, isSameMessage.bind(null, message)) !== undefined;
+}
+
+function isSameMessage(first, second) {
+ return first.type === second.type && first.message === second.message;
}
diff --git a/tests/results.tests.js b/tests/results.tests.js
new file mode 100644
index 0000000..3c0df78
--- /dev/null
+++ b/tests/results.tests.js
@@ -0,0 +1,17 @@
+var assert = require("assert");
+
+var results = require("../lib/results");
+var Result = results.Result;
+var test = require("./testing").test;
+
+
+describe("Result.combine", function() {
+ test("removes any duplicate messages", function() {
+ var first = new Result(null, [results.warning("Warning...")]);
+ var second = new Result(null, [results.warning("Warning...")]);
+
+ var combined = Result.combine([first, second]);
+
+ assert.deepEqual(combined.messages, [results.warning("Warning...")]);
+ });
+});