Browse Source

EAGLESIX-812: All tests passing

Chris Sexton 11 năm trước cách đây
mục cha
commit
f67e604664

+ 7 - 6
lib/pipeline/documentSources/GroupDocumentSource.js

@@ -100,9 +100,9 @@ proto.getNext = function getNext(callback) {
 				return next();
 		},
 		function(next) {
+			// NOTE: Skipped the spilled functionality
 			if (self._spilled) {
-				// NOTE: this got skipped before, work on it
-				throw new Error("Spilled isn't finished.");
+				throw new Error("Spilled is not implemented.");
 			} else {
 				if(self.currentGroupsKeysIndex === self.groupsKeys.length) {
 					return next(null, DocumentSource.EOF);
@@ -110,7 +110,7 @@ proto.getNext = function getNext(callback) {
 
 				var id = self.groupsKeys[self.currentGroupsKeysIndex],
 					accumulators = self.groups[id],
-					out = self.makeDocument(id, accumulators, self.expCtx.inShard);
+					out = self.makeDocument(JSON.parse(id), accumulators, self.expCtx.inShard);
 
 				if(++self.currentGroupsKeysIndex === self.groupsKeys.length) {
 					self.dispose();
@@ -307,12 +307,13 @@ proto.populate = function populate(callback) {
 
 				if(undefined === id) id = null;
 
-				var group = self.groups[JSON.stringify(id)];
+				var groupKey = JSON.stringify(id),
+					group = self.groups[groupKey];
 
 				if(!group) {
-					self.groupsKeys.push(id);
+					self.groupsKeys.push(groupKey);
 					group = [];
-					self.groups[id] = group;
+					self.groups[groupKey] = group;
 					// Add the accumulators
 					for(var afi = 0; afi<self.accumulatorFactories.length; afi++) {
 						group.push(new self.accumulatorFactories[afi]());

+ 1 - 0
lib/pipeline/expressions/index.js

@@ -4,6 +4,7 @@ module.exports = {
 	AndExpression: require("./AndExpression.js"),
 	CoerceToBoolExpression: require("./CoerceToBoolExpression.js"),
 	CompareExpression: require("./CompareExpression.js"),
+	ConcatExpression: require("./ConcatExpression.js"),
 	CondExpression: require("./CondExpression.js"),
 	ConstantExpression: require("./ConstantExpression.js"),
 	DayOfMonthExpression: require("./DayOfMonthExpression.js"),

+ 4 - 3
test/lib/pipeline/documentSources/GroupDocumentSource.js

@@ -5,7 +5,8 @@ var assert = require("assert"),
 	Cursor = require("../../../../lib/Cursor"),
 	GroupDocumentSource = require("../../../../lib/pipeline/documentSources/GroupDocumentSource"),
 	async = require('async'),
-	utils = require("../expressions/utils");
+	utils = require("../expressions/utils"),
+	expressions = require("../../../../lib/pipeline/expressions");
 
 
 /// An assertion for `ObjectExpression` instances based on Mongo's `ExpectedResultBase` class
@@ -44,7 +45,7 @@ function assertExpectedResult(args) {
 				});
 			},
 			function(err) {
-				assert.deepEqual(results, args.expected);
+				assert.equal(JSON.stringify(results), JSON.stringify(args.expected));
 				if(args.done) {
 					return args.done();
 				}
@@ -246,7 +247,7 @@ module.exports = {
 			"should make one group with two values": function TwoValuesSingleKey() {
 				assertExpectedResult({
 					docs: [{a:1}, {a:2}],
-					spec: {_id:"$_id", a:{$push:"$a"}},
+					spec: {_id:0, a:{$push:"$a"}},
 					expected: [{_id:0, a:[1,2]}]
 				});
 			},