Skip to content

Commit

Permalink
Adding FF to Maven getting listed in idle,idle-7d+ (#2171)
Browse files Browse the repository at this point in the history
* added condition to prevent mavens being added to idle,idle7d

* edited test for group-idle-7d and added test for group-idle

* resolving build error

* resolving test errors

* fixing tests

* fixed the tests

* added model tests

* added line break

* resolving Tejas's comments

* fixed model function

* added feature flag

* adding feature flag

* edited tests

* fixing unit

* added FF

---------

Co-authored-by: Amit Prakash <[email protected]>
  • Loading branch information
fakhruddinkw and iamitprakash committed Sep 20, 2024
1 parent 14ca890 commit 0d6d058
Show file tree
Hide file tree
Showing 7 changed files with 372 additions and 20 deletions.
6 changes: 4 additions & 2 deletions controllers/discordactions.js
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,8 @@ const updateDiscordImageForVerification = async (req, res) => {
*/
const setRoleIdleToIdleUsers = async (req, res) => {
try {
const result = await discordRolesModel.updateIdleUsersOnDiscord();
const { dev } = req.query;
const result = await discordRolesModel.updateIdleUsersOnDiscord(dev);
return res.status(201).json({
message: "All Idle Users updated successfully.",
...result,
Expand All @@ -231,7 +232,8 @@ const setRoleIdleToIdleUsers = async (req, res) => {
*/
const setRoleIdle7DToIdleUsers = async (req, res) => {
try {
const result = await discordRolesModel.updateIdle7dUsersOnDiscord();
const { dev } = req.query;
const result = await discordRolesModel.updateIdle7dUsersOnDiscord(dev);
return res.status(201).json({
message: "All Idle 7d+ Users updated successfully.",
...result,
Expand Down
19 changes: 15 additions & 4 deletions models/discordactions.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const { FIRESTORE_IN_CLAUSE_SIZE } = require("../constants/users");
const discordService = require("../services/discordService");
const { buildTasksQueryForMissedUpdates } = require("../utils/tasks");
const { buildProgressQueryForMissedUpdates } = require("../utils/progresses");
const allMavens = [];

/**
*
Expand Down Expand Up @@ -312,7 +313,7 @@ const fetchGroupToUserMapping = async (roleIds) => {
}
};

const updateIdleUsersOnDiscord = async () => {
const updateIdleUsersOnDiscord = async (dev) => {
let totalIdleUsers = 0;
const totalGroupIdleRolesApplied = { count: 0, response: [] };
const totalGroupIdleRolesNotApplied = { count: 0, errors: [] };
Expand All @@ -335,6 +336,11 @@ const updateIdleUsersOnDiscord = async () => {
discordUsers?.forEach((discordUser) => {
const isDeveloper = discordUser.roles.includes(discordDeveloperRoleId);
const haveIdleRole = discordUser.roles.includes(groupIdleRole.role.roleid);
const isMaven = discordUser.roles.includes(discordMavenRoleId);

if (dev === "true" && isMaven) {
allMavens.push(discordUser.user.id);
}

if (isDeveloper && haveIdleRole) {
usersHavingIdleRole.push({ userid: discordUser.user.id });
Expand All @@ -349,7 +355,7 @@ const updateIdleUsersOnDiscord = async () => {
if (userData.exists) {
if (isUserArchived) {
totalArchivedUsers++;
} else {
} else if (dev === "true" && !allMavens.includes(userData.data().discordId)) {
userStatus.userid = userData.data().discordId;
allIdleUsers.push(userStatus);
}
Expand Down Expand Up @@ -537,7 +543,7 @@ const updateUsersNicknameStatus = async (lastNicknameUpdate) => {
}
};

const updateIdle7dUsersOnDiscord = async () => {
const updateIdle7dUsersOnDiscord = async (dev) => {
let totalIdle7dUsers = 0;
const totalGroupIdle7dRolesApplied = { count: 0, response: [] };
const totalGroupIdle7dRolesNotApplied = { count: 0, errors: [] };
Expand All @@ -562,6 +568,11 @@ const updateIdle7dUsersOnDiscord = async () => {
discordUsers?.forEach((discordUser) => {
const isDeveloper = discordUser.roles.includes(discordDeveloperRoleId);
const haveIdle7dRole = discordUser.roles.includes(groupIdle7dRoleId);
const isMaven = discordUser.roles.includes(discordMavenRoleId);

if (dev === "true" && isMaven) {
allMavens.push(discordUser.user.id);
}

if (isDeveloper && haveIdle7dRole) {
usersHavingIdle7dRole.push({ userid: discordUser.user.id });
Expand All @@ -583,7 +594,7 @@ const updateIdle7dUsersOnDiscord = async () => {
if (userData.exists) {
if (isUserArchived) {
totalArchivedUsers++;
} else {
} else if (dev === "true" && !allMavens.includes(userData.data().discordId)) {
userStatus.userid = userData.data().discordId;
allIdle7dUsers.push(userStatus);
}
Expand Down
46 changes: 46 additions & 0 deletions test/fixtures/discordResponse/discord-response.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,52 @@ const getDiscordMembers = [
mute: false,
deaf: false,
},
{
avatar: "",
communication_disabled_until: "",
flags: 0,
is_pending: false,
joined_at: "some_intensional_date", // ISO8601 timestamp
nick: "goliath",
pending: false,
premium_since: null,
roles: ["giant", "hero"],
user: {
id: "1234567",
username: "goliath",
global_name: "goliath",
display_name: "goliath",
avatar: "56yu6567uuju7636w4e6yr7e9utbw8r4", // avatar hash
discriminator: "44551", // 4-digit discord-tag
public_flags: 0,
avatar_decoration: null,
},
mute: false,
deaf: false,
},
{
avatar: "",
communication_disabled_until: "",
flags: 0,
is_pending: false,
joined_at: "some_intensional_date", // ISO8601 timestamp
nick: "goliath-1",
pending: false,
premium_since: null,
roles: ["giant", "hero"],
user: {
id: "2131234453456545656765767876",
username: "goliath-1",
global_name: "goliath-1",
display_name: "goliath-1",
avatar: "56yu6567uuju7636w4e6yr7e9utbw8r4", // avatar hash
discriminator: "44551", // 4-digit discord-tag
public_flags: 1,
avatar_decoration: null,
},
mute: false,
deaf: false,
},
];

const usersFromRds = [
Expand Down
3 changes: 3 additions & 0 deletions test/fixtures/discordactions/discordactions.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ const groupData = [

const groupIdle7d = { rolename: "group-idle-7d+", roleid: 4, createdBy: "1dad23q23j131j" };

const groupIdle = { rolename: "group-idle", roleid: 3, createdBy: "1dad23q23j131jj" };

const roleData = {
roleid: "test-role-id",
userid: "test-user-id",
Expand Down Expand Up @@ -56,4 +58,5 @@ module.exports = {
groupIdle7d,
roleDataFromDiscord,
groupOnboarding31dPlus,
groupIdle,
};
112 changes: 105 additions & 7 deletions test/integration/discordactions.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ const {
roleDataFromDiscord,
memberGroupData,
groupOnboarding31dPlus,
groupIdle,
} = require("../fixtures/discordactions/discordactions");
const discordServices = require("../../services/discordService");
const { addGroupRoleToMember, addInviteToInviteModel } = require("../../models/discordactions");
Expand Down Expand Up @@ -615,9 +616,30 @@ describe("Discord actions", function () {
let allIds;

beforeEach(async function () {
userData[0].roles = { archived: false };
userData[1].roles = { archived: false };
userData[2].roles = { archived: false };
userData[0] = {
...userData[0],
discordId: "123456789098765432",
discordJoinedAt: "2023-07-31T16:57:53.894000+00:00",
roles: { archived: false, in_discord: true },
};
userData[1] = {
...userData[1],
discordId: "12345678909867666",
discordJoinedAt: "2023-07-31T16:57:53.894000+00:00",
roles: { archived: false, in_discord: true },
};
userData[2] = {
...userData[2],
discordId: "1234567",
discordJoinedAt: "2023-07-31T16:57:53.894000+00:00",
roles: { archived: false, in_discord: true },
};

getDiscordMembers[3] = {
...getDiscordMembers[3],
roles: ["1212121212"],
};

await addUser(userData[0]);
await addUser(userData[1]);
await addUser(userData[2]);
Expand Down Expand Up @@ -650,17 +672,17 @@ describe("Discord actions", function () {
it("should update Idle 7d+ Users successfully and return a 201 status code", function (done) {
chai
.request(app)
.put(`/discord-actions/group-idle-7d`)
.put(`/discord-actions/group-idle-7d?dev=true`)
.set("Cookie", `${cookieName}=${superUserAuthToken}`)
.end((err, res) => {
if (err) {
return done(err);
}
expect(res).to.have.status(201);
expect(res.body.message).to.be.equal("All Idle 7d+ Users updated successfully.");
expect(res.body.totalIdle7dUsers).to.be.equal(3);
expect(res.body.totalGroupIdle7dRolesApplied.count).to.be.equal(3);
expect(res.body.totalUserRoleToBeAdded).to.be.equal(3);
expect(res.body.totalIdle7dUsers).to.be.equal(2);
expect(res.body.totalGroupIdle7dRolesApplied.count).to.be.equal(2);
expect(res.body.totalUserRoleToBeAdded).to.be.equal(2);
return done();
});
});
Expand Down Expand Up @@ -956,4 +978,80 @@ describe("Discord actions", function () {
expect(res.body.inviteLink).to.be.equal("discord.gg/asdfdsfsd");
});
});

describe("PUT /discord-actions/group-idle", function () {
let allIds;

beforeEach(async function () {
userData[0] = {
...userData[0],
discordId: "123456789098765432",
discordJoinedAt: "2023-07-31T16:57:53.894000+00:00",
roles: { archived: false, in_discord: true },
};
userData[1] = {
...userData[1],
discordId: "12345678909867666",
discordJoinedAt: "2023-07-31T16:57:53.894000+00:00",
roles: { archived: false, in_discord: true },
};
userData[2] = {
...userData[2],
discordId: "1234567",
discordJoinedAt: "2023-07-31T16:57:53.894000+00:00",
roles: { archived: false, in_discord: true },
};

getDiscordMembers[3] = {
...getDiscordMembers[3],
roles: ["1212121212"],
};

await addUser(userData[0]);
await addUser(userData[1]);
await addUser(userData[2]);

const addUsersPromises = userData.slice(0, 3).map((user) => userModel.add({ ...user }));
const responses = await Promise.all(addUsersPromises);
allIds = responses.map((response) => response.id);

const userStatusPromises = allIds.map(async (userId) => {
await updateUserStatus(userId, generateUserStatusData("IDLE", 1690829925336, 1690829925336));
});
await Promise.all(userStatusPromises);

const addRolesPromises = [discordRoleModel.add(groupIdle)];
await Promise.all(addRolesPromises);

fetchStub.returns(
Promise.resolve({
status: 200,
json: () => Promise.resolve(getDiscordMembers),
})
);
});

afterEach(async function () {
sinon.restore();
await cleanDb();
});

it("should update Idle Users successfully and return a 201 status code!", function (done) {
chai
.request(app)
.put(`/discord-actions/group-idle?dev=true`)
.set("Cookie", `${cookieName}=${superUserAuthToken}`)
.end((err, res) => {
if (err) {
return done(err);
}
expect(res).to.have.status(201);
expect(res.body.message).to.be.equal("All Idle Users updated successfully.");
expect(res.body.totalIdleUsers).to.be.equal(2);
expect(res.body.totalGroupIdleRolesApplied.count).to.be.equal(2);
expect(res.body.totalUserRoleToBeAdded).to.be.equal(2);
return done();
});
});
});
});
12 changes: 6 additions & 6 deletions test/integration/external-accounts.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ describe("External Accounts", function () {
expect(res).to.have.status(200);
expect(res.body).to.deep.equal({
rdsUsers: 3,
discordUsers: 3,
discordUsers: 5,
userUpdatedWithInDiscordFalse: 0,
usersMarkedUnArchived: 1,
message: "Data Sync Complete",
Expand Down Expand Up @@ -344,7 +344,7 @@ describe("External Accounts", function () {
usersArchivedCount: 1,
usersUnArchivedCount: 0,
totalUsersProcessed: 2,
rdsDiscordServerUsers: 3,
rdsDiscordServerUsers: 5,
backlogTasksCount: 2,
});
});
Expand All @@ -370,7 +370,7 @@ describe("External Accounts", function () {
usersArchivedCount: 0,
usersUnArchivedCount: 0,
totalUsersProcessed: 2,
rdsDiscordServerUsers: 3,
rdsDiscordServerUsers: 5,
backlogTasksCount: 0,
});
});
Expand All @@ -396,12 +396,12 @@ describe("External Accounts", function () {
usersArchivedCount: 0,
usersUnArchivedCount: 1,
totalUsersProcessed: 2,
rdsDiscordServerUsers: 3,
rdsDiscordServerUsers: 5,
backlogTasksCount: 0,
});
});

it("Should Do Nothing to Users With Archived as True and Not in RDS Discord Server", async function () {
it("Should Do Nothing to Users With Archived as True and Not in RDS Discord Server ", async function () {
await userModel.add(usersFromRds[3]); // archivedAndNotInDiscord

fetchStub.returns(
Expand All @@ -422,7 +422,7 @@ describe("External Accounts", function () {
usersArchivedCount: 0,
usersUnArchivedCount: 0,
totalUsersProcessed: 1,
rdsDiscordServerUsers: 3,
rdsDiscordServerUsers: 5,
backlogTasksCount: 0,
});
});
Expand Down
Loading

0 comments on commit 0d6d058

Please sign in to comment.