Skip to content

Commit

Permalink
feat: added test cases for the modal component (#880)
Browse files Browse the repository at this point in the history
* feat: added test cases for the modal component

* removed unnecessary console.log statement
  • Loading branch information
satyasekharcvb authored Dec 2, 2023
1 parent c9e5c40 commit 5821cc7
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 2 deletions.
76 changes: 76 additions & 0 deletions force-app/main/default/lwc/myModal/__tests__/myModal.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import { createElement } from 'lwc';
import MyModal from 'c/myModal';

describe('c-my-modal', () => {
afterEach(() => {
// The jsdom instance is shared across test cases in a single file so reset the DOM
while (document.body.firstChild) {
document.body.removeChild(document.body.firstChild);
}
});

it('displays label in the header', () => {
// Create component and set the header public property
const element = createElement('c-my-modal', {
is: MyModal
});
element.header = 'My Modal Heading';
document.body.appendChild(element);

// Validate the modal header to have rendered with correct label
expect(
element.shadowRoot.querySelector('lightning-modal-header').label
).toBe('My Modal Heading');
});

it('displays content in the body', () => {
// Create component and set the content public property
const element = createElement('c-my-modal', {
is: MyModal
});
element.content = 'My Modal Content';
document.body.appendChild(element);

// Validate the modal body to have rendered with correct content
expect(element.modalBody$().textContent).toBe(
'Content: My Modal Content'
);
});

it('displays close button in footer', () => {
// Create component and set the content public property
const element = createElement('c-my-modal', {
is: MyModal
});
document.body.appendChild(element);

// Validate the modal footer to have rendered with close button
expect(element.modalFooter$('lightning-button').label).toBe('Close');
});

it('returns value when close button is clicked', () => {
// Create component and set the content public property
const element = createElement('c-my-modal', {
is: MyModal
});
document.body.appendChild(element);

// Query lightning-button element
const buttonEl = element.modalFooter$('lightning-button');
buttonEl.click();

// Validate the element passes the value into this.close() method
expect(element.closeValue).toBe('return value');
});

it('is accessible when error is returned', async () => {
// Create component
const element = createElement('c-my-modal', {
is: MyModal
});
document.body.appendChild(element);

// Check accessibility
await expect(element).toBeAccessible();
});
});
2 changes: 1 addition & 1 deletion force-app/main/default/lwc/myModal/myModal.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<template>
<lightning-modal-header label={header}></lightning-modal-header>
<lightning-modal-body> Content: {content} </lightning-modal-body>
<lightning-modal-body>Content: {content}</lightning-modal-body>
<lightning-modal-footer>
<lightning-button
label="Close"
Expand Down
2 changes: 1 addition & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ module.exports = {
'<rootDir>/force-app/test/jest-mocks/lightning/messageService',
'^lightning/actions$':
'<rootDir>/force-app/test/jest-mocks/lightning/actions',
'^lightning/modal*':
'^lightning/modal$':
'<rootDir>/force-app/test/jest-mocks/lightning/modal',
'^lightning/refresh$':
'<rootDir>/force-app/test/jest-mocks/lightning/refresh'
Expand Down

0 comments on commit 5821cc7

Please sign in to comment.