Skip to content

Commit

Permalink
Merge pull request #524 from Real-Dev-Squad/develop
Browse files Browse the repository at this point in the history
Dev to main sync
  • Loading branch information
ankushdharkar authored Sep 23, 2023
2 parents 96c5705 + 9bd60ac commit 91d1c5e
Show file tree
Hide file tree
Showing 26 changed files with 599 additions and 787 deletions.
349 changes: 102 additions & 247 deletions __tests__/extension-requests/extension-requests.test.js

Large diffs are not rendered by default.

71 changes: 69 additions & 2 deletions __tests__/groups/group.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const puppeteer = require('puppeteer');
const { allUsersData } = require('../../mock-data/users');
const { discordGroups } = require('../../mock-data/groups');
const { discordGroups, GroupRoleData } = require('../../mock-data/groups');

const BASE_URL = 'https://api.realdevsquad.com';

Expand All @@ -14,7 +14,7 @@ describe('Discord Groups Page', () => {

beforeAll(async () => {
browser = await puppeteer.launch({
headless: true,
headless: 'new',
ignoreHTTPSErrors: true,
args: ['--disable-web-security'],
devtools: false,
Expand Down Expand Up @@ -62,6 +62,28 @@ describe('Discord Groups Page', () => {
},
body: JSON.stringify(discordGroups),
});
} else if (url === `${BASE_URL}/discord-actions/groups?dev=true`) {
interceptedRequest.respond({
status: 200,
contentType: 'application/json',
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
},
body: JSON.stringify(discordGroups),
});
} else if (url === `${BASE_URL}/discord-actions/roles`) {
interceptedRequest.respond({
status: 200,
contentType: 'application/json',
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
},
body: JSON.stringify(GroupRoleData),
});
} else {
interceptedRequest.continue();
}
Expand Down Expand Up @@ -156,6 +178,36 @@ describe('Discord Groups Page', () => {
await page.waitForNetworkIdle();
await expect(alertMessage).toContain('Role created successfully');
});

test('Should show add button as user not part of the group', async () => {
await page.goto('http://localhost:8000/groups/?dev=true');
await page.waitForNetworkIdle();

const group = await page.$('.group-role');
await group.click();

// Wait for the btn-add-role and click it
const addRoleBtn = await page.$('.btn-add-role');
await addRoleBtn.click();

// Now, check the text content of the button
const buttonText = await addRoleBtn.evaluate((node) => node.textContent);
expect(buttonText).toBe('Add me to this group');
});

test('Should show remove button as user is part of the group', async () => {
await page.$$eval('.group-role', (elements) => {
elements[1].click();
});
// Wait for the btn-add-role and click it
const addRoleBtn = await page.$('.btn-add-role');
await addRoleBtn.click();

// Now, check the text content of the button
const buttonText = await addRoleBtn.evaluate((node) => node.textContent);
expect(buttonText).toBe('Remove me from this group');
});

test('Should display an error message if the role name contains "group"', async () => {
createGroup = await page.$('.create-groups-tab');
await createGroup.click();
Expand All @@ -180,6 +232,21 @@ describe('Discord Groups Page', () => {
);
});

test('should display a message no results found if group not exists', async () => {
const searchInput = await page.$('#search-groups');

await searchInput.type('dummy');

await page.waitForNetworkIdle();

const noResultFoundHeading = await page.$('#no-results-message');
const noResultFoundHeadingText = await (
await noResultFoundHeading.getProperty('innerText')
).jsonValue();

expect(noResultFoundHeadingText).toEqual('No results found.');
});

test('should update the URL when a group role is clicked', async () => {
await page.$$eval('.group-role', (elements) => {
elements[1].click();
Expand Down
2 changes: 1 addition & 1 deletion __tests__/standup/standup.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe('Standup Page', () => {

beforeAll(async () => {
browser = await puppeteer.launch({
headless: true,
headless: 'new',
ignoreHTTPSErrors: true,
args: ['--incognito', '--disable-web-security'],
devtools: false,
Expand Down
7 changes: 6 additions & 1 deletion __tests__/taskRequests/taskRequest.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ describe('Task Requests', () => {
let browser;
let page;

jest.setTimeout(60000);

beforeAll(async () => {
browser = await puppeteer.launch({
headless: 'new',
Expand Down Expand Up @@ -70,7 +72,10 @@ describe('createCustomElement', () => {
let page;

beforeAll(async () => {
browser = await puppeteer.launch();
browser = await puppeteer.launch({
headless: 'new',
});

page = await browser.newPage();

await page.goto(`${SITE_URL}/taskRequests`);
Expand Down
2 changes: 1 addition & 1 deletion __tests__/tasks/profile-picture.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ describe('Task Page - Assignee Profile Pic', () => {

beforeAll(async () => {
browser = await puppeteer.launch({
headless: true,
headless: 'new',
ignoreHTTPSErrors: true,
args: ['--incognito', '--disable-web-security'],
devtools: false,
Expand Down
2 changes: 1 addition & 1 deletion __tests__/tasks/task-dependency.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ describe('Input box', () => {

beforeAll(async () => {
browser = await puppeteer.launch({
headless: true,
headless: 'new',
ignoreHTTPSErrors: true,
args: ['--incognito', '--disable-web-security'],
devtools: false,
Expand Down
1 change: 1 addition & 0 deletions __tests__/users/App.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const { filteredUsersData } = require('../../mock-data/users');
describe('App Component', () => {
let browser;
let page;
jest.setTimeout(60000);
let config = {
launchOptions: {
headless: 'new',
Expand Down
2 changes: 2 additions & 0 deletions extension-requests/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ const CANCEL_ICON_WHITE = '/images/x-icon-white.svg';
const EDIT_ICON = '/images/edit-icon.svg';
const ERROR_MESSAGE_RELOAD = 'Something went wrong, Please reload';

const DEFAULT_PAGE_SIZE = 5;

const taskInfoModelHeadings = [
{ title: 'Title' },
{ title: 'Ends On', key: 'endsOn', time: true },
Expand Down
86 changes: 0 additions & 86 deletions extension-requests/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,92 +8,6 @@
</head>

<body>
<div class="extension-requests-modal-parent">
<div class="extension-requests-info"></div>
<form class="extension-requests-form">
<h3>Update Extension Request</h3>
<label for="title">Title</label>
<input
required
type="text"
id="title"
name="title"
class="extensionTitle"
/>
<label for="reason">Reason</label>
<input
required
type="text"
id="reason"
name="reason"
class="extensionReason"
/>
<label for="newEndsOn">New Ends On</label>
<input
required
type="datetime-local"
id="newEndsOn"
name="newEndsOn"
class="extensionNewEndsOn"
/>
<label for="oldEndsOn">Old Ends On</label>
<input
required
type="datetime-local"
id="oldEndsOn"
class="extensionOldEndsOn"
readonly
/>
<label for="status">Status</label>
<input
required
type="text"
id="status"
class="extensionStatus"
readonly
/>
<label for="Task Id">Task Id</label>
<input required type="text" id="Task Id" class="extensionId" readonly />
<label for="assignee">Assignee</label>
<input
required
type="text"
id="assignee"
class="extensionAssignee"
readonly
/>
<button type="submit">Submit</button>
<button id="close-modal" type="button">Cancel</button>
</form>
<form class="extension-requests-status-form">
<h3>Update Extension Request Status</h3>
<label for="status">Status</label>
<select name="status" id="status">
<option value="APPROVED">APPROVED</option>
<option value="DENIED">DENIED</option>
</select>
<label for="title">Title</label>
<input
required
type="text"
id="title"
class="extensionTitle"
readonly
/>
<label for="Task Id">Task Id</label>
<input required type="text" id="Task Id" class="extensionId" readonly />
<label for="assignee">Assignee</label>
<input
required
type="text"
id="assignee"
class="extensionAssignee"
readonly
/>
<button type="submit">Submit</button>
<button id="close-modal" type="button">Cancel</button>
</form>
</div>
<header class="header">
<h1>Extension Requests</h1>
</header>
Expand Down
25 changes: 2 additions & 23 deletions extension-requests/local-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,9 @@ const Order = {
ASCENDING: 'asc',
};

const DEFAULT_PAGE_SIZE = 5;
async function getExtensionRequests(query = {}, nextLink) {
const { dev } = query;
let finalUrl;
if (dev) {
finalUrl =
API_BASE_URL + (nextLink || generateExtensionRequestParams(query));
} else {
const initialURI = nextLink || '/extension-requests';

const url = new URL(API_BASE_URL + initialURI);

queryParams = ['assignee', 'status', 'taskId', 'size', 'dev', 'order'];
queryParams.forEach((key) => {
if (query[key]) {
if (Array.isArray(query[key])) {
query[key].forEach((value) => url.searchParams.append(key, value));
} else {
url.searchParams.append(key, query[key]);
}
}
});
finalUrl = url.toString();
}
let finalUrl =
API_BASE_URL + (nextLink || generateExtensionRequestParams(query));

const res = await fetch(finalUrl, {
credentials: 'include',
Expand Down
Loading

0 comments on commit 91d1c5e

Please sign in to comment.