Skip to content

Commit b9afb1b

Browse files
add and skip tests for the mark standup api (#1043)
* add and skip tests for the mark standup api * change route to use the userId from fixtures * change route to use the userId from fixtures * change route to get 404 in test * add tests for get and save standup api * add tests for un marking the user * add proper path for user query model * add messages for 404 errors * refactor code to seperate imports and promote better code * refactor code to seperate imports and promote better code
1 parent 29b16be commit b9afb1b

File tree

2 files changed

+199
-0
lines changed

2 files changed

+199
-0
lines changed

test/fixtures/standup/standup.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module.exports = () => {
2+
return [
3+
{
4+
timestamp: "2023-04-20T16:23:58Z",
5+
yesterday: "Did something",
6+
today: "will do something",
7+
blockers: "nothing",
8+
},
9+
{
10+
yesterday: "Did something",
11+
today: "will do something",
12+
blockers: "nothing",
13+
},
14+
];
15+
};

test/integration/standup.test.js

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
const chai = require("chai");
2+
3+
const app = require("../../server");
4+
5+
const authService = require("../../services/authService");
6+
7+
const userQuery = require("../../models/users");
8+
9+
const addUser = require("../utils/addUser");
10+
const cleanDb = require("../utils/cleanDb");
11+
12+
const userData = require("../fixtures/user/user")();
13+
const standupData = require("../fixtures/standup/standup");
14+
15+
const cookieName = config.get("userToken.cookieName");
16+
const superUser = userData[4];
17+
const { object } = require("joi");
18+
const { expect } = chai;
19+
20+
// eslint-disable-next-line mocha/no-skipped-tests
21+
describe.skip("Test standup api", function () {
22+
let superUserId;
23+
let superUserAuthToken;
24+
let jwt;
25+
let userId = "";
26+
beforeEach(async function () {
27+
userId = await addUser();
28+
jwt = authService.generateAuthToken({ userId });
29+
superUserId = await addUser(superUser);
30+
superUserAuthToken = authService.generateAuthToken({ userId: superUserId });
31+
});
32+
33+
afterEach(async function () {
34+
await cleanDb();
35+
});
36+
37+
describe("Test the mark api", function () {
38+
it("Checks superuser can mark a user as monitored", function (done) {
39+
chai
40+
.request(app)
41+
.post(`/standup/${userId}`)
42+
.set("Cookie", `${cookieName}=${superUserAuthToken}`)
43+
.send({
44+
monitor: true,
45+
})
46+
.end((err, res) => {
47+
if (err) {
48+
return done(err);
49+
}
50+
const userData = userQuery.fetchUser({ userId: userId });
51+
expect(res).to.have.status(200);
52+
expect(res.body).to.be.a(object);
53+
expect(res.body.message).to.equal("User marked for standup successfully.");
54+
expect(userData.roles).to.have.property("monitored");
55+
expect(userData.roles.monitored).to.be.equal(true);
56+
return done();
57+
});
58+
});
59+
it("Checks superuser can un-mark a user from monitoring", function (done) {
60+
chai
61+
.request(app)
62+
.post(`/standup/${userId}`)
63+
.set("Cookie", `${cookieName}=${superUserAuthToken}`)
64+
.send({
65+
monitor: false,
66+
})
67+
.end((err, res) => {
68+
if (err) return done(err);
69+
const userData = userQuery.fetchUser({ userId: userId });
70+
expect(res).to.have.status(200);
71+
expect(res.body).to.be.a(object);
72+
expect(res.body.message).to.equal("User unmarked for standup successfully.");
73+
expect(userData.roles).to.have.property("monitored");
74+
expect(userData.roles.monitored).to.be.equal(false);
75+
return done();
76+
});
77+
});
78+
it("Should return 401 for other/un-authenticated users", function (done) {
79+
chai
80+
.request(app)
81+
.post(`/standup/${userId}`)
82+
.set("Cookie", `${cookieName}=${jwt}`)
83+
.send({
84+
monitor: true,
85+
})
86+
.end((err, res) => {
87+
if (err) return done(err);
88+
expect(res).to.have.status(401);
89+
expect(res.body).to.be.a(object);
90+
expect(res.body.message).to.equal("Unauthenticated User");
91+
return done();
92+
});
93+
});
94+
it("Should return 404 for invalid user id", function (done) {
95+
chai
96+
.request(app)
97+
.post(`/standup/123`)
98+
.set("Cookie", `${cookieName}=${superUserAuthToken}`)
99+
.end((err, res) => {
100+
if (err) return done(err);
101+
expect(res).to.have.status(404);
102+
expect(res.body).to.be.a(object);
103+
expect(res.body.message).to.equal("UserId not found");
104+
return done();
105+
});
106+
});
107+
});
108+
109+
describe("Test the get standup Api", function () {
110+
it("should return the standup of specified user", function (done) {
111+
chai
112+
.request(app)
113+
.get(`/standup/${userId}`)
114+
.end((err, res) => {
115+
if (err) return done(err);
116+
expect(res).to.have.status(200);
117+
expect(res.body).to.be.a(object);
118+
expect(res.body).to.include.keys(["yesterday", "today", "blockers", "timestamp"]);
119+
return done();
120+
});
121+
});
122+
123+
it("should return 404 for user not found", function (done) {
124+
chai
125+
.request(app)
126+
.get("/standup/123")
127+
.end((err, res) => {
128+
if (err) return done(err);
129+
expect(res).to.have.status(404);
130+
expect(res.body).to.be.a(object);
131+
expect(res.body.message).to.equal("UserId not found");
132+
return done();
133+
});
134+
});
135+
});
136+
137+
describe("The save standup API", function () {
138+
it("Should save standup of the signed in user", function (done) {
139+
chai
140+
.request(app)
141+
.post("/standup")
142+
.set("Cookie", `${cookieName}=${jwt}`)
143+
.send(standupData()[0])
144+
.end((err, res) => {
145+
if (err) return done(err);
146+
expect(res).to.have.status(200);
147+
expect(res.body).to.be.a(object);
148+
expect(res.body).to.have.property("message");
149+
expect(res.body.message).to.be.equal("Standup data stored successfully.");
150+
return done();
151+
});
152+
});
153+
154+
it("Should return 400 or invalid body", function (done) {
155+
chai
156+
.request(app)
157+
.post("/standup")
158+
.set("Cookie", `${cookieName}=${jwt}`)
159+
.send(standupData()[1])
160+
.end((err, res) => {
161+
if (err) return done(err);
162+
expect(res).to.have.status(400);
163+
expect(res.body).to.be.a(object);
164+
expect(res.body).to.have.property("message");
165+
expect(res.body.message).to.be.equal(`"timestamp" is required`);
166+
return done();
167+
});
168+
});
169+
170+
it("Should return 401 for not logged in user", function (done) {
171+
chai
172+
.request(app)
173+
.post("/standup")
174+
.send(standupData[0])
175+
.end((err, res) => {
176+
if (err) return done(err);
177+
expect(res).to.have.status(401);
178+
expect(res.body).to.be.a(object);
179+
expect(res.body.message).to.equal("Unauthenticated User");
180+
return done();
181+
});
182+
});
183+
});
184+
});

0 commit comments

Comments
 (0)