From 58f504e34fe5c37056c4e74ed8204bd0d10cb994 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Fri, 28 Oct 2022 15:52:57 +0300 Subject: Merge Jest configuration from Next version --- vnext/src/ui/__tests__/MessageInput.test.js | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 vnext/src/ui/__tests__/MessageInput.test.js (limited to 'vnext/src/ui/__tests__/MessageInput.test.js') diff --git a/vnext/src/ui/__tests__/MessageInput.test.js b/vnext/src/ui/__tests__/MessageInput.test.js new file mode 100644 index 00000000..1b5b0442 --- /dev/null +++ b/vnext/src/ui/__tests__/MessageInput.test.js @@ -0,0 +1,46 @@ +import { render, screen, fireEvent, waitFor } from '@testing-library/react'; + +import MessageInput from '../MessageInput'; + +test('Gives immediate focus on to textarea on load', async () => { + let draft = 'draft'; + render( { return true; }} />); + expect(screen.getByText(draft)).toHaveFocus(); +}); + + +test('Submits on ctrl-enter and pass validation', async () => { + let result = false; + const onSend = jest.fn(async ({ body }) => { result = body === 'YO'; return result; }); + let draft = 'draft'; + render(); + let textarea = screen.getByText(draft); + fireEvent.change(textarea, { target: { value: 'HI' } }); + // this event should not submit + fireEvent.keyPress(textarea, { + charCode: 13, + which: 13, + keyCode: 13 + }); + // this event should submit + fireEvent.keyPress(textarea, { + charCode: 13, + which: 13, + keyCode: 13, + ctrlKey: true + }); + expect(onSend).toHaveBeenCalledTimes(1); + expect(result).toBe(false); + fireEvent.change(textarea, { target: { value: 'YO' } }); + fireEvent.keyPress(textarea, { + charCode: 13, + which: 13, + keyCode: 13, + ctrlKey: true + }); + expect(onSend).toHaveBeenCalledTimes(2); + expect(result).toBe(true); + await waitFor(() => expect(textarea.textContent).toEqual('')); + textarea.focus(); + expect(textarea).toHaveFocus(); +}); -- cgit v1.2.3