diff --git a/src/utils/formatUserDetails.ts b/src/utils/formatUserDetails.ts index ce345959..de80aacd 100644 --- a/src/utils/formatUserDetails.ts +++ b/src/utils/formatUserDetails.ts @@ -1,6 +1,6 @@ import { UserResponseType } from "../typeDefinitions/rdsUser"; -export function convertTimeStamp(userDetails: UserResponseType) { +export function convertTimeStamp(userDetails: UserResponseType, flag: boolean) { const timestamp = userDetails.user?.discordJoinedAt; if (timestamp) { @@ -9,27 +9,55 @@ export function convertTimeStamp(userDetails: UserResponseType) { const day = String(date.getDate()).padStart(2, "0"); const month = String(date.getMonth() + 1).padStart(2, "0"); const year = date.getFullYear(); + if (flag) { + const monthName = date.toLocaleString("default", { month: "short" }); + const formattedDate = `${day} ${monthName}, ${year}`; + return formattedDate; + } const formattedDate = `${day}/${month}/${year}`; return formattedDate; } return "N/A"; } +export function convertEpochToDate(timestamp: number | undefined) { + if (timestamp) { + const date = new Date(timestamp); + + const day = String(date.getDate()).padStart(2, "0"); + const month = date.toLocaleString("default", { month: "short" }); + const year = date.getFullYear(); + const formattedDate = `${day} ${month}, ${year}`; + + return formattedDate; + } + + return "N/A"; +} export function formatUserDetails( userDetails: UserResponseType, flag: boolean ) { - const convertedTimestamp = convertTimeStamp(userDetails); - - const userId = `**User Id :** ${userDetails.user?.id}`; - const userName = `**User Name :** ${userDetails.user?.username}`; - const userFullName = `**Full Name :** ${userDetails.user?.first_name} ${userDetails.user?.last_name}`; - const userState = `**State :** ${userDetails.user?.state}`; - const discordJoinedAt = `**Joined Server on :** ${convertedTimestamp}`; + const convertedTimestamp = convertTimeStamp(userDetails, flag); + const accountCreationDate = convertEpochToDate(userDetails.user?.created_at); + + const userId = " ".repeat(30) + `**Id:** ${userDetails.user?.id}`; + const userName = + " ".repeat(13) + `**Username:** ${userDetails.user?.username}`; + const userFullName = `${ + flag ? " ".repeat(13) + "**Full Name:**" : "**Full Name :**" + } ${userDetails.user?.first_name} ${userDetails.user?.last_name}`; + const userState = `${flag ? " ".repeat(23) + "**State:**" : "**State :**"} ${ + userDetails.user?.state + }`; + const discordJoinedAt = `${ + flag ? " ".repeat(4) + "**Joined Discord:**" : "**Joined Server on :**" + } ${convertedTimestamp}`; + const accountCreated = `**Account Created:** ${accountCreationDate}`; if (!flag) return `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`; - return `## User Details\n${userId}\n${userName}\n${userFullName}\n${userState}\n${discordJoinedAt}`; + return `## User Details\n${userName}\n${userState}\n\n${userFullName}\n${userId}\n\n${accountCreated}\n${discordJoinedAt}`; } diff --git a/tests/fixtures/user.ts b/tests/fixtures/user.ts index ee14d5e9..ed163ad7 100644 --- a/tests/fixtures/user.ts +++ b/tests/fixtures/user.ts @@ -2,6 +2,7 @@ export const user = { id: "iODXB6ns8jaZB9p0XlBw", incompleteUserDetails: false, discordJoinedAt: "2023-08-08T11:40:42.522000+00:00", + created_at: 1692748800000, discordId: "858838385330487336", github_display_name: "John Doe", updated_at: 1694888822719, @@ -178,6 +179,7 @@ export const userWithoutDiscordJoinedAt = { id: "DWcTUhbC5lRXfDjZRp06", incompleteUserDetails: false, discordJoinedAt: "", + created_at: 1692748800000, discordId: "504855562094247953", github_display_name: "John Doe", updated_at: 1694888822719, diff --git a/tests/unit/utils/formatUserDetails.test.ts b/tests/unit/utils/formatUserDetails.test.ts index 35b26f2b..5863991c 100644 --- a/tests/unit/utils/formatUserDetails.test.ts +++ b/tests/unit/utils/formatUserDetails.test.ts @@ -4,7 +4,10 @@ import { userResponse, userWithoutDiscordJoinedAtResponse, } from "../../fixtures/user"; -import { convertTimeStamp } from "../../../src/utils/formatUserDetails"; +import { + convertTimeStamp, + convertEpochToDate, +} from "../../../src/utils/formatUserDetails"; describe("formatUserDetails function", () => { it("Should return a string", () => { @@ -16,15 +19,18 @@ describe("formatUserDetails function", () => { it("should format user details correctly in dev mode", () => { const formattedDetails = formatUserDetails(userResponse, true).trim(); - const userId = `**User Id :** iODXB6ns8jaZB9p0XlBw`; - const userName = `**User Name :** johndoe`; - const userFullName = `**Full Name :** John Doe`; - const userState = `**State :** ACTIVE`; - const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp( - userResponse + const userId = " ".repeat(30) + `**Id:** iODXB6ns8jaZB9p0XlBw`; + const userName = " ".repeat(13) + `**Username:** johndoe`; + const userFullName = " ".repeat(13) + `**Full Name:** John Doe`; + const userState = " ".repeat(23) + `**State:** ACTIVE`; + const discordJoinedAt = + " ".repeat(4) + + `**Joined Discord:** ${convertTimeStamp(userResponse, true)}`; + const accountCreated = `**Account Created:** ${convertEpochToDate( + userResponse.user.created_at )}`; - const expectedFormattedDetails = `## User Details\n${userId}\n${userName}\n${userFullName}\n${userState}\n${discordJoinedAt}`; + const expectedFormattedDetails = `## User Details\n${userName}\n${userState}\n\n${userFullName}\n${userId}\n\n${accountCreated}\n${discordJoinedAt}`; expect(formattedDetails).toEqual(expectedFormattedDetails); }); @@ -34,7 +40,8 @@ describe("formatUserDetails function", () => { const userFullName = `**Full Name :** John Doe`; const userState = `**State :** ACTIVE`; const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp( - userResponse + userResponse, + false )}`; const expectedFormattedDetails = `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`; @@ -47,15 +54,21 @@ describe("formatUserDetails function", () => { true ).trim(); - const userId = `**User Id :** DWcTUhbC5lRXfDjZRp06`; - const userName = `**User Name :** johndoe`; - const userFullName = `**Full Name :** John Doe`; - const userState = `**State :** IDLE`; - const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp( - userWithoutDiscordJoinedAtResponse + const userId = " ".repeat(30) + `**Id:** DWcTUhbC5lRXfDjZRp06`; + const userName = " ".repeat(13) + `**Username:** johndoe`; + const userFullName = " ".repeat(13) + `**Full Name:** John Doe`; + const userState = " ".repeat(23) + `**State:** IDLE`; + const discordJoinedAt = + " ".repeat(4) + + `**Joined Discord:** ${convertTimeStamp( + userWithoutDiscordJoinedAtResponse, + true + )}`; + const accountCreated = `**Account Created:** ${convertEpochToDate( + userResponse.user.created_at )}`; - const expectedFormattedDetails = `## User Details\n${userId}\n${userName}\n${userFullName}\n${userState}\n${discordJoinedAt}`; + const expectedFormattedDetails = `## User Details\n${userName}\n${userState}\n\n${userFullName}\n${userId}\n\n${accountCreated}\n${discordJoinedAt}`; expect(formattedDetails).toEqual(expectedFormattedDetails); }); @@ -68,7 +81,8 @@ describe("formatUserDetails function", () => { const userFullName = `**Full Name :** John Doe`; const userState = `**State :** IDLE`; const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp( - userWithoutDiscordJoinedAtResponse + userWithoutDiscordJoinedAtResponse, + false )}`; const expectedFormattedDetails = `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`;