@mvp-rockets/namma-generator
Version:
A generator to generate mvp-rockets projects
94 lines (83 loc) • 2.34 kB
JavaScript
const chai = require("chai");
const sinon = require("sinon");
const sinonChai = require("sinon-chai");
const { expect } = chai;
const TestRoutes = require("helpers/test-route");
chai.use(sinonChai);
const uuid = require("uuid");
const db = require("db/repository");
const {
resolveError,
validationError,
resolveDbResult,
resolveOk,
} = require("helpers/resolvers");
const { verifyArgs } = require("helpers/verifiers");
const CreateUserQuery = require("resources/users/queries/create-user-query");
describe("describe user create api", () => {
let sandbox = sinon.createSandbox();
let req, res;
beforeEach(() => {
req = {
body: {
username: "dheeraj",
password: "dheeraj123"
},
};
res = {
setHeader: sandbox.spy(),
send: sandbox.spy(),
status: sandbox.spy(() => {
return res;
}),
};
});
it("should create a new user when correct credentials are passed", async () => {
sandbox
.mock(db)
.expects("execute")
.withArgs(
verifyArgs((query) => {
expect(query).to.be.instanceOf(CreateUserQuery);
expect(query).to.have.property('username', 'dheeraj');
expect(query).to.have.property('password', 'dheeraj123');
})
)
.returns(
resolveOk({
username: "dheeraj",
password: "dheeraj123"
})
);
const response = await TestRoutes.execute("/users", "Post", req, res);
expect(response).to.be.eql({
status: true,
message: "Successfully create users!",
entity: {
username: "dheeraj",
password: "dheeraj123"
},
});
});
it("should respond failure when some error occurs", async () => {
sandbox
.mock(db)
.expects("execute")
.withArgs(
verifyArgs((query) => {
expect(query).to.be.instanceOf(CreateUserQuery);
})
)
.returns(resolveError("some error occurred"));
const response = await TestRoutes.executeWithError( "/users","Post",req,res);
expect(response).to.be.eql({
code:500,
error: 'some error occurred',
errorMessage: 'Failed to create users!',
errorDescription: 'Internal Server Error'
});
});
afterEach(() => {
sandbox.verifyAndRestore();
});
});