Skip to content

Commit ffa0f3f

Browse files
added feature flag
1 parent 8b40f37 commit ffa0f3f

File tree

5 files changed

+56
-9
lines changed

5 files changed

+56
-9
lines changed

src/constants/commands.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ export const USER = {
9696
type: 6,
9797
required: true,
9898
},
99+
{
100+
name: "dev",
101+
description: "want to see extra details?",
102+
type: 5,
103+
require: false,
104+
},
99105
],
100106
};
101107

src/controllers/baseHandler.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,10 @@ export async function baseHandler(
154154

155155
case getCommandName(USER): {
156156
const data = message.data?.options as Array<messageRequestDataOptions>;
157-
return await userCommand(data[0].value, env);
157+
const dev = data.find(
158+
(item) => item.name === "dev"
159+
) as unknown as DevFlag;
160+
return await userCommand(data[0].value, env, dev);
158161
}
159162
default: {
160163
return commandNotFound();

src/controllers/userCommand.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@ import { env } from "../typeDefinitions/default.types";
22
import { discordTextResponse } from "../utils/discordResponse";
33
import { getUserDetails } from "../utils/getUserDetails";
44
import { formatUserDetails } from "../utils/formatUserDetails";
5+
import { DevFlag } from "../typeDefinitions/filterUsersByRole";
56
import { USER_NOT_FOUND } from "../constants/responses";
67

7-
export async function userCommand(discordId: string, env: env) {
8+
export async function userCommand(discordId: string, env: env, dev?: DevFlag) {
89
try {
10+
const flag = dev?.value || false;
911
const userDetails = await getUserDetails(discordId);
1012
if (!userDetails.user?.discordId) {
1113
return discordTextResponse(USER_NOT_FOUND);
1214
}
13-
const formattedUserDetails = formatUserDetails(userDetails);
15+
const formattedUserDetails = formatUserDetails(userDetails, flag);
1416
return discordTextResponse(formattedUserDetails);
1517
} catch (error) {
1618
return discordTextResponse("Trouble in fetching user details.");

src/utils/formatUserDetails.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ export function convertTimeStamp(userDetails: UserResponseType) {
1616
return "N/A";
1717
}
1818

19-
export function formatUserDetails(userDetails: UserResponseType) {
19+
export function formatUserDetails(
20+
userDetails: UserResponseType,
21+
flag: boolean
22+
) {
2023
const convertedTimestamp = convertTimeStamp(userDetails);
2124

2225
const userId = `**User Id :** ${userDetails.user?.id}`;
@@ -25,5 +28,8 @@ export function formatUserDetails(userDetails: UserResponseType) {
2528
const userState = `**State :** ${userDetails.user?.state}`;
2629
const discordJoinedAt = `**Joined Server on :** ${convertedTimestamp}`;
2730

31+
if (!flag)
32+
return `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`;
33+
2834
return `## User Details\n${userId}\n${userName}\n${userFullName}\n${userState}\n${discordJoinedAt}`;
2935
}

tests/unit/utils/formatUserDetails.test.ts

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import { convertTimeStamp } from "../../../src/utils/formatUserDetails";
99
describe("formatUserDetails function", () => {
1010
it("Should return a string", () => {
1111
const userData: UserResponseType = userResponse;
12-
const formattedUserDetails = formatUserDetails(userData);
12+
const formattedUserDetails = formatUserDetails(userData, true);
1313
expect(typeof formattedUserDetails).toBe("string");
1414
});
1515

16-
it("should format user details correctly", () => {
17-
const formattedDetails = formatUserDetails(userResponse).trim();
16+
it("should format user details correctly in dev mode", () => {
17+
const formattedDetails = formatUserDetails(userResponse, true).trim();
1818

1919
const userId = `**User Id :** iODXB6ns8jaZB9p0XlBw`;
2020
const userName = `**User Name :** johndoe`;
@@ -28,9 +28,23 @@ describe("formatUserDetails function", () => {
2828
expect(formattedDetails).toEqual(expectedFormattedDetails);
2929
});
3030

31-
it("should return empty string if discordJoinedAt is undefined", () => {
31+
it("should format user details correctly when not in dev mode", () => {
32+
const formattedDetails = formatUserDetails(userResponse, false).trim();
33+
34+
const userFullName = `**Full Name :** John Doe`;
35+
const userState = `**State :** ACTIVE`;
36+
const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp(
37+
userResponse
38+
)}`;
39+
40+
const expectedFormattedDetails = `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`;
41+
expect(formattedDetails).toEqual(expectedFormattedDetails);
42+
});
43+
44+
it("should return empty string if discordJoinedAt is undefined in dev mode", () => {
3245
const formattedDetails = formatUserDetails(
33-
userWithoutDiscordJoinedAtResponse
46+
userWithoutDiscordJoinedAtResponse,
47+
true
3448
).trim();
3549

3650
const userId = `**User Id :** DWcTUhbC5lRXfDjZRp06`;
@@ -44,4 +58,20 @@ describe("formatUserDetails function", () => {
4458
const expectedFormattedDetails = `## User Details\n${userId}\n${userName}\n${userFullName}\n${userState}\n${discordJoinedAt}`;
4559
expect(formattedDetails).toEqual(expectedFormattedDetails);
4660
});
61+
62+
it("should return empty string if discordJoinedAt is undefined when not in dev mode", () => {
63+
const formattedDetails = formatUserDetails(
64+
userWithoutDiscordJoinedAtResponse,
65+
false
66+
).trim();
67+
68+
const userFullName = `**Full Name :** John Doe`;
69+
const userState = `**State :** IDLE`;
70+
const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp(
71+
userWithoutDiscordJoinedAtResponse
72+
)}`;
73+
74+
const expectedFormattedDetails = `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`;
75+
expect(formattedDetails).toEqual(expectedFormattedDetails);
76+
});
4777
});

0 commit comments

Comments
 (0)