import React from 'react'; import { create, act } from 'react-test-renderer'; import MessageInput from '../MessageInput'; const testMessage = { mid: 1, rid: 0, body: 'test message', timestamp: new Date().toISOString(), attach: '', to: {} }; window.matchMedia = window.matchMedia || function () { return { matches: true, addListener: function () { }, removeListener: function () { } }; }; it('Gives immediate focus on to textarea on load', () => { expect(document.activeElement.type).toEqual(undefined); var wrapper = null; act(() => { wrapper = create( { }} />); }); console.log(document.activeElement); expect(document.activeElement.type).toEqual('textarea', 'textarea was not focused'); }); it('Submits on ctrl-enter', () => { const onSend = jest.fn(); var messageInput = null; act(() => { messageInput = create(); }); let textarea = messageInput.root.findByType('textarea'); textarea.props.onKeyPress({ charCode: 13, which: 13, keyCode: 13, ctrlKey: false }); expect(onSend).toHaveBeenCalledTimes(0); textarea.props.onKeyPress({ charCode: 13, which: 13, keyCode: 13, ctrlKey: true }); expect(onSend).toHaveBeenCalledTimes(1); }); it('Clears text on submit', () => { var messageInput = null; act(() => { messageInput = create( { }} />); }); let textarea = messageInput.root.findByType('textarea'); act(() => { textarea.value = ' '; textarea.props.onChange({ target: { value: ' ', validity: {} } }); }); expect(textarea.value).toEqual(' '); act(() => { messageInput.root.findByType('form').props.onSubmit({ event: {} }); }); expect(textarea.value).toEqual(''); });