Skip to content

Commit f7e38bd

Browse files
authored
Merge pull request #597 from Real-Dev-Squad/develop
dev to main sync
2 parents 48d6d6e + cabcf30 commit f7e38bd

File tree

5 files changed

+341
-86
lines changed

5 files changed

+341
-86
lines changed

__tests__/extension-requests/extension-requests.test.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,19 @@ describe('Tests the Extension Requests Screen', () => {
300300
},
301301
body: JSON.stringify(extensionRequestLogs['fuQs71a0Y7BX3n4rc5Ii']),
302302
});
303+
} else if (
304+
url ===
305+
'https://api.realdevsquad.com/extension-requests/fuQs71a0Y7BX3n4rc5Ii?dev=true'
306+
) {
307+
interceptedRequest.respond({
308+
status: 200,
309+
contentType: 'application/json',
310+
headers: {
311+
'Access-Control-Allow-Origin': '*',
312+
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
313+
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
314+
},
315+
});
303316
} else if (
304317
url ===
305318
'https://api.realdevsquad.com/logs/extensionRequests/?meta.extensionRequestId=lw7dRB0I3a6ivsFR5Izs&dev=true'
@@ -779,4 +792,60 @@ describe('Tests the Extension Requests Screen', () => {
779792
);
780793
expect(cardNumber2Value).toBe('1');
781794
});
795+
796+
it('Validating if audit logs are being generated in realtime', async () => {
797+
// Visit extension request under dev flag
798+
await page.goto('http://localhost:8000/extension-requests/?dev=true');
799+
const extensionRequestIds = [
800+
'log-container-fuQs71a0Y7BX3n4rc5Ii',
801+
'log-container-lw7dRB0I3a6ivsFR5Izs',
802+
];
803+
804+
// Select all types of status of extension requests
805+
await page.click('#filter-button');
806+
await page.click('input[value="APPROVED"]');
807+
await page.click('input[value="DENIED"]');
808+
await page.click('#apply-filter-button');
809+
await page.waitForNetworkIdle();
810+
811+
// Checking if both the extension request cards are renedered or not
812+
const cardsList = await page.$$('.extension-card');
813+
expect(cardsList.length).toBe(2);
814+
815+
const accordionButton = await page.$$('.accordion');
816+
// Validate first extension card which is based on updated logs
817+
accordionButton[0].click();
818+
await page.waitForNetworkIdle();
819+
let extensionLogsForFirstER = await page.$(`#${extensionRequestIds[0]}`);
820+
let logs = await extensionLogsForFirstER.$$('.log-div');
821+
822+
// Click the first element with class '.edit-button'
823+
await page.$$eval('.edit-button', (buttons) => buttons[0].click());
824+
const newTitle = 'This is a new title test case';
825+
const newDate = '2024-09-19T22:20';
826+
const newReason = 'This is the new reason';
827+
828+
// Updating all the input fields
829+
await page.$$eval(
830+
'.title-text-input',
831+
(inputFields, newTitle) => (inputFields[0].value = newTitle),
832+
newTitle,
833+
);
834+
await page.$$eval(
835+
'.date-input',
836+
(inputFields, newDate) => (inputFields[0].value = newDate),
837+
newDate,
838+
);
839+
await page.$$eval(
840+
'.input-text-area',
841+
(inputFields, newReason) => (inputFields[0].value = newReason),
842+
newReason,
843+
);
844+
845+
await page.$$eval('.update-button', (buttons) => buttons[0].click());
846+
await page.waitForTimeout(1100);
847+
await page.waitForNetworkIdle();
848+
logs = await extensionLogsForFirstER.$$('.log-div');
849+
expect(Array.from(logs).length).toBe(9);
850+
});
782851
});

extension-requests/local-utils.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,9 +252,21 @@ const addSpinner = (container) => {
252252
return removeSpinner;
253253
};
254254

255-
const dateTimeString = (timestamp) => {
256-
return new Date(timestamp).toISOString().substring(0, 16);
257-
};
255+
/**
256+
Generates a formatted date-time string from milliseconds.*
257+
@param {number} milliseconds - The number of milliseconds since January 1, 1970 00:00:00 UTC.
258+
@returns {string} The formatted date-time string in the format 'YYYY-MM-DDTHH:mm'.
259+
260+
*/
261+
function dateTimeString(milliseconds) {
262+
const date = new Date(milliseconds);
263+
return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(
264+
2,
265+
'0',
266+
)}-${String(date.getDate()).padStart(2, '0')}T${String(
267+
date.getHours(),
268+
).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`;
269+
}
258270

259271
const fullDateString = (timestamp) => {
260272
const daysOfWeek = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];

0 commit comments

Comments
 (0)