Skip to content

Instantly share code, notes, and snippets.

@ebbersjathomes
Created May 22, 2014 17:02
Show Gist options
  • Save ebbersjathomes/7f4102f25417b0980988 to your computer and use it in GitHub Desktop.
Save ebbersjathomes/7f4102f25417b0980988 to your computer and use it in GitHub Desktop.
/**
* Created by ebbersj on 5/22/14.
*/
var createOrderLineItem = require("../../lib/service/order/createOrderLineItem"),
proxyquire = require("proxyquire"),
should = require("should"),
sinon = require("sinon");
var testData = {
"order_id" : 1,
"product_id" : 2,
"qty" : 3,
"zip" : "02345"
}
describe("./lib/service/order/createOrderLineItem.js", function(){
it("_validateData should error if order_id, product_id, qty and zip are not passed in", function(done){
createOrderLineItem._vaidateData({}, function(err, result){
should.exist(err);
err.should.have.property("message").equal("Invalid Data");
err.should.have.property("errors");
err.errors.length.should.equal(4);
done();
});
}),
it("_validate should not error when order_id, product_id qty and zip are not passed in", function(done){
createOrderLineItem._vaidateData(testData, function(err, result){
should.not.exist(err);
should.exist(result);
result.should.have.property("order_id").equal(testData.order_id);
result.should.have.property("product_id").equal(testData.product_id);
result.should.have.property("qty").equal(testData.qty);
result.should.have.property("zip").equal(testData.zip);
done();
});
}),
it("_pingOrder should pass order id", function(done){
var orderDAO = require("../../lib/dao/order/order"),
stubOrderDAO = sinon.stub(orderDAO, "checkExists", function(id, db, callback){
callback(null, true);
});
var stubCreateOrderLineItem = proxyquire("../../lib/service/order/createOrderLineItem", {"../../dao/order/order" : stubOrderDAO});
stubCreateOrderLineItem._pingOrder(testData,{"db" : true}, function(err, exists){
orderDAO.checkExists.restore();
stubOrderDAO.calledOnce.should.be.true;
stubOrderDAO.args[0][0].should.equal(testData.order_id);
stubOrderDAO.args[0][1].should.have.property("db").true;
done();
});
}),
it("_pingOrder should return true if true", function(done){
var orderDAO = require("../../lib/dao/order/order"),
stubOrderDAO = sinon.stub(orderDAO, "checkExists", function(id, db, callback){
callback(null, true);
});
var stubCreateOrderLineItem = proxyquire("../../lib/service/order/createOrderLineItem", {"../../dao/order/order" : stubOrderDAO});
stubCreateOrderLineItem._pingOrder(testData,{"db" : true}, function(err, exists){
orderDAO.checkExists.restore();
stubOrderDAO.calledOnce.should.be.true;
should.not.exist(err);
should.exist(exists);
exists.should.be.true;
done();
});
}),
it("_pingOrder should return false if false", function(done){
var orderDAO = require("../../lib/dao/order/order"),
stubOrderDAO = sinon.stub(orderDAO, "checkExists", function(id, db, callback){
callback(null, false);
});
var stubCreateOrderLineItem = proxyquire("../../lib/service/order/createOrderLineItem", {"../../dao/order/order" : stubOrderDAO});
stubCreateOrderLineItem._pingOrder(testData,{"db" : true}, function(err, exists){
orderDAO.checkExists.restore();
stubOrderDAO.calledOnce.should.be.true;
should.not.exist(err);
should.exist(exists);
exists.should.be.false;
done();
});
}),
it("_pingOrder should bubble up errors", function(done){
var orderDAO = require("../../lib/dao/order/order"),
stubOrderDAO = sinon.stub(orderDAO, "checkExists", function(id, db, callback){
callback({"message" : "test error message"});
});
var stubCreateOrderLineItem = proxyquire("../../lib/service/order/createOrderLineItem", {"../../dao/order/order" : stubOrderDAO});
stubCreateOrderLineItem._pingOrder(testData,{"db" : true}, function(err, exists){
orderDAO.checkExists.restore();
stubOrderDAO.calledOnce.should.be.true;
should.exist(err);
err.should.have.property("message").equal("test error message");
should.not.exist(exists);
done();
});
})
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment