Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev to Main Sync #903

Merged
merged 4 commits into from
Nov 5, 2024
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
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 () {
Copy link
Member

@pankajjs pankajjs Nov 1, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test is failing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

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
Loading