Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

211 lines
6.2 KiB
TypeScript
Raw Normal View History

/*
* Copyright 2023 Collate.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {
customFormatDateTime,
getCurrentMillis,
getEpochMillisForFutureDays,
} from '../../../src/utils/date-time/DateTimeUtils';
import {
interceptURL,
toastNotification,
verifyResponseStatusCode,
} from '../common';
const announcementForm = ({ title, description, startDate, endDate }) => {
cy.get('#title').type(title);
cy.get('#startTime').click().type(`${startDate}{enter}`);
cy.clickOutside();
cy.get('#endTime').click().type(`${endDate}{enter}`);
cy.clickOutside();
cy.get('.toastui-editor-md-container > .toastui-editor > .ProseMirror').type(
description
);
cy.get('[id="announcement-submit"]').scrollIntoView().click();
};
export const createAnnouncement = (announcement, entityName, updatedName) => {
interceptURL(
'GET',
'/api/v1/feed?entityLink=*type=Announcement',
'announcementFeed'
);
cy.get('[data-testid="manage-button"]').click();
cy.get('[data-testid="announcement-button"]').click();
const startDate = customFormatDateTime(getCurrentMillis(), 'yyyy-MM-dd');
const endDate = customFormatDateTime(
getEpochMillisForFutureDays(5),
'yyyy-MM-dd'
);
cy.get('[data-testid="announcement-error"]').should(
'contain',
'No Announcements, Click on add announcement to add one.'
);
// Create Active Announcement
cy.get('[data-testid="add-announcement"]').click();
cy.get('.ant-modal-header').should('contain', 'Make an announcement');
announcementForm({ ...announcement, startDate, endDate });
// wait time for success toast message
verifyResponseStatusCode('@announcementFeed', 200);
cy.get('.Toastify__close-button >').click();
// reload page to get the active announcement card
cy.reload();
// check for announcement card on entity page
cy.get('[data-testid="announcement-card"]').should(
'contain',
announcement.title
);
// Todo: Need to check announcement flow on home page @Ashish8689
// cy.goToHomePage();
// cy.get('[data-testid="announcement-container"]')
// .find(`a[href*="${encodeURIComponent(entityName)}"]`)
// .filter(':visible')
// .first()
// .click();
// cy.get('[data-testid="entity-header-display-name"]').should(
// 'contain',
// `Cypress ${updatedName} updated`
// );
};
export const deleteAnnouncement = () => {
interceptURL(
'GET',
'/api/v1/feed?entityLink=*type=Announcement',
'announcementFeed'
);
interceptURL('DELETE', '/api/v1/feed/*', 'deleteFeed');
cy.get('[data-testid="manage-button"]').click();
cy.get('[data-testid="announcement-button"]').click();
verifyResponseStatusCode('@announcementFeed', 200);
cy.get('[data-testid="announcement-card"] [data-testid="main-message"]')
.first()
.trigger('mouseover')
.then(() => {
cy.get('[data-testid="delete-message"]').click({ force: true });
cy.get('.ant-modal-body').should(
'contain',
'Are you sure you want to permanently delete this message?'
);
cy.get('[data-testid="save-button"]').click();
verifyResponseStatusCode('@deleteFeed', 200);
});
};
export const replyAnnouncementUtil = () => {
interceptURL(
'GET',
'/api/v1/feed?entityLink=*type=Announcement',
'announcementFeed'
);
interceptURL('GET', '/api/v1/feed/*', 'allAnnouncementFeed');
interceptURL('POST', '/api/v1/feed/*/posts', 'addAnnouncementReply');
cy.get('[data-testid="announcement-card"]').click();
cy.get(
'[data-testid="announcement-card"] [data-testid="main-message"]'
).trigger('mouseover');
cy.get('[data-testid="add-reply"]').should('be.visible').click();
cy.get('[data-testid="send-button"]').should('be.disabled');
verifyResponseStatusCode('@allAnnouncementFeed', 200);
cy.get('[data-testid="editor-wrapper"] .ql-editor').type('Reply message');
cy.get('[data-testid="send-button"]').should('not.disabled').click();
verifyResponseStatusCode('@addAnnouncementReply', 201);
verifyResponseStatusCode('@announcementFeed', 200);
verifyResponseStatusCode('@allAnnouncementFeed', 200);
cy.get('[data-testid="replies"] [data-testid="viewer-container"]').should(
'contain',
'Reply message'
);
cy.get('[data-testid="show-reply-thread"]').should('contain', '1 replies');
// Edit the reply message
cy.get('[data-testid="replies"] > [data-testid="main-message"]').trigger(
'mouseover'
);
cy.get('[data-testid="edit-message"]').should('be.visible').click();
cy.get('.feed-message [data-testid="editor-wrapper"] .ql-editor')
.clear()
.type('Reply message edited');
cy.get('[data-testid="save-button"]').click();
cy.get('[data-testid="replies"] [data-testid="viewer-container"]').should(
'contain',
'Reply message edited'
);
cy.reload();
};
export const createInactiveAnnouncement = (announcement) => {
// Create InActive Announcement
interceptURL(
'GET',
'/api/v1/feed?entityLink=*type=Announcement',
'announcementFeed'
);
cy.get('[data-testid="manage-button"]').click();
cy.get('[data-testid="announcement-button"]').click();
cy.get('[data-testid="add-announcement"]').click();
cy.get('.ant-modal-header').should('contain', 'Make an announcement');
const InActiveStartDate = customFormatDateTime(
getEpochMillisForFutureDays(6),
'yyyy-MM-dd'
);
const InActiveEndDate = customFormatDateTime(
getEpochMillisForFutureDays(11),
'yyyy-MM-dd'
);
announcementForm({
...announcement,
startDate: InActiveStartDate,
endDate: InActiveEndDate,
});
// wait time for success toast message
verifyResponseStatusCode('@announcementFeed', 200);
toastNotification('Announcement created successfully!');
cy.get('[data-testid="inActive-announcements"]').should('be.visible');
cy.clickOutside();
};