|
|
@@ -1,15 +1,12 @@
|
|
|
"use strict";
|
|
|
var assert = require("assert"),
|
|
|
- AddToSetAccumulator = require("../../../../lib/pipeline/accumulators/AddToSetAccumulator"),
|
|
|
- ConstantExpression = require("../../../../lib/pipeline/expressions/ConstantExpression"),
|
|
|
- FieldPathExpression = require("../../../../lib/pipeline/expressions/FieldPathExpression");
|
|
|
+ AddToSetAccumulator = require("../../../../lib/pipeline/accumulators/AddToSetAccumulator");
|
|
|
|
|
|
|
|
|
var createAccumulator = function createAccumulator() {
|
|
|
return new AddToSetAccumulator();
|
|
|
};
|
|
|
|
|
|
-
|
|
|
//TODO: refactor these test cases using Expression.parseOperand() or something because these could be a whole lot cleaner...
|
|
|
module.exports = {
|
|
|
|
|
|
@@ -31,10 +28,18 @@ module.exports = {
|
|
|
|
|
|
},
|
|
|
|
|
|
+ "#getFactory()": {
|
|
|
+
|
|
|
+ "should return the constructor for this class": function factoryIsConstructor(){
|
|
|
+ assert.strictEqual(new AddToSetAccumulator().getFactory(), AddToSetAccumulator);
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
"#processInternal()" : {
|
|
|
"should add input to set": function testAddsToSet() {
|
|
|
var acc = createAccumulator();
|
|
|
- acc.processInternal({b:5});
|
|
|
+ acc.processInternal(5);
|
|
|
var value = acc.getValue();
|
|
|
assert.deepEqual(JSON.stringify(value), JSON.stringify([5]));
|
|
|
}
|
|
|
@@ -52,39 +57,32 @@ module.exports = {
|
|
|
|
|
|
"should return array with one element that equals 5": function test5InSet() {
|
|
|
var acc = createAccumulator();
|
|
|
- acc.processInternal({b:5});
|
|
|
- acc.processInternal({b:5});
|
|
|
+ acc.processInternal(5);
|
|
|
+ console.log(acc.set);
|
|
|
+ acc.processInternal(5);
|
|
|
var value = acc.getValue();
|
|
|
assert.deepEqual(JSON.stringify(value), JSON.stringify([5]));
|
|
|
},
|
|
|
|
|
|
"should produce value that is an array of multiple elements": function testMultipleItems() {
|
|
|
var acc = createAccumulator();
|
|
|
- acc.processInternal({b:5});
|
|
|
- acc.processInternal({b:{key: "value"}});
|
|
|
+ acc.processInternal(5);
|
|
|
+ acc.processInternal({key: "value"});
|
|
|
var value = acc.getValue();
|
|
|
assert.deepEqual(JSON.stringify(value), JSON.stringify([5, {key: "value"}]));
|
|
|
},
|
|
|
|
|
|
"should return array with one element that is an object containing a key/value pair": function testKeyValue() {
|
|
|
var acc = createAccumulator();
|
|
|
- acc.processInternal({b:{key: "value"}});
|
|
|
+ acc.processInternal({key: "value"});
|
|
|
var value = acc.getValue();
|
|
|
assert.deepEqual(JSON.stringify(value), JSON.stringify([{key: "value"}]));
|
|
|
},
|
|
|
|
|
|
- "should not require defining values": function testKeyValue() {
|
|
|
- var acc = createAccumulator();
|
|
|
- acc.processInternal({b:{key: "value"}});
|
|
|
- acc.processInternal({a:5});
|
|
|
- var value = acc.getValue();
|
|
|
- assert.deepEqual(JSON.stringify(value), JSON.stringify([5, {key: "value"}]));
|
|
|
- },
|
|
|
-
|
|
|
"should coalesce different instances of equivalent objects": function testGetValue_() {
|
|
|
var acc = createAccumulator();
|
|
|
- acc.processInternal({b:{key: "value"}});
|
|
|
- acc.processInternal({b:{key: "value"}});
|
|
|
+ acc.processInternal({key: "value"});
|
|
|
+ acc.processInternal({key: "value"});
|
|
|
var value = acc.getValue();
|
|
|
assert.deepEqual(JSON.stringify(value), JSON.stringify([{key: "value"}]));
|
|
|
}
|