var col = db.collection('project');".
I have mocked the Db.prototype as suggested elsewhere and Db.collection is not function, but Db.prototype.collection function.
"devDependencies": { "mocha": "^3.0.2", "node-mocks-http": "^1.5.2", "should": "^9.0.2", "sinon": "^1.17.5", "sinon-as-promised": "^4.0.2"},"dependencies": { "body-parser": "^1.15.1", "co": "^4.6.0", "config": "^1.21.0", "express": "^4.14.0", "http-status-codes": "^1.0.6", "log4js": "^0.6.37", "method-override": "^2.3.6", "mongodb": "^2.2.4", "response-time": "^2.3.1", "try": "^0.13.3"}
describe('Project Services Tests', function() {
it('Test Create Project', function(done) { var response = buildResponse(); var request = HttpMocks.createRequest({ params: {'name': UNITTESTPROJECT}, body: { name: UNITTESTPROJECT, program: "Basic Test Data"} }); var MongoMock = Sinon.mock(MongoClient); var DBMock = Sinon.mock(MongoClient.Db.prototype); var CollectionMock = Sinon.mock(MongoClient.Collection.prototype); var countResult = 1; var aResult = {result: {insertedCount: 1}}; MongoMock.expects('connect').resolves(DBMock); DBMock.expects('collection').returns(CollectionMock); CollectionMock.expects('count').resolves(countResult); CollectionMock.expects('insertOne').resolves(aResult);
response.on('end', function() { should(response.statusCode).equal(HttpStatus.CREATED); done(); });
project.createProjectByName(request, response); });
co(function*() { var db = yield MongoClient.connect(dbUrl); var col = db.collection('project'); var count = yield col.count({name: projectName}); if (count > 0) { db.close(); res.status(HttpStatus.FORBIDDEN); res.send('Project ' + projectName + ' already exists. Duplicates not permitted'); } var result = yield col.insertOne(project); db.close();
if (result.insertedCount > 0) { res.status(HttpStatus.CREATED); res.send(req.protocol + '//' + req.hostname + req.originalUrl); } else { res.status(HttpStatus.INTERNAL_SERVER_ERROR); res.send('Project ' + projectName + ' unable to create.'); }}).catch(function(err) { res.status(HttpStatus.INTERNAL_SERVER_ERROR); res.send('Unable to create project' + req.params.name);});