diff --git a/ghost/portal/src/components/common/ActionButton.test.js b/ghost/portal/src/components/common/ActionButton.test.js new file mode 100644 index 0000000000..ceb43b4d07 --- /dev/null +++ b/ghost/portal/src/components/common/ActionButton.test.js @@ -0,0 +1,34 @@ +import React from 'react'; +import {render, fireEvent} from '@testing-library/react'; +import ActionButton from './ActionButton'; + +const setup = (overrides) => { + const mockOnClickFn = jest.fn(); + const props = { + label: 'Test Action Button', onClick: mockOnClickFn, disabled: false + }; + const utils = render( + + ); + + const buttonEl = utils.queryByRole('button', {name: props.label}); + return { + buttonEl, + mockOnClickFn, + ...utils + }; +}; + +describe('ActionButton', () => { + test('renders', () => { + const {buttonEl} = setup(); + expect(buttonEl).toBeInTheDocument(); + }); + + test('fires onClick', () => { + const {buttonEl, mockOnClickFn} = setup(); + + fireEvent.click(buttonEl); + expect(mockOnClickFn).toHaveBeenCalled(); + }); +}); diff --git a/ghost/portal/src/components/common/InputField.test.js b/ghost/portal/src/components/common/InputField.test.js new file mode 100644 index 0000000000..c6cde81c9e --- /dev/null +++ b/ghost/portal/src/components/common/InputField.test.js @@ -0,0 +1,38 @@ +import React from 'react'; +import {render, fireEvent} from '@testing-library/react'; +import InputField from './InputField'; + +const setup = (overrides = {}) => { + const mockOnChangeFn = jest.fn(); + const props = { + name: 'test-input', + label: 'Test Input', + value: '', + placeholder: 'Test placeholder', + onChange: mockOnChangeFn + }; + const utils = render( + + ); + + const inputEl = utils.getByLabelText(props.label); + return { + inputEl, + mockOnChangeFn, + ...utils + }; +}; + +describe('InputField', () => { + test('renders', () => { + const {inputEl} = setup(); + expect(inputEl).toBeInTheDocument(); + }); + + test('calls onChange on value', () => { + const {inputEl, mockOnChangeFn} = setup(); + fireEvent.change(inputEl, {target: {value: 'Test'}}); + + expect(mockOnChangeFn).toHaveBeenCalled(); + }); +});