diff --git a/__tests__/task-requests/task-requestDetails.test.js b/__tests__/task-requests/task-requestDetails.test.js index 88be744e..0c827846 100644 --- a/__tests__/task-requests/task-requestDetails.test.js +++ b/__tests__/task-requests/task-requestDetails.test.js @@ -3,6 +3,63 @@ const { urlMappings, defaultMockResponseHeaders, } = require('../../mock-data/taskRequests'); +const { user } = require('../../mock-data/users/index.js'); + +describe('Request container for non-super users', () => { + let browser; + let page; + jest.setTimeout(60000); + + beforeAll(async () => { + browser = await puppeteer.launch({ + headless: 'new', + ignoreHTTPSErrors: true, + args: ['--incognito', '--disable-web-security'], + devtools: false, + }); + page = await browser.newPage(); + await page.setRequestInterception(true); + page.on('request', (interceptedRequest) => { + const url = interceptedRequest.url(); + if (url == 'https://staging-api.realdevsquad.com/users/self') { + interceptedRequest.respond({ + ...defaultMockResponseHeaders, + body: JSON.stringify(user), + }); + } else if (urlMappings.hasOwnProperty(url)) { + interceptedRequest.respond({ + ...defaultMockResponseHeaders, + body: JSON.stringify(urlMappings[url]), + }); + } else { + interceptedRequest.continue(); + } + }); + await page.goto( + 'http://localhost:8000/task-requests/details/?id=dM5wwD9QsiTzi7eG7Oq5&dev=true', + ); + }); + + afterAll(async () => { + await browser.close(); + }); + + it('Approve and Reject buttons should not render for non-super users', async function () { + await page.waitForNetworkIdle(); + const approveButton = await page.$('[data-testid="task-approve-button"]'); + const rejectButton = await page.$('[data-testid="task-reject-button"]'); + expect(approveButton).toBeNull(); + expect(rejectButton).toBeNull(); + }); + + it('Should render task status for non-super users', async function () { + await page.waitForNetworkIdle(); + const taskRequestStatus = await page.$( + '[data-testid="requestors-task-status"]', + ); + expect(taskRequestStatus).toBeTruthy(); + }); +}); describe('Task request details page', () => { let browser; @@ -89,9 +146,13 @@ describe('Task request details page', () => { ); }); - it('Should contain Approve and Reject buttons', async function () { - const approveButton = await page.$('.requestors__conatainer__list__button'); - const rejectButton = await page.$('.request-details__reject__button'); + it('Should render Approve and Reject buttons for super users', async function () { + await page.goto( + 'http://localhost:8000/task-requests/details/?id=dM5wwD9QsiTzi7eG7Oq5&dev=true', + ); + await page.waitForNetworkIdle(); + const approveButton = await page.$('[data-testid="task-approve-button"]'); + const rejectButton = await page.$('[data-testid="task-reject-button"]'); expect(approveButton).toBeTruthy(); expect(rejectButton).toBeTruthy(); }); @@ -180,9 +241,13 @@ describe('Task request details page with markdown support in description', () => expect(descriptionHtmlValue).toContain('

Heading

'); }); - it('Should contain Approve and Reject buttons', async function () { - const approveButton = await page.$('.requestors__conatainer__list__button'); - const rejectButton = await page.$('.request-details__reject__button'); + it('Should render Approve and Reject buttons for super users', async function () { + await page.goto( + 'http://localhost:8000/task-requests/details/?id=dM5wwD9QsiTzi7eG7Oq6&dev=true', + ); + await page.waitForNetworkIdle(); + const approveButton = await page.$('[data-testid="task-approve-button"]'); + const rejectButton = await page.$('[data-testid="task-reject-button"]'); expect(approveButton).toBeTruthy(); expect(rejectButton).toBeTruthy(); }); diff --git a/__tests__/users/App.test.js b/__tests__/users/App.test.js index 05b36b53..54cbbeeb 100644 --- a/__tests__/users/App.test.js +++ b/__tests__/users/App.test.js @@ -37,9 +37,13 @@ describe('App Component', () => { headers, body: JSON.stringify({ ...filteredUsersData, - users: filteredUsersData.users.filter( - (user) => user.roles.in_discord, - ), + ...mockUserData, + users: [ + ...filteredUsersData.users.filter( + (user) => user.roles.in_discord, + ), + ...mockUserData.users.filter((user) => user.roles.in_discord), + ], }), }); } else if (url === `${API_BASE_URL}/users/search/?verified=true`) { @@ -49,9 +53,11 @@ describe('App Component', () => { headers, body: JSON.stringify({ ...filteredUsersData, - users: filteredUsersData.users.filter((user) => user.discordId), ...mockUserData, - users: mockUserData.users.filter((user) => user.discordId), + users: [ + ...filteredUsersData.users.filter((user) => user.discordId), + ...mockUserData.users.filter((user) => user.discordId), + ], }), }); } else { @@ -96,4 +102,48 @@ describe('App Component', () => { const url = await page.url(); expect(url).toContain('?tab=verified'); }); + + it('should handle user card clicks and apply active_tab class to clicked card only in discord tab', async () => { + await page.goto(`${BASE_URL}/users/discord/?tab=in_discord`); + await page.waitForNetworkIdle(); + await page.waitForSelector('.user_card[data-key]'); + const userCardTestIds = await page.$$eval( + '[data-testid^="user-card-"]', + (cards) => cards.map((card) => card.getAttribute('data-testid')), + ); + for (let i = 0; i < userCardTestIds.length; i++) { + const userCardSelector = `[data-testid="${userCardTestIds[i]}"]`; + const userCardElement = await page.$(userCardSelector); + await userCardElement.click(); + await page.waitForTimeout(1000); + const isActive = await page.evaluate((selector) => { + return document + .querySelector(selector) + ?.classList.contains('active_tab'); + }, userCardSelector); + expect(isActive).toBe(true); + } + }); + + it('should handle user card clicks and apply active_tab class to clicked card only verified tab', async () => { + await page.goto(`${BASE_URL}/users/discord/?tab=verified`); + await page.waitForNetworkIdle(); + await page.waitForSelector('.user_card[data-key]'); + const userCardTestIds = await page.$$eval( + '[data-testid^="user-card-"]', + (cards) => cards.map((card) => card.getAttribute('data-testid')), + ); + for (let i = 0; i < userCardTestIds.length; i++) { + const userCardSelector = `[data-testid="${userCardTestIds[i]}"]`; + const userCardElement = await page.$(userCardSelector); + await userCardElement.click(); + await page.waitForTimeout(1000); + const isActive = await page.evaluate((selector) => { + return document + .querySelector(selector) + ?.classList.contains('active_tab'); + }, userCardSelector); + expect(isActive).toBe(true); + } + }); }); diff --git a/__tests__/users/user-management-home-screen.test.js b/__tests__/users/user-management-home-screen.test.js index 66f7b60c..f50242eb 100644 --- a/__tests__/users/user-management-home-screen.test.js +++ b/__tests__/users/user-management-home-screen.test.js @@ -9,9 +9,6 @@ describe('Tests the User Management User Listing Screen', () => { let tileViewBtn; let tableViewBtn; let userSearchElement; - let paginationElement; - let prevBtn; - let nextBtn; jest.setTimeout(60000); beforeAll(async () => { @@ -71,9 +68,6 @@ describe('Tests the User Management User Listing Screen', () => { tileViewBtn = await page.$('#tile-view-btn'); tableViewBtn = await page.$('#table-view-btn'); userSearchElement = await page.$('#user-search'); - paginationElement = await page.$('#pagination'); - prevBtn = await page.$('#prevButton'); - nextBtn = await page.$('#nextButton'); }); afterAll(async () => { @@ -85,9 +79,6 @@ describe('Tests the User Management User Listing Screen', () => { expect(tileViewBtn).toBeTruthy(); expect(tableViewBtn).toBeTruthy(); expect(userSearchElement).toBeTruthy(); - expect(paginationElement).toBeTruthy(); - expect(prevBtn).toBeTruthy(); - expect(nextBtn).toBeTruthy(); }); it('Check the UI interactions of tile view and table view button.', async () => { diff --git a/mock-data/taskRequests/index.js b/mock-data/taskRequests/index.js index 3b5d184d..c17e92ca 100644 --- a/mock-data/taskRequests/index.js +++ b/mock-data/taskRequests/index.js @@ -1,3 +1,5 @@ +const { superUserDetails } = require('../users/mockdata.js'); + const fetchedTaskRequests = [ { id: '123CCXSDF123', @@ -260,7 +262,6 @@ const githubIssue = { performed_via_github_app: null, state_reason: 'completed', }; - const individualTaskDetail = { message: 'task returned successfully', taskData: { @@ -306,7 +307,6 @@ const userInformationTaskCreation = { }, }, }; - const userInformation = { message: 'User returned successfully!', user: { @@ -351,6 +351,7 @@ const defaultMockResponseHeaders = { }; const urlMappings = { + 'https://staging-api.realdevsquad.com/users/self': superUserDetails.user, 'https://api.realdevsquad.com/taskRequests/dM5wwD9QsiTzi7eG7Oq5': individualTaskReqDetail, 'https://api.realdevsquad.com/taskRequests/dM5wwD9QsiTzi7eG7Oq6': diff --git a/task-requests/details/index.html b/task-requests/details/index.html index 5dc02fbb..7543e635 100644 --- a/task-requests/details/index.html +++ b/task-requests/details/index.html @@ -24,13 +24,13 @@ crossorigin="anonymous" referrerpolicy="no-referrer" > - +
@@ -85,11 +85,6 @@

Requestors

-
- -
-