Browse Source

Fixed munge month expression and added test cases. fixes #970

http://source.rd.rcg.local/trac/eagle6/changeset/1275/Eagle6_SVN
Philip Murray 12 years ago
parent
commit
2935226aaa

+ 3 - 3
lib/pipeline/expressions/MonthExpression.js

@@ -5,7 +5,7 @@ var MonthExpression = module.exports = (function(){
 		if(arguments.length !== 0) throw new Error("zero args expected");
 		base.call(this);
 	}, base = require("./NaryExpression"), proto = klass.prototype = Object.create(base.prototype, {constructor:{value:klass}});
-
+		
 	// PROTOTYPE MEMBERS
 	proto.getOpName = function getOpName(){
 		return "$month";
@@ -13,13 +13,13 @@ var MonthExpression = module.exports = (function(){
 
 	proto.addOperand = function addOperand(expr) {
 		this.checkArgLimit(1);
-		base.addOperand(expr);
+		base.prototype.addOperand.call(this, expr);
 	};
 
 	/** Takes a date and returns the month as a number between 1 and 12. **/
 	proto.evaluate = function evaluate(doc){
 		this.checkArgCount(1);
-		var date = this.operands[0].evalute(doc);
+		var date = this.operands[0].evaluate(doc);
 		return date.getMonth() + 1;
 	};
 

+ 47 - 0
test/lib/pipeline/expressions/MonthExpression.js

@@ -0,0 +1,47 @@
+var assert = require("assert"),
+	MonthExpression = require("../../../../lib/pipeline/expressions/MonthExpression"),
+	Expression = require("../../../../lib/pipeline/expressions/Expression");
+
+module.exports = {
+
+	"MonthExpression": {
+
+		"constructor()": {
+
+			"should not throw Error when constructing without args": function testConstructor(){
+				assert.doesNotThrow(function(){
+					new MonthExpression();
+				});
+			}
+
+		},
+
+		"#getOpName()": {
+
+			"should return the correct op name; $month": function testOpName(){
+				assert.equal(new MonthExpression().getOpName(), "$month");
+			}
+
+		},
+
+		"#getFactory()": {
+
+			"should return the constructor for this class": function factoryIsConstructor(){
+				assert.strictEqual(new MonthExpression().getFactory(), undefined);
+			}
+
+		},
+
+		"#evaluate()": {
+
+			"should return month; 2 for 2013-02-18": function testStuff(){
+				assert.strictEqual(Expression.parseOperand({$month:"$someDate"}).evaluate({someDate:new Date("Mon Feb 18 2013 00:00:00 GMT-0500 (EST)")}), 2);
+			}
+
+		}
+
+	}
+
+};
+
+if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run(process.exit);

+ 1 - 1
test/lib/pipeline/expressions/YearExpression.js

@@ -34,7 +34,7 @@ module.exports = {
 
 		"#evaluate()": {
 
-			"should return day of week; 2013 for 2013-02-18": function testStuff(){
+			"should return year; 2013 for 2013-02-18": function testStuff(){
 				assert.strictEqual(Expression.parseOperand({$year:"$someDate"}).evaluate({someDate:new Date("Mon Feb 18 2013 00:00:00 GMT-0500 (EST)")}), 2013);
 			}