Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion __tests__/extension-requests/extension-requests.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1223,7 +1223,7 @@ describe('Tests the Extension Requests Screen', () => {
expect(card).not.toBeNull();

const reasonText = await card.$eval(
'[data-testid="request-reason"]',
'[data-testid="reason-input-text-area"]',
(el) => el.textContent.trim(),
);
expect(reasonText).toBe(
Expand Down
16 changes: 16 additions & 0 deletions __tests__/home/home.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -554,4 +554,20 @@ describe('Home Page', () => {
const menuOff = await page.$('.nav-links:not(.active)');
expect(menuOff).toBeTruthy();
});

it('should display the requests button', async () => {
const requestsButton = await page.$('#requests-link');
expect(requestsButton).toBeTruthy();
const requestsButtonHref = await page.evaluate(
(el) => el.getAttribute('href'),
requestsButton,
);
expect(requestsButtonHref).toBe('/requests/index.html');
const requestsButtonText = await page.evaluate(
(el) => el.innerText,
requestsButton,
);
const trimmedRequestButtonText = requestsButtonText.trim();
expect(trimmedRequestButtonText).toBe('Requests');
});
});
208 changes: 73 additions & 135 deletions __tests__/requests/requests.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,50 +183,21 @@ describe('Tests the request cards', () => {
expect(isOOOTabLinkSelected).toBe(false);
});

it('should update the card when the accept or reject button is clicked for OOO requests', async () => {
await page.goto(`${LOCAL_TEST_PAGE_URL}/requests`);
await page.waitForNetworkIdle();

await page.click('#ooo_tab_link');
expect(page.url()).toContain('type=ooo');

await page.waitForSelector('.request__status');
const statusButtonText = await page.$eval(
'.request__status',
(el) => el.textContent,
);
expect(statusButtonText).toBe('Pending');

await page.click('.request__action__btn.accept__btn');

await page.waitForFunction(
() =>
document.querySelector('.request__status')?.textContent === 'Approved',
);

await page.waitForSelector('.request__status');
const updatedStatusButtonText = await page.$eval(
'.request__status',
(el) => el.textContent,
);
expect(updatedStatusButtonText).toBe('Approved');
});

it('should load the extension request when the extension tab is clicked', async () => {
await page.click('#extension_tab_link');
await page.waitForSelector('.request__card');
await page.waitForSelector('.request-card');

const cardTitle = await page.$eval(
'.request__content p',
'[data-testid="request-reason"]',
(el) => el.textContent,
);
expect(cardTitle).toBe('Reason: request message');
expect(cardTitle).toBe('request message');

const statusButtonText = await page.$eval(
'.request__status',
'.approve-button',
(el) => el.textContent,
);
expect(statusButtonText).toBe('Approved');
expect(statusButtonText).toBe('APPROVED');
});

it('should show requests cards after reloading the page', async () => {
Expand Down Expand Up @@ -288,7 +259,7 @@ describe('Tests the request cards', () => {
);

const statusButtonText = await page.$eval(
'[data-testid="request-status"]',
'[data-testid="request-card-status"] button',
(el) => el.textContent,
);
expect(statusButtonText.toLowerCase()).toBe(
Expand All @@ -308,57 +279,30 @@ describe('Tests the request cards', () => {

for (const card of requestCards) {
const statusText = await card.$eval(
'[data-testid="request-status"]',
'[data-testid="request-card-status"] button',
(el) => el.textContent.trim(),
);

const actionContainer = await card.$(
'[data-testid="action-container"]',
'[data-testid="request-action-container"]',
);
const approveButton = await card.$('[data-testid="approve-button"]');
const rejectButton = await card.$('[data-testid="reject-button"]');
const remarkInput = await card.$(
'[data-testid="request-remark-input"]',
);

if (statusText === 'Pending') {
expect(await actionContainer.isVisible()).toBe(true);
const approveButton = await card.$('.approve-button');
const rejectButton = await card.$('.reject-button');
expect(await actionContainer.isVisible()).toBe(true);
if (statusText === 'APPROVED') {
expect(await approveButton.isVisible()).toBe(true);
expect(rejectButton).toBeNull();
expect(remarkInput).toBeNull();
} else if (statusText === 'REJECTED') {
expect(approveButton).toBeNull();
expect(await rejectButton.isVisible()).toBe(true);
expect(await remarkInput.isVisible()).toBe(true);
expect(remarkInput).toBeNull();
} else {
expect(await actionContainer.isVisible()).toBe(false);
expect(await approveButton.isVisible()).toBe(false);
expect(await rejectButton.isVisible()).toBe(false);
expect(await remarkInput.isVisible()).toBe(false);
}
}
});

it('should display superuser details only for non-pending requests', async () => {
const onboardingTabLink = await page.$('[data-testid="onboarding-tab"]');
await onboardingTabLink.click();
await page.waitForSelector('[data-testid="onboarding-request-card"]');

const requestCards = await page.$$(
'[data-testid="onboarding-request-card"]',
);
expect(requestCards.length).toBeGreaterThan(0);

for (const card of requestCards) {
const statusText = await card.$eval(
'[data-testid="request-status"]',
(el) => el.textContent.trim(),
);

const superuserSection = await card.$(
'[data-testid="admin-info-and-status"]',
);

if (statusText === 'Pending') {
expect(await superuserSection.isVisible()).toBe(false);
} else {
expect(await superuserSection.isVisible()).toBe(true);
expect(await approveButton.isVisible()).toBe(true);
expect(await rejectButton.isVisible()).toBe(true);
expect(await remarkInput.isVisible()).toBe(true);
}
}
});
Expand Down Expand Up @@ -616,75 +560,69 @@ describe('Tests the request cards', () => {
expect(statusText).toContain('APPROVED');
});

describe('Test Request Card (Dev Mode Enabled)', () => {
beforeEach(async () => {
await page.goto(`${LOCAL_TEST_PAGE_URL}/requests?dev=true`);
await page.waitForNetworkIdle();
});

it('should display all the field in the request card', async () => {
const requestCards = await page.$$('[data-testid="ooo-request-card"]');
expect(requestCards.length).toBeGreaterThan(0);
it('should display all the field in the request card', async () => {
await page.goto(`${LOCAL_TEST_PAGE_URL}/requests`);
const requestCards = await page.$$('[data-testid="ooo-request-card"]');
expect(requestCards.length).toBeGreaterThan(0);

for (const card of requestCards) {
const approveButton = await card.$(
'[data-testid="request-approve-button"]',
);
const rejectButton = await card.$(
'[data-testid="request-reject-button"]',
);
const remarkInput = await card.$(
'[data-testid="request-remark-input"]',
);
for (const card of requestCards) {
const approveButton = await card.$(
'[data-testid="request-approve-button"]',
);
const rejectButton = await card.$(
'[data-testid="request-reject-button"]',
);
const remarkInput = await card.$('[data-testid="request-remark-input"]');

const requestTypeElement = await card.$('[data-testid="request-type"]');
const requestTypeText = await requestTypeElement.evaluate((el) =>
el.textContent.trim(),
);
const requestTypeElement = await card.$('[data-testid="request-type"]');
const requestTypeText = await requestTypeElement.evaluate((el) =>
el.textContent.trim(),
);

const requestReasonElement = await card.$(
'[data-testid="request-reason"]',
);
const requestReasonElement = await card.$(
'[data-testid="request-reason"]',
);

const requestReasonText = await requestReasonElement.evaluate((el) =>
el.textContent.trim(),
);
expect(approveButton).not.toBeNull();
expect(rejectButton).not.toBeNull();
expect(remarkInput).not.toBeNull();
expect(requestTypeText).toBe('OOO');
expect(requestReasonText).toBe(pendingRequest.data[0].reason);
}
});
const requestReasonText = await requestReasonElement.evaluate((el) =>
el.textContent.trim(),
);
expect(approveButton).not.toBeNull();
expect(rejectButton).not.toBeNull();
expect(remarkInput).not.toBeNull();
expect(requestTypeText).toBe('OOO');
expect(requestReasonText).toBe(pendingRequest.data[0].message);
}
});

it('should remove the card from display after approving the request', async () => {
const requestCards = await page.$$('[data-testid="ooo-request-card"]');
expect(requestCards.length).toBe(1);
it('should remove the card from display after rejecting the request', async () => {
await page.goto(`${LOCAL_TEST_PAGE_URL}/requests`);
const requestCards = await page.$$('[data-testid="ooo-request-card"]');
expect(requestCards.length).toBe(1);

const approveButton = await requestCards[0].$('.approve-button');
await approveButton.click();
approveButton.click();
const rejectButton = await requestCards[0].$('.reject-button');
await rejectButton.click();
await page.waitForTimeout(2000);

await page.waitForTimeout(2000);
const requestCardsAfterUpdate = await page.$$(
'[data-testid="ooo-request-card"]',
);
expect(requestCardsAfterUpdate.length).toBe(0);
});

const requestCardsAfterUpdate = await page.$$(
'[data-testid="ooo-request-card"]',
);
expect(requestCardsAfterUpdate.length).toBe(0);
});
it('should remove the card from display after approving the request', async () => {
await page.goto(`${LOCAL_TEST_PAGE_URL}/requests`);
const requestCards = await page.$$('[data-testid="ooo-request-card"]');
expect(requestCards.length).toBe(1);

it('should remove the card from display after rejecting the request', async () => {
const requestCards = await page.$$('[data-testid="ooo-request-card"]');
expect(requestCards.length).toBe(1);
const approveButton = await requestCards[0].$('.approve-button');
await approveButton.click();
approveButton.click();

const rejectButton = await requestCards[0].$('.reject-button');
await rejectButton.click();
await page.waitForTimeout(2000);
await page.waitForTimeout(2000);

const requestCardsAfterUpdate = await page.$$(
'[data-testid="ooo-request-card"]',
);
expect(requestCardsAfterUpdate.length).toBe(0);
});
const requestCardsAfterUpdate = await page.$$(
'[data-testid="ooo-request-card"]',
);
expect(requestCardsAfterUpdate.length).toBe(0);
});
});
4 changes: 3 additions & 1 deletion components/request-card/script.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
async function createRequestCardComponent({
data,
isExtensionRequest,
isOOORequest,
parentContainer,
currentUser,
requestUser,
Expand Down Expand Up @@ -112,6 +113,7 @@ async function createRequestCardComponent({
const requestActionContainer = createActionContainer({
context: {
isExtensionRequest,
isOOORequest,
data,
currentUser,
isStatusPending: requestDetails.statusPending,
Expand Down Expand Up @@ -466,7 +468,7 @@ function prepareRequestCardData({ data, isExtensionRequest }) {
newEndsOnInMillisecond,
(d) => d + (isNewDeadlineCrossed ? ' ago' : ''),
)
: getTwoDigitDate(newEndsOnInMillisecond, true);
: getTwoDigitDate(newEndsOnInMillisecond, false);

return {
oldEndsOnInMillisecond,
Expand Down
Loading
Loading