Tuesday, 18 April 2017

Mockgoose reset throws an error in Nodejs

I am new to unittesting and mocking.I have used mockgoose to mock the mongodb using a tutorial.This is my code to test few API's>i am creating mockgoose in the beginning and destroying it at the end. The test cases pass and the afterall hook fails with this error:

2017-04-18T22:27:31.489Z - error: (node:5960) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 10): TypeError: connection.dropDatabase is not a function

Please help.

'use strict';

let UserController = require('../app/controllers/UserController');
let chai = require('chai');
let chaiHttp = require('chai-http');
let server = require('../test/server-test');
var Mongoose = require('mongoose').Mongoose;
var mongoose = new Mongoose();
var Mockgoose = require('mockgoose').Mockgoose;
var mockgoose = new Mockgoose(mongoose);
let should = chai.should();
let Customer_id = mongoose.Types.ObjectId();
// let db = require('./_db');
chai.use(chaiHttp);
describe('users', function() {
    describe('/admin/api/users users', function() {
        before(function(done) {
            mockgoose.prepareStorage().then(function() {
                console.log("in mockgoose creation");
                mongoose.connect(globals.database.mongoUrl + "cstest", function(err) {
                    console.log("connection created");
                    done(err);
                });
            });

        });
        //       // ++++++++++++++++++++++++++++++++Create a User++++++++++++++++++++++++++++++
        it('it should CREATE a user', (done) => {
            console.log("in post  ");
            chai.request(server)
                .post('/admin/api/users')
                .set('cid', '0000')
                .send({
                    name: "LocalSetup",
                    _id: 1111
                })
                .end((err, res) => {
                    if (err) {
                        console.log("in end");
                        console.error(err);
                    }
                    res.should.have.status(201);
                    done();
                });
        });
        // ++++++++++++++++++++++++get user by ID++++++++++++++++++++++++++++
        it('it should GET userrs', (done) => {
            var CustomerModel = {
                getByCustomerId: function(a, b, cb) {
                    cb(null, {
                        auth0: 'abc123'
                    });
                }
            };
            chai.request(server)
                .get('/admin/api/users')
                .set('cid', '0000')
                .end((err, res) => {
                    if (err) {
                        console.error(err);
                        return done(err);
                    }
                    res.should.have.status(200);
                    done();



                });
        });
        // ---------------------Update the values--------------------
        it('get details', (done) => {
            chai.request(server)
                .get('/admin/api/users/:userId')
                .set('cid', '0000')
                .end((err, res) => {
                    if (err) {
                        console.log("in get error");
                        console.error(err);
                        return done(err);
                    }
                    res.should.have.status(200);

                    console.log("All Users");
                    done();

                });
        });

        // +++++++++++++++++++++++++Delete the Values++++++++++++++++++++++
        //
        it.only('should update the email address', (done) => {
            console.log("email id");
            chai.request(server)
                .put('/admin/api/users/userProfile/' + 'userId')
                .set('cid', '0000')
                .send({
                    "email": "new@test.com"
                })
                .end((err, res) => {
                    if (err) {
                        console.log("eroor");
                        console.error(err);
                    }
                    res.should.have.status(200);
                    done(); //
                });

        });

        // ++++++++++++++++++DB CleanUp++++++++++++++++++++++++++
        after(function(done) {
            if (mockgoose.helper.isMocked() === true) {
                console.log("is status true");
                mockgoose.helper.reset().then(() => {
                    server.close();
                    done();
                });
            }

        });
    });
});



via sam

No comments:

Post a Comment