Skip to content

Commit

Permalink
Mhv 57145 refactor save reply draft (#29446)
Browse files Browse the repository at this point in the history
* upd: save-reply-draft test

* upd: add TODOs

* upd: add methods, simplify code

* upd: code cleanup

* upd: code cleanup
  • Loading branch information
fazilqa committed Apr 29, 2024
1 parent a669237 commit cec2a5a
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 50 deletions.
Expand Up @@ -153,7 +153,7 @@ class PatientInboxPage {

loadSingleThread = (
testSingleThread = mockThread,
sentDate = mockThread.data[0].attributes.sentDate,
sentDate = new Date(),
draftDate = mockThread.data[0].attributes.draftDate,
) => {
this.singleThread = testSingleThread;
Expand Down
Expand Up @@ -3,6 +3,7 @@ import mockFolders from '../fixtures/folder-response.json';
import defaultMockThread from '../fixtures/thread-response.json';
import { dateFormat } from '../../../util/helpers';
import { Locators, Paths } from '../utils/constants';
import PatientInterstitialPage from './PatientInterstitialPage';

class PatientMessageDetailsPage {
currentThread = defaultMockThread;
Expand Down Expand Up @@ -536,14 +537,27 @@ class PatientMessageDetailsPage {
});
};

// temporary changed to 'contain', 'REPLY'
replyToMessageBody = testMessageBody => {
cy.get('[data-testid="message-body"]').should('contain', testMessageBody);
replyToMessageBody = testMessage => {
cy.get(`[data-testid="message-body-${testMessage.data.id}"]`).should(
'contain',
testMessage.data.attributes.body,
);
};

verifyDeleteMessageConfirmationMessageHasFocus = () => {
cy.focused().should('contain.text', 'Draft was successfully deleted.');
};

clickReplyButton = singleThreadData => {
cy.intercept(
'GET',
`${Paths.SM_API_EXTENDED}/${singleThreadData.data[0].id}/thread*`,
singleThreadData,
).as('replyThread');

cy.get(Locators.BUTTONS.REPLY).click({ force: true });
PatientInterstitialPage.getContinueButton().click();
};
}

export default PatientMessageDetailsPage;
Expand Up @@ -388,7 +388,19 @@ class PatientMessageDraftsPage {
.type(text);
};

saveDraftMessage = mockResponse => {
saveNewDraftMessage = (singleThreadData, singleMessageData) => {
cy.intercept(
'POST',
`${Paths.SM_API_BASE}/message_drafts/${
singleThreadData.data[0].id
}/replydraft`,
singleMessageData,
).as('replyThread');

cy.get(Locators.BUTTONS.SAVE_DRAFT).click({ force: true });
};

saveExistingDraftMessage = mockResponse => {
cy.intercept(
'PUT',
`/my_health/v1/messaging/message_drafts/3163320/replydraft/3163906`,
Expand Down
@@ -1,68 +1,61 @@
import SecureMessagingSite from './sm_site/SecureMessagingSite';
import PatientMessageDetailsPage from './pages/PatientMessageDetailsPage';
import PatientInboxPage from './pages/PatientInboxPage';
import PatientInterstitialPage from './pages/PatientInterstitialPage';
import PatientMessageDraftsPage from './pages/PatientMessageDraftsPage';
import PatientReplyPage from './pages/PatientReplyPage';
import mockMessages from './fixtures/messages-response.json';
import { AXE_CONTEXT } from './utils/constants';
import mockSingleThread from './fixtures/thread-response.json';
import { AXE_CONTEXT, Data, Locators } from './utils/constants';

describe('Secure Messaging Reply', () => {
it('Axe Check Message Reply', () => {
// declare pages & constants
const landingPage = new PatientInboxPage();
const messageDetailsPage = new PatientMessageDetailsPage();
const site = new SecureMessagingSite();
const draftPage = new PatientMessageDraftsPage();
const messageDetailsPage = new PatientMessageDetailsPage();

const bodyText = ' Updated body text';
const singleMessage = { data: mockSingleThread.data[0] };
singleMessage.data.attributes.body = bodyText;

// load single thread
site.login();
const messageDetails = landingPage.getNewMessageDetails();
const messageDetailsBody = messageDetails.data.attributes.body;
landingPage.loadInboxMessages(mockMessages);
landingPage.loadSingleThread(mockSingleThread);

landingPage.loadInboxMessages(mockMessages, messageDetails);
messageDetailsPage.loadMessageDetails(messageDetails);
messageDetailsPage.loadReplyPageDetails(messageDetails);
PatientInterstitialPage.getContinueButton().click();
const testMessageBody = 'Test message body';
PatientReplyPage.getMessageBodyField().type(testMessageBody, {
// click reply btn
messageDetailsPage.clickReplyButton(mockSingleThread);

// change message
PatientReplyPage.getMessageBodyField().type(bodyText, {
force: true,
});
cy.injectAxe();
cy.axeCheck(AXE_CONTEXT, {});

PatientReplyPage.clickSaveReplyDraftButton(messageDetails, testMessageBody);
cy.log(
`the message details after clickSaveReplyDraftButton ${JSON.stringify(
messageDetails,
)}`,
);
cy.log(
`the message details before assert${JSON.stringify(messageDetails)}`,
);
cy.log(`message details Body${messageDetailsBody}`);
cy.log(
`messageDetails.data.attributes.body = ${
messageDetails.data.attributes.body
}`,
// save changed message as a draft
draftPage.saveNewDraftMessage(mockSingleThread, singleMessage);

// assert message saved
cy.get(Locators.ALERTS.SAVE_DRAFT).should(
'include.text',
Data.MESSAGE_WAS_SAVED,
);

messageDetailsPage.replyToMessageTo(messageDetails);
// messageDetailsPage.ReplyToMessagesenderName(messageDetails); // TODO skipped for flakiness
messageDetailsPage.replyToMessageRecipientName(messageDetails);
messageDetailsPage.replyToMessageDate(messageDetails);
messageDetailsPage.replyToMessageId(messageDetails);
// verify reply topic
messageDetailsPage.replyToMessageTo(singleMessage);

messageDetails.data.attributes.body = messageDetailsBody;
// messageDetailsPage.ReplyToMessageBody(messageDetailsBody); // TODO skipped for flakiness
// verify saved draft details
messageDetailsPage.replyToMessageSenderName(singleMessage);

// Possibly move this to another test
PatientReplyPage.clickSendReplyDraftButton(
messageDetails.data.attributes.messageId,
messageDetails.data.attributes.senderId,
messageDetails.data.attributes.category,
messageDetails.data.attributes.subject,
`\n\n\nName\nTitleTest${testMessageBody}`,
);
PatientReplyPage.verifySendMessageConfirmationMessageText();
PatientReplyPage.verifySendMessageConfirmationHasFocus();
messageDetailsPage.replyToMessageRecipientName(singleMessage);

messageDetailsPage.replyToMessageDate(singleMessage);

messageDetailsPage.replyToMessageId(singleMessage);

messageDetailsPage.replyToMessageBody(singleMessage);

cy.injectAxe();
cy.axeCheck(AXE_CONTEXT, {});
cy.axeCheck(AXE_CONTEXT);
});
});

0 comments on commit cec2a5a

Please sign in to comment.