Skip to content

Commit 1e11643

Browse files
authored
added onboarding option to filters (#1280)
* added tests and achieved required functionality * resolved comments
1 parent bcba615 commit 1e11643

File tree

4 files changed

+41
-11
lines changed

4 files changed

+41
-11
lines changed

constants/users.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const USER_STATUS = {
1010
OOO: "ooo",
1111
IDLE: "idle",
1212
ACTIVE: "active",
13+
ONBOARDING: "onboarding",
1314
};
1415

1516
const ALLOWED_FILTER_PARAMS = {

middlewares/validators/user.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const joi = require("joi");
44
const { USER_STATUS } = require("../../constants/users");
55
const ROLES = require("../../constants/roles");
66
const { IMAGE_VERIFICATION_TYPES } = require("../../constants/imageVerificationTypes");
7+
const { userState } = require("../../constants/userStatus");
78

89
const updateUser = async (req, res, next) => {
910
const schema = joi
@@ -172,6 +173,7 @@ async function getUsers(req, res, next) {
172173
* @param next {Object} - Express middleware function
173174
*/
174175
async function validateUserQueryParams(req, res, next) {
176+
const validUserStates = [userState.OOO, userState.ONBOARDING, userState.IDLE, userState.ACTIVE];
175177
const schema = joi
176178
.object()
177179
.strict()
@@ -183,10 +185,7 @@ async function validateUserQueryParams(req, res, next) {
183185
tagId: joi.array().items(joi.string()).single().optional(),
184186
state: joi
185187
.alternatives()
186-
.try(
187-
joi.string().valid("IDLE", "OOO", "ACTIVE"),
188-
joi.array().items(joi.string().valid("IDLE", "OOO", "ACTIVE"))
189-
)
188+
.try(joi.string().valid(...validUserStates), joi.array().items(joi.string().valid(...validUserStates)))
190189
.optional(),
191190
role: joi.string().valid(ROLES.MEMBER, ROLES.INDISCORD, ROLES.ARCHIVED).optional(),
192191
verified: joi.string().optional(),

test/integration/users.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ describe("Users", function () {
117117
expect(res.body).to.eql({
118118
statusCode: 400,
119119
error: "Bad Request",
120-
message: '"status" must be one of [ooo, idle, active]',
120+
message: '"status" must be one of [ooo, idle, active, onboarding]',
121121
});
122122

123123
return done();

test/integration/usersFilter.test.js

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const { addTag } = require("../../models/tags");
1616
const { addLevel } = require("../../models/levels");
1717
const { addTagsToItem } = require("../../models/items");
1818
const { assertUserIds } = require("../utils/user");
19+
const { userState } = require("../../constants/userStatus");
1920

2021
const cookieName = config.get("userToken.cookieName");
2122

@@ -28,6 +29,7 @@ describe("Filter Users", function () {
2829
let idleUser;
2930
let activeUser;
3031
let tagIdFE;
32+
let onboardingUser;
3133
let tagIdBE;
3234
let levelId1;
3335
let levelId2;
@@ -42,12 +44,17 @@ describe("Filter Users", function () {
4244
oooUser = await addUser(userData[0]);
4345
await updateUserStatus(
4446
oooUser,
45-
generateUserStatusData("OOO", updatedAtDate, updatedAtDate, untilDate, "Bad Health")
47+
generateUserStatusData(userState.OOO, updatedAtDate, updatedAtDate, untilDate, "Bad Health")
4648
);
4749
idleUser = await addUser(userData[1]);
48-
await updateUserStatus(idleUser, generateUserStatusData("IDLE", updatedAtDate, updatedAtDate, untilDate, "CSS"));
50+
await updateUserStatus(
51+
idleUser,
52+
generateUserStatusData(userState.IDLE, updatedAtDate, updatedAtDate, untilDate, "CSS")
53+
);
4954
activeUser = await addUser(userData[8]);
50-
await updateUserStatus(activeUser, generateUserStatusData("ACTIVE", updatedAtDate, updatedAtDate));
55+
await updateUserStatus(activeUser, generateUserStatusData(userState.ACTIVE, updatedAtDate, updatedAtDate));
56+
onboardingUser = await addUser(userData[2]);
57+
await updateUserStatus(onboardingUser, generateUserStatusData(userState.ONBOARDING, updatedAtDate, updatedAtDate));
5158

5259
// creating tag and levels
5360
const { id: id1 } = await addTag({
@@ -147,6 +154,29 @@ describe("Filter Users", function () {
147154
});
148155
});
149156

157+
it("Should search users based on Onboarding state", function (done) {
158+
chai
159+
.request(app)
160+
.get("/users/search")
161+
.query({ state: "ONBOARDING" })
162+
.set("cookie", `${cookieName}=${jwt}`)
163+
.end((err, res) => {
164+
if (err) {
165+
return done(err);
166+
}
167+
expect(res).to.have.status(200);
168+
expect(res.body).to.be.a("object");
169+
expect(res.body.count).to.be.a("number");
170+
expect(res.body.message).to.equal("Users found successfully!");
171+
expect(res.body.users).to.be.a("array");
172+
expect(res.body.users.length).to.equal(1);
173+
expect(res.body.users[0]).to.deep.include({
174+
id: onboardingUser,
175+
});
176+
return done();
177+
});
178+
});
179+
150180
it("Should search users based on Tag", function (done) {
151181
chai
152182
.request(app)
@@ -193,7 +223,7 @@ describe("Filter Users", function () {
193223
chai
194224
.request(app)
195225
.get("/users/search")
196-
.query({ state: ["OOO", "IDLE"] })
226+
.query({ state: ["OOO", "IDLE", "ONBOARDING"] })
197227
.set("cookie", `${cookieName}=${jwt}`)
198228
.end((err, res) => {
199229
if (err) {
@@ -204,8 +234,8 @@ describe("Filter Users", function () {
204234
expect(res.body.count).to.be.a("number");
205235
expect(res.body.message).to.equal("Users found successfully!");
206236
expect(res.body.users).to.be.a("array");
207-
expect(res.body.users.length).to.equal(2);
208-
assertUserIds(res.body.users, [oooUser, idleUser]);
237+
expect(res.body.users.length).to.equal(3);
238+
assertUserIds(res.body.users, [oooUser, idleUser, onboardingUser]);
209239
return done();
210240
});
211241
});

0 commit comments

Comments
 (0)