@@ -18,6 +18,7 @@ import React from "react";
18
18
import { fireEvent , render , waitFor } from "@testing-library/react" ;
19
19
import { IContent , MatrixClient , MsgType } from "matrix-js-sdk/src/matrix" ;
20
20
import { mocked } from "jest-mock" ;
21
+ import userEvent from "@testing-library/user-event" ;
21
22
22
23
import SendMessageComposer , {
23
24
attachMentions ,
@@ -28,7 +29,7 @@ import MatrixClientContext from "../../../../src/contexts/MatrixClientContext";
28
29
import RoomContext , { TimelineRenderingType } from "../../../../src/contexts/RoomContext" ;
29
30
import EditorModel from "../../../../src/editor/model" ;
30
31
import { createPartCreator } from "../../../editor/mock" ;
31
- import { createTestClient , mkEvent , mkStubRoom } from "../../../test-utils" ;
32
+ import { createTestClient , mkEvent , mkStubRoom , stubClient } from "../../../test-utils" ;
32
33
import { MatrixClientPeg } from "../../../../src/MatrixClientPeg" ;
33
34
import defaultDispatcher from "../../../../src/dispatcher/dispatcher" ;
34
35
import DocumentOffset from "../../../../src/editor/offset" ;
@@ -574,4 +575,29 @@ describe("<SendMessageComposer/>", () => {
574
575
expect ( isQuickReaction ( model4 ) ) . toBeFalsy ( ) ;
575
576
} ) ;
576
577
} ) ;
578
+
579
+ it ( "should call prepareToEncrypt when the user is typing" , async ( ) => {
580
+ const cli = stubClient ( ) ;
581
+ cli . isCryptoEnabled = jest . fn ( ) . mockReturnValue ( true ) ;
582
+ cli . isRoomEncrypted = jest . fn ( ) . mockReturnValue ( true ) ;
583
+ cli . prepareToEncrypt = jest . fn ( ) ;
584
+ const room = mkStubRoom ( "!roomId:server" , "Room" , cli ) ;
585
+
586
+ expect ( cli . prepareToEncrypt ) . not . toHaveBeenCalled ( ) ;
587
+
588
+ const { container } = render (
589
+ < MatrixClientContext . Provider value = { cli } >
590
+ < SendMessageComposer room = { room } toggleStickerPickerOpen = { jest . fn ( ) } />
591
+ </ MatrixClientContext . Provider > ,
592
+ ) ;
593
+
594
+ const composer = container . querySelector < HTMLDivElement > ( ".mx_BasicMessageComposer_input" ) ! ;
595
+
596
+ // Does not trigger on keydown as that'll cause false negatives for global shortcuts
597
+ await userEvent . type ( composer , "[ControlLeft>][KeyK][/ControlLeft]" ) ;
598
+ expect ( cli . prepareToEncrypt ) . not . toHaveBeenCalled ( ) ;
599
+
600
+ await userEvent . type ( composer , "Hello" ) ;
601
+ expect ( cli . prepareToEncrypt ) . toHaveBeenCalled ( ) ;
602
+ } ) ;
577
603
} ) ;
0 commit comments