Skip to content

Commit

Permalink
Dev to Main Sync (#903)
Browse files Browse the repository at this point in the history
  • Loading branch information
vinit717 authored Nov 5, 2024
1 parent 3f30b39 commit c2be994
Show file tree
Hide file tree
Showing 14 changed files with 309 additions and 162 deletions.
77 changes: 71 additions & 6 deletions __tests__/task-requests/task-requestDetails.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
});
Expand Down Expand Up @@ -180,9 +241,13 @@ describe('Task request details page with markdown support in description', () =>
expect(descriptionHtmlValue).toContain('<h3 id="heading">Heading</h3>');
});

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();
});
Expand Down
60 changes: 55 additions & 5 deletions __tests__/users/App.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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`) {
Expand All @@ -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 {
Expand Down Expand Up @@ -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);
}
});
});
9 changes: 0 additions & 9 deletions __tests__/users/user-management-home-screen.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand Down Expand Up @@ -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 () => {
Expand All @@ -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 () => {
Expand Down
5 changes: 3 additions & 2 deletions mock-data/taskRequests/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
const { superUserDetails } = require('../users/mockdata.js');

const fetchedTaskRequests = [
{
id: '123CCXSDF123',
Expand Down Expand Up @@ -260,7 +262,6 @@ const githubIssue = {
performed_via_github_app: null,
state_reason: 'completed',
};

const individualTaskDetail = {
message: 'task returned successfully',
taskData: {
Expand Down Expand Up @@ -306,7 +307,6 @@ const userInformationTaskCreation = {
},
},
};

const userInformation = {
message: 'User returned successfully!',
user: {
Expand Down Expand Up @@ -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':
Expand Down
7 changes: 1 addition & 6 deletions task-requests/details/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<script src="/task-requests/details/script.js" defer></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/showdown/2.1.0/showdown.min.js"
integrity="sha512-LhccdVNGe2QMEfI3x4DVV3ckMRe36TfydKss6mJpdHjNFiV07dFpS2xzeZedptKZrwxfICJpez09iNioiSZ3hA=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<script type="module" src="/task-requests/details/script.js" defer></script>
</head>
<body>
<div class="header">
Expand Down Expand Up @@ -85,11 +85,6 @@ <h4 class="requestors__container__title">Requestors</h4>
</ul>
</div>
</div>
<div class="reject__container">
<button id="reject-button" class="request-details__reject__button">
Reject
</button>
</div>
</div>
</div>
<div id="toast_task_details" class="hidden">
Expand Down
Loading

0 comments on commit c2be994

Please sign in to comment.