|
|
@@ -6,7 +6,8 @@ var assert = require("assert"),
|
|
|
|
|
|
|
|
|
function assertEqualJson(actual, expected, message){
|
|
|
- assert.strictEqual(message + ": " + JSON.stringify(actual), message + ": " + JSON.stringify(expected));
|
|
|
+ //assert.strictEqual(message + ": " + JSON.stringify(actual), message + ": " + JSON.stringify(expected));
|
|
|
+ assert.deepEqual(actual, expected, message);
|
|
|
}
|
|
|
|
|
|
/// An assertion for `ObjectExpression` instances based on Mongo's `ExpectedResultBase` class
|
|
|
@@ -25,8 +26,8 @@ function assertExpectedResult(args) {
|
|
|
// run implementation
|
|
|
var result = args.expression.addToDocument({}, args.source, args.source);
|
|
|
assertEqualJson(result, args.expected, "unexpected results");
|
|
|
- var dependencies = args.expression.addDependencies([], [/*FAKING: includePath=true*/]);
|
|
|
- dependencies.sort(), args.expectedDependencies.sort(); // NOTE: this is a minor hack added for munge because I'm pretty sure order doesn't matter for this anyhow
|
|
|
+ var dependencies = args.expression.addDependencies({}, [/*FAKING: includePath=true*/]);
|
|
|
+ //dependencies.sort(), args.expectedDependencies.sort(); // NOTE: this is a minor hack added for munge because I'm pretty sure order doesn't matter for this anyhow
|
|
|
assertEqualJson(dependencies, args.expectedDependencies, "unexpected dependencies");
|
|
|
assertEqualJson(args.expression.toJson(true), args.expectedJsonRepresentation, "unexpected JSON representation");
|
|
|
assertEqualJson(args.expression.getIsSimple(), args.expectedIsSimple, "unexpected isSimple status");
|
|
|
@@ -53,20 +54,20 @@ module.exports = {
|
|
|
/** Dependencies for non inclusion expressions. */
|
|
|
var expr = new ObjectExpression();
|
|
|
expr.addField("a", new ConstantExpression(5));
|
|
|
- assertEqualJson(expr.addDependencies([], [/*FAKING: includePath=true*/]), ["_id"], "unexpected dependencies (including _id)");
|
|
|
- assertEqualJson(expr.addDependencies([]), [], "unexpected dependencies (excluding _id)");
|
|
|
+ assertEqualJson(expr.addDependencies({}, [/*FAKING: includePath=true*/]), {"_id":1}, "unexpected dependencies (including _id)");
|
|
|
+ assertEqualJson(expr.addDependencies({}), {}, "unexpected dependencies (excluding _id)");
|
|
|
expr.addField("b", new FieldPathExpression("c.d"));
|
|
|
- assertEqualJson(expr.addDependencies([], [/*FAKING: includePath=true*/]), ["c.d", "_id"], "unexpected dependencies (including _id)");
|
|
|
- assertEqualJson(expr.addDependencies([]), ["c.d"], "unexpected dependencies (excluding _id)");
|
|
|
+ assertEqualJson(expr.addDependencies({}, [/*FAKING: includePath=true*/]), {"c.d":1, "_id":1}, "unexpected dependencies (including _id)");
|
|
|
+ assertEqualJson(expr.addDependencies({}), {"c.d":1}, "unexpected dependencies (excluding _id)");
|
|
|
},
|
|
|
|
|
|
"should be able to get dependencies for inclusion expressions": function testInclusionDependencies(){
|
|
|
/** Dependencies for inclusion expressions. */
|
|
|
var expr = new ObjectExpression();
|
|
|
expr.includePath( "a" );
|
|
|
- assertEqualJson(expr.addDependencies([], [/*FAKING: includePath=true*/]), ["_id", "a"], "unexpected dependencies (including _id)");
|
|
|
+ assertEqualJson(expr.addDependencies({}, [/*FAKING: includePath=true*/]), {"_id":1, "a":1}, "unexpected dependencies (including _id)");
|
|
|
assert.throws(function(){
|
|
|
- expr.addDependencies([]);
|
|
|
+ expr.addDependencies({});
|
|
|
}, Error);
|
|
|
},
|
|
|
|
|
|
@@ -107,7 +108,7 @@ module.exports = {
|
|
|
assertExpectedResult({
|
|
|
expression: expr,
|
|
|
expected: {"_id":0},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {},
|
|
|
});
|
|
|
},
|
|
|
@@ -119,7 +120,7 @@ module.exports = {
|
|
|
assertExpectedResult({
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":1},
|
|
|
- expectedDependencies: ["_id", "a"],
|
|
|
+ expectedDependencies: {"_id":1, "a":1},
|
|
|
expectedJsonRepresentation: {"a":true},
|
|
|
});
|
|
|
},
|
|
|
@@ -132,7 +133,7 @@ module.exports = {
|
|
|
source: {"_id":0, "b":2},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0},
|
|
|
- expectedDependencies: ["_id", "a"],
|
|
|
+ expectedDependencies: {"_id":1, "a":1},
|
|
|
expectedJsonRepresentation: {"a":true},
|
|
|
});
|
|
|
},
|
|
|
@@ -144,7 +145,7 @@ module.exports = {
|
|
|
assertExpectedResult({
|
|
|
expression: expr,
|
|
|
expected: {"_id":0},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {"_id":true},
|
|
|
});
|
|
|
},
|
|
|
@@ -157,7 +158,7 @@ module.exports = {
|
|
|
assertExpectedResult({
|
|
|
expression: expr,
|
|
|
expected: {"b":2},
|
|
|
- expectedDependencies: ["b"],
|
|
|
+ expectedDependencies: {"b":1},
|
|
|
expectedJsonRepresentation: {"_id":false, "b":true},
|
|
|
});
|
|
|
},
|
|
|
@@ -170,7 +171,7 @@ module.exports = {
|
|
|
assertExpectedResult({
|
|
|
expression: expr,
|
|
|
get expected() { return this.source; },
|
|
|
- expectedDependencies: ["_id", "a", "b"],
|
|
|
+ expectedDependencies: {"_id":1, "a":1, "b":1},
|
|
|
expectedJsonRepresentation: {"b":true, "a":true},
|
|
|
});
|
|
|
},
|
|
|
@@ -183,7 +184,7 @@ module.exports = {
|
|
|
source: {"_id":0, "a":{ "b":5, "c":6}, "z":2 },
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":5} },
|
|
|
- expectedDependencies: ["_id", "a.b"],
|
|
|
+ expectedDependencies: {"_id":1, "a.b":1},
|
|
|
expectedJsonRepresentation: {"a":{ "b":true} },
|
|
|
});
|
|
|
},
|
|
|
@@ -197,7 +198,7 @@ module.exports = {
|
|
|
source: {"_id":0, "a":{ "b":5, "c":6}, "z":2 },
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":5, "c":6} },
|
|
|
- expectedDependencies: ["_id", "a.b", "a.c"],
|
|
|
+ expectedDependencies: {"_id":1, "a.b":1, "a.c":1},
|
|
|
expectedJsonRepresentation: {"a":{ "b":true, "c":true} },
|
|
|
});
|
|
|
},
|
|
|
@@ -211,7 +212,7 @@ module.exports = {
|
|
|
source: {"_id":0, "a":{ "b":5 }, "c":{"d":6} },
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":5}, "c":{"d":6} },
|
|
|
- expectedDependencies: ["_id", "a.b", "c.d"],
|
|
|
+ expectedDependencies: {"_id":1, "a.b":1, "c.d":1},
|
|
|
expectedJsonRepresentation: {"a":{"b":true}, "c":{"d":true} }
|
|
|
});
|
|
|
},
|
|
|
@@ -224,7 +225,7 @@ module.exports = {
|
|
|
source: {"_id":0, "a":{ "c":6}, "z":2 },
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{} },
|
|
|
- expectedDependencies: ["_id", "a.b"],
|
|
|
+ expectedDependencies: {"_id":1, "a.b":1},
|
|
|
expectedJsonRepresentation: {"a":{ "b":true} },
|
|
|
});
|
|
|
},
|
|
|
@@ -237,7 +238,7 @@ module.exports = {
|
|
|
source: {"_id":0, "a":2, "z":2},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0},
|
|
|
- expectedDependencies: ["_id", "a.b"],
|
|
|
+ expectedDependencies: {"_id":1, "a.b":1},
|
|
|
expectedJsonRepresentation: {"a":{ "b":true} },
|
|
|
});
|
|
|
},
|
|
|
@@ -250,7 +251,7 @@ module.exports = {
|
|
|
source: {_id:0,a:[{b:5,c:6},{b:2,c:9},{c:7},[],2],z:1},
|
|
|
expression: expr,
|
|
|
expected: {_id:0,a:[{b:5},{b:2},{}]},
|
|
|
- expectedDependencies: ["_id", "a.b"],
|
|
|
+ expectedDependencies: {"_id":1, "a.b":1},
|
|
|
expectedJsonRepresentation: {"a":{ "b":true} },
|
|
|
});
|
|
|
},
|
|
|
@@ -263,7 +264,7 @@ module.exports = {
|
|
|
source: {"_id":0, "a":{ "_id":1, "b":1} },
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":1} },
|
|
|
- expectedDependencies: ["_id", "a.b"],
|
|
|
+ expectedDependencies: {"_id":1, "a.b":1},
|
|
|
expectedJsonRepresentation: {"a":{ "b":true} },
|
|
|
});
|
|
|
},
|
|
|
@@ -276,7 +277,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":5},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {"a":{ "$const":5} },
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -290,7 +291,7 @@ module.exports = {
|
|
|
source: {"_id":0, "a":99},
|
|
|
expression: expr,
|
|
|
expected: {"_id": 0, "a": 5},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {"a": {"$const": 5}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -304,7 +305,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{$const:undefined}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -318,7 +319,7 @@ module.exports = {
|
|
|
source: {"_id":0, "a":99},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":5},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {"a":{"$const":5}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -332,7 +333,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":null},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {"a":{"$const":null}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -346,7 +347,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{"b":5}},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {"a":{"b":{"$const":5}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -360,7 +361,7 @@ module.exports = {
|
|
|
source: {"_id":0, "x":4},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":4},
|
|
|
- expectedDependencies: ["_id", "x"],
|
|
|
+ expectedDependencies: {"_id":1, "x":1},
|
|
|
expectedJsonRepresentation: {"a":"$x"},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -374,7 +375,7 @@ module.exports = {
|
|
|
source: {"_id":0, "x":{"y":4}},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{"b":4}},
|
|
|
- expectedDependencies: ["_id", "x.y"],
|
|
|
+ expectedDependencies: {"_id":1, "x.y":1},
|
|
|
expectedJsonRepresentation: {"a":{"b":"$x.y"}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -391,7 +392,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{b:{$const:undefined}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -408,7 +409,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":6} },
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{b:{$const:6}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -423,7 +424,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":6, "c":7} },
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{b:{$const:6},c:{$const:7}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -440,7 +441,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":6, "c":7} },
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{b:{$const:6},c:{$const:7}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -457,7 +458,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":6, "c":7} },
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{b:{$const:6},c:{$const:7}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -476,7 +477,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":6, "c":7} },
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{b:{$const:6},c:{$const:7}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -495,7 +496,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":6, "d":7, "c":8} },
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{b:{$const:6},d:{$const:7},c:{$const:8}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|
|
|
@@ -514,7 +515,7 @@ module.exports = {
|
|
|
source: {"_id":0},
|
|
|
expression: expr,
|
|
|
expected: {"_id":0, "a":{ "b":{ "c":6, "d":7}}},
|
|
|
- expectedDependencies: ["_id"],
|
|
|
+ expectedDependencies: {"_id":1},
|
|
|
expectedJsonRepresentation: {a:{b:{c:{$const:6},d:{$const:7}}}},
|
|
|
expectedIsSimple: false
|
|
|
});
|