mirror of
https://github.com/SomboChea/ui
synced 2026-01-17 08:35:47 +07:00
refactor(#204): copyToClipBoard.test, moved test of utility to it's own test
This commit is contained in:
committed by
Priscila Oliveira
parent
dd532955de
commit
16b12ddc76
49
src/utils/cli-utils.test.ts
Normal file
49
src/utils/cli-utils.test.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import { SyntheticEvent } from 'react';
|
||||
|
||||
import { copyToClipBoardUtility } from './cli-utils';
|
||||
|
||||
describe('copyToClipBoardUtility', () => {
|
||||
let originalGetSelection;
|
||||
|
||||
const mockGetSelectionResult = {
|
||||
removeAllRanges: jest.fn(),
|
||||
addRange: jest.fn(),
|
||||
};
|
||||
beforeEach(() => {
|
||||
originalGetSelection = window.getSelection;
|
||||
|
||||
window.getSelection = jest.fn().mockReturnValue(mockGetSelectionResult);
|
||||
});
|
||||
afterEach(() => {
|
||||
window.getSelection = originalGetSelection;
|
||||
jest.restoreAllMocks();
|
||||
});
|
||||
|
||||
test('should call the DOM APIs', () => {
|
||||
// Given
|
||||
const testEvent: { preventDefault: Function } = {
|
||||
preventDefault: jest.fn(),
|
||||
};
|
||||
const testCopy = 'copy text';
|
||||
const spys = {
|
||||
createElement: jest.spyOn(document, 'createElement'),
|
||||
execCommand: jest.spyOn(document, 'execCommand'),
|
||||
appendChild: jest.spyOn(document.body, 'appendChild'),
|
||||
removeChild: jest.spyOn(document.body, 'removeChild'),
|
||||
};
|
||||
const expectedDiv = document.createElement('div');
|
||||
expectedDiv.innerText = testCopy;
|
||||
|
||||
// When
|
||||
const copyFunc = copyToClipBoardUtility(testCopy);
|
||||
copyFunc(testEvent as SyntheticEvent<HTMLElement>);
|
||||
|
||||
// Then
|
||||
expect(mockGetSelectionResult.removeAllRanges).toHaveBeenCalledWith();
|
||||
expect(mockGetSelectionResult.addRange).toHaveBeenCalled();
|
||||
expect(spys.createElement).toHaveBeenCalledWith('div');
|
||||
expect(spys.appendChild).toHaveBeenCalledWith(expectedDiv);
|
||||
expect(spys.execCommand).toHaveBeenCalledWith('copy');
|
||||
expect(spys.removeChild).toHaveBeenCalledWith(expectedDiv);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user