Skip to content

Commit e104786

Browse files
authored
Merge pull request #917 from Real-Dev-Squad/develop
Dev to main sync
2 parents c2be994 + 2629ec5 commit e104786

File tree

16 files changed

+443
-218
lines changed

16 files changed

+443
-218
lines changed

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

Lines changed: 0 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -667,79 +667,6 @@ describe('Tests the Extension Requests Screen', () => {
667667
expect(hasSkeletonClassAfter).toBe(false);
668668
});
669669

670-
it('checks whether the shimmer effect is working for deadlineValue element under feature flag', async () => {
671-
await page.goto(`${baseUrl}/?dev=true`);
672-
const deadlineValueSelector = await page.$$(
673-
'[data-testid="skeleton-span"]',
674-
);
675-
expect(deadlineValueSelector).toBeTruthy();
676-
await page.waitForTimeout(5000);
677-
const hasSkeletonClassAfter = await page.$eval('.tooltip-container', (el) =>
678-
el.classList.contains('skeleton-span'),
679-
);
680-
expect(hasSkeletonClassAfter).toBe(false);
681-
});
682-
683-
it('checks whether the shimmer effect is working for requestedValue element under feature flag', async () => {
684-
await page.goto(`${baseUrl}/?dev=true`);
685-
const requestedValueSelector = await page.$$(
686-
'[data-testid="skeleton-text"]',
687-
);
688-
expect(requestedValueSelector).toBeTruthy();
689-
await page.waitForTimeout(5000);
690-
const hasSkeletonClassAfter = await page.$eval('.requested-day', (el) =>
691-
el.classList.contains('skeleton-text'),
692-
);
693-
expect(hasSkeletonClassAfter).toBe(false);
694-
});
695-
it('checks whether the shimmer effect is working for newDeadlineValue element under feature flag', async () => {
696-
await page.goto(`${baseUrl}/?dev=true`);
697-
const newDeadlineValueSelector = await page.$$(
698-
'[data-testid="skeleton-span"]',
699-
);
700-
expect(newDeadlineValueSelector).toBeTruthy();
701-
await page.waitForTimeout(5000);
702-
const hasSkeletonClassAfter = await page.$eval('.requested-day', (el) =>
703-
el.classList.contains('skeleton-span'),
704-
);
705-
expect(hasSkeletonClassAfter).toBe(false);
706-
});
707-
708-
it('checks whether the shimmer effect is working for extensionRequestNumberValue element under feature flag', async () => {
709-
await page.goto(`${baseUrl}/?dev=true`);
710-
const extensionRequestNumberValueSelector = await page.$$(
711-
'[data-testid="skeleton-span"]',
712-
);
713-
expect(extensionRequestNumberValueSelector).toBeTruthy();
714-
await page.waitForTimeout(5000);
715-
const hasSkeletonClassAfter = await page.$eval(
716-
'.extension-request-number',
717-
(el) => el.classList.contains('skeleton-span'),
718-
);
719-
expect(hasSkeletonClassAfter).toBe(false);
720-
});
721-
722-
it('checks whether the shimmer effect is visible under dev flag only for the statusSiteLink element', async () => {
723-
await page.goto(`${baseUrl}/?dev=true`);
724-
const statusSiteLinkSelector = await page.$$(
725-
'[data-testid="external-link skeleton-link"]',
726-
);
727-
expect(statusSiteLinkSelector).toBeTruthy();
728-
await page.waitForTimeout(5000);
729-
const hasSkeletonClassAfter = await page.$eval('.external-link', (el) =>
730-
el.classList.contains('skeleton-link'),
731-
);
732-
expect(hasSkeletonClassAfter).toBe(false);
733-
});
734-
735-
it('checks whether the shimmer effect is visible under dev flag only for the taskStatusValue element', async () => {
736-
await page.goto(`${baseUrl}/?dev=true`);
737-
const taskStatusValueElement = await page.$$(
738-
'[data-testid="skeleton-span"]',
739-
);
740-
expect(taskStatusValueElement).toBeTruthy();
741-
});
742-
743670
it('Checks whether the card is not removed from display when api call is unsuccessful', async () => {
744671
const extensionCards = await page.$$('.extension-card');
745672

__tests__/groups/group.test.js

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
const puppeteer = require('puppeteer');
2-
const { allUsersData } = require('../../mock-data/users');
2+
const { allUsersData, superUserData } = require('../../mock-data/users');
33
const { discordGroups, GroupRoleData } = require('../../mock-data/groups');
44

55
const BASE_URL = 'https://api.realdevsquad.com';
66
const PAGE_URL = 'http://localhost:8000';
77

8+
function setSuperUserPermission() {
9+
allUsersData.users[0] = superUserData;
10+
}
11+
12+
function resetUserPermission() {
13+
allUsersData.users[0] = {
14+
...allUsersData.users[0],
15+
roles: { archived: false },
16+
};
17+
}
18+
819
describe('Discord Groups Page', () => {
920
let browser;
1021
let page;
@@ -297,4 +308,66 @@ describe('Discord Groups Page', () => {
297308
const repoLinkStyle = await page.evaluate((el) => el.style, repoLink);
298309
expect(repoLinkStyle).toBeTruthy();
299310
});
311+
312+
test('Should display delete button for super users', async () => {
313+
setSuperUserPermission();
314+
await page.goto(`${PAGE_URL}/groups?dev=true`);
315+
await page.waitForNetworkIdle();
316+
await page.waitForTimeout(1000);
317+
318+
const deleteButtons = await page.$$('.delete-group');
319+
const cards = await page.$$('.card');
320+
expect(deleteButtons.length).toBe(cards.length);
321+
expect(deleteButtons.length).toBeGreaterThan(0);
322+
});
323+
324+
test('Should not display delete button when user is normal user', async () => {
325+
resetUserPermission();
326+
await page.goto(`${PAGE_URL}/groups?dev=true`);
327+
await page.waitForNetworkIdle();
328+
329+
const deleteButtons = await page.$$('.delete-group');
330+
expect(deleteButtons.length).toBe(0);
331+
});
332+
333+
test('Should not display delete button when dev=false', async () => {
334+
setSuperUserPermission();
335+
await page.goto(`${PAGE_URL}/groups`);
336+
await page.waitForNetworkIdle();
337+
338+
const deleteButtons = await page.$$('.delete-group');
339+
expect(deleteButtons.length).toBe(0);
340+
});
341+
342+
test('Should display delete confirmation modal on click of delete button', async () => {
343+
setSuperUserPermission();
344+
await page.goto(`${PAGE_URL}/groups?dev=true`);
345+
await page.waitForNetworkIdle();
346+
await page.waitForTimeout(1000);
347+
348+
const deleteButton = await page.$('.delete-group');
349+
await deleteButton.click();
350+
351+
const deleteConfirmationModal = await page.waitForSelector(
352+
'.delete-confirmation-modal',
353+
);
354+
355+
expect(deleteConfirmationModal).toBeTruthy();
356+
});
357+
358+
test('Should close delete confirmation modal when cancel button is clicked', async () => {
359+
setSuperUserPermission();
360+
await page.goto(`${PAGE_URL}/groups?dev=true`);
361+
await page.waitForNetworkIdle();
362+
await page.waitForTimeout(1000);
363+
364+
const deleteButton = await page.$('.delete-group');
365+
await deleteButton.click();
366+
367+
const cancelButton = await page.waitForSelector('#cancel-delete');
368+
await cancelButton.click();
369+
370+
const modalClosed = await page.$('.delete-confirmation-modal');
371+
expect(modalClosed).toBeFalsy();
372+
});
300373
});

__tests__/users/App.test.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,8 @@ describe('App Component', () => {
9393
});
9494

9595
it('should update the URL query string and re-render the app', async () => {
96-
await page.waitForSelector('[data_key="verified"]');
97-
98-
// Click on the "Linked Accounts" tab
99-
await page.click('[data_key="verified"]');
96+
await page.waitForSelector('[data-testid="tabs-section-select"]');
97+
await page.select('[data-testid="tabs-section-select"]', 'verified');
10098

10199
// Get the current URL and make sure the query string has been updated
102100
const url = await page.url();

__tests__/users/applyFilterPagination.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ describe('Apply Filter and Pagination Functionality', () => {
7878
});
7979

8080
it('should update the URL query string when applying filters', async () => {
81-
// click on the "Verified" tab
82-
await page.click('[data_key="verified"]');
81+
await page.waitForSelector('[data-testid="tabs-section-select"]');
82+
await page.select('[data-testid="tabs-section-select"]', 'verified');
8383

8484
// get the current URL
8585
const url = await page.url();

extension-requests/script.js

Lines changed: 36 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -623,26 +623,16 @@ async function createExtensionCard(data, dev) {
623623
});
624624
deadlineContainer.appendChild(deadlineText);
625625

626-
let deadlineValue;
627-
if (dev) {
628-
deadlineValue = createElement({
629-
type: 'span',
630-
attributes: {
631-
class: 'skeleton-span',
632-
'data-testid': 'skeleton-span',
633-
},
634-
});
635-
} else {
636-
deadlineValue = createElement({
637-
type: 'span',
638-
innerText: `${deadlineDays}`,
639-
attributes: {
640-
class: `tooltip-container ${
641-
isDeadLineCrossed && isStatusPending ? 'red-text' : ''
642-
}`,
643-
},
644-
});
645-
}
626+
const deadlineValue = createElement({
627+
type: 'span',
628+
innerText: `${deadlineDays}`,
629+
attributes: {
630+
class: `tooltip-container ${
631+
isDeadLineCrossed && isStatusPending ? 'red-text' : ''
632+
}`,
633+
},
634+
});
635+
646636
deadlineContainer.appendChild(deadlineValue);
647637
const deadlineTooltip = createElement({
648638
type: 'span',
@@ -662,24 +652,14 @@ async function createExtensionCard(data, dev) {
662652
});
663653
requestedContainer.appendChild(requestedText);
664654

665-
let requestedValue;
666-
if (dev) {
667-
requestedValue = createElement({
668-
type: 'span',
669-
attributes: {
670-
class: 'skeleton-text',
671-
'data-testid': 'skeleton-text',
672-
},
673-
});
674-
} else {
675-
requestedValue = createElement({
676-
type: 'span',
677-
attributes: {
678-
class: `requested-day tooltip-container ${requestedDaysTextColor}`,
679-
},
680-
innerText: `${requestedDaysAgo}`,
681-
});
682-
}
655+
const requestedValue = createElement({
656+
type: 'span',
657+
attributes: {
658+
class: `requested-day tooltip-container ${requestedDaysTextColor}`,
659+
},
660+
innerText: ` ${requestedDaysAgo}`,
661+
});
662+
683663
const requestedToolTip = createElement({
684664
type: 'span',
685665
attributes: { class: 'tooltip' },
@@ -744,19 +724,12 @@ async function createExtensionCard(data, dev) {
744724
});
745725
newDeadlineContainer.appendChild(newDeadlineText);
746726

747-
let newDeadlineValue;
748-
if (dev) {
749-
newDeadlineValue = createElement({
750-
type: 'span',
751-
attributes: { class: 'skeleton-span', 'data-testid': 'skeleton-span' },
752-
});
753-
} else {
754-
newDeadlineValue = createElement({
755-
type: 'span',
756-
attributes: { class: 'requested-day tooltip-container' },
757-
innerText: ` ${newDeadlineDays}`,
758-
});
759-
}
727+
const newDeadlineValue = createElement({
728+
type: 'span',
729+
attributes: { class: 'requested-day tooltip-container' },
730+
innerText: ` ${newDeadlineDays}`,
731+
});
732+
760733
const newDeadlineToolTip = createElement({
761734
type: 'span',
762735
attributes: { class: 'tooltip' },
@@ -776,19 +749,12 @@ async function createExtensionCard(data, dev) {
776749
});
777750
extensionForContainer.appendChild(extensionForText);
778751

779-
let extensionForValue;
780-
if (dev) {
781-
extensionForValue = createElement({
782-
type: 'span',
783-
attributes: { class: 'skeleton-span' },
784-
});
785-
} else {
786-
extensionForValue = createElement({
787-
type: 'span',
788-
attributes: { class: 'tooltip-container' },
789-
innerText: ` +${extensionDays}`,
790-
});
791-
}
752+
const extensionForValue = createElement({
753+
type: 'span',
754+
attributes: { class: 'tooltip-container' },
755+
innerText: ` +${extensionDays}`,
756+
});
757+
792758
const extensionToolTip = createElement({
793759
type: 'span',
794760
attributes: { class: 'tooltip' },
@@ -821,19 +787,12 @@ async function createExtensionCard(data, dev) {
821787

822788
const requestNumber = data.requestNumber || 1;
823789

824-
let extensionRequestNumberValue;
825-
if (dev) {
826-
extensionRequestNumberValue = createElement({
827-
type: 'span',
828-
attributes: { class: 'skeleton-span', 'data-testid': 'skeleton-span' },
829-
});
830-
} else {
831-
extensionRequestNumberValue = createElement({
832-
type: 'span',
833-
attributes: { class: 'extension-request-number' },
834-
innerText: `#${requestNumber}`,
835-
});
836-
}
790+
const extensionRequestNumberValue = createElement({
791+
type: 'span',
792+
attributes: { class: 'extension-request-number' },
793+
innerText: `#${requestNumber}`,
794+
});
795+
837796
extensionRequestNumberContainer.appendChild(extensionRequestNumberValue);
838797
const cardAssigneeButtonContainer = createElement({
839798
type: 'div',
@@ -1330,44 +1289,7 @@ async function createExtensionCard(data, dev) {
13301289
CommitedHoursContent.innerText = 'Missing';
13311290
CommitedHoursContent.classList.add('label-content-missing');
13321291
}
1333-
if (dev) {
1334-
deadlineValue.classList.remove('skeleton-span');
1335-
deadlineValue.innerText = `${deadlineDays}`;
1336-
1337-
deadlineValue.classList.add('tooltip-container');
1338-
if (isDeadLineCrossed && isStatusPending) {
1339-
deadlineValue.classList.add('red-text');
1340-
}
1341-
}
1342-
1343-
if (dev) {
1344-
requestedValue.classList.remove('skeleton-text');
1345-
requestedValue.innerText = `${requestedDaysAgo}`;
1346-
1347-
requestedValue.classList.add(
1348-
'requested-day',
1349-
'tooltip-container',
1350-
requestedDaysTextColor,
1351-
);
1352-
}
1353-
1354-
if (dev) {
1355-
newDeadlineValue.classList.remove('skeleton-span');
1356-
newDeadlineValue.innerText = ` ${newDeadlineDays}`;
1357-
newDeadlineValue.classList.add('requested-day', 'tooltip-container');
1358-
}
13591292

1360-
if (dev) {
1361-
extensionForValue.classList.remove('skeleton-span');
1362-
extensionForValue.innerText = ` +${extensionDays}`;
1363-
extensionForValue.classList.add('tooltip-container');
1364-
}
1365-
1366-
if (dev) {
1367-
extensionRequestNumberValue.classList.remove('skeleton-span');
1368-
extensionRequestNumberValue.innerText = `#${requestNumber}`;
1369-
extensionRequestNumberValue.classList.add('extension-request-number');
1370-
}
13711293
if (!dev) {
13721294
removeSpinner();
13731295
renderExtensionCreatedLog();

groups/assets/delete.svg

Lines changed: 8 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)