@@ -28,48 +28,66 @@ import RoomContext from "../../../../src/contexts/RoomContext";
2828import { IRoomState } from "../../../../src/components/structures/RoomView" ;
2929import ResizeNotifier from "../../../../src/utils/ResizeNotifier" ;
3030import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks" ;
31+ import { LocalRoom } from "../../../../src/models/LocalRoom" ;
32+ import MessageComposerButtons from "../../../../src/components/views/rooms/MessageComposerButtons" ;
3133
3234describe ( "MessageComposer" , ( ) => {
3335 stubClient ( ) ;
3436 const cli = createTestClient ( ) ;
35- const room = mkStubRoom ( "!roomId:server" , "Room 1" , cli ) ;
3637
37- it ( "Renders a SendMessageComposer and MessageComposerButtons by default" , ( ) => {
38- const wrapper = wrapAndRender ( { room } ) ;
39-
40- expect ( wrapper . find ( "SendMessageComposer" ) ) . toHaveLength ( 1 ) ;
41- expect ( wrapper . find ( "MessageComposerButtons" ) ) . toHaveLength ( 1 ) ;
38+ describe ( "for a Room" , ( ) => {
39+ const room = mkStubRoom ( "!roomId:server" , "Room 1" , cli ) ;
40+
41+ it ( "Renders a SendMessageComposer and MessageComposerButtons by default" , ( ) => {
42+ const wrapper = wrapAndRender ( { room } ) ;
43+
44+ expect ( wrapper . find ( "SendMessageComposer" ) ) . toHaveLength ( 1 ) ;
45+ expect ( wrapper . find ( "MessageComposerButtons" ) ) . toHaveLength ( 1 ) ;
46+ } ) ;
47+
48+ it ( "Does not render a SendMessageComposer or MessageComposerButtons when user has no permission" , ( ) => {
49+ const wrapper = wrapAndRender ( { room } , false ) ;
50+
51+ expect ( wrapper . find ( "SendMessageComposer" ) ) . toHaveLength ( 0 ) ;
52+ expect ( wrapper . find ( "MessageComposerButtons" ) ) . toHaveLength ( 0 ) ;
53+ expect ( wrapper . find ( ".mx_MessageComposer_noperm_error" ) ) . toHaveLength ( 1 ) ;
54+ } ) ;
55+
56+ it ( "Does not render a SendMessageComposer or MessageComposerButtons when room is tombstoned" , ( ) => {
57+ const wrapper = wrapAndRender ( { room } , true , mkEvent ( {
58+ event : true ,
59+ type : "m.room.tombstone" ,
60+ room : room . roomId ,
61+ user : "@user1:server" ,
62+ skey : "" ,
63+ content : { } ,
64+ ts : Date . now ( ) ,
65+ } ) ) ;
66+
67+ expect ( wrapper . find ( "SendMessageComposer" ) ) . toHaveLength ( 0 ) ;
68+ expect ( wrapper . find ( "MessageComposerButtons" ) ) . toHaveLength ( 0 ) ;
69+ expect ( wrapper . find ( ".mx_MessageComposer_roomReplaced_header" ) ) . toHaveLength ( 1 ) ;
70+ } ) ;
4271 } ) ;
4372
44- it ( "Does not render a SendMessageComposer or MessageComposerButtons when user has no permission" , ( ) => {
45- const wrapper = wrapAndRender ( { room } , false ) ;
46-
47- expect ( wrapper . find ( "SendMessageComposer" ) ) . toHaveLength ( 0 ) ;
48- expect ( wrapper . find ( "MessageComposerButtons" ) ) . toHaveLength ( 0 ) ;
49- expect ( wrapper . find ( ".mx_MessageComposer_noperm_error" ) ) . toHaveLength ( 1 ) ;
50- } ) ;
73+ describe ( "for a LocalRoom" , ( ) => {
74+ const localRoom = new LocalRoom ( "!room:example.com" , cli , cli . getUserId ( ) ) ;
5175
52- it ( "Does not render a SendMessageComposer or MessageComposerButtons when room is tombstoned" , ( ) => {
53- const wrapper = wrapAndRender ( { room } , true , mkEvent ( {
54- event : true ,
55- type : "m.room.tombstone" ,
56- room : room . roomId ,
57- user : "@user1:server" ,
58- skey : "" ,
59- content : { } ,
60- ts : Date . now ( ) ,
61- } ) ) ;
62-
63- expect ( wrapper . find ( "SendMessageComposer" ) ) . toHaveLength ( 0 ) ;
64- expect ( wrapper . find ( "MessageComposerButtons" ) ) . toHaveLength ( 0 ) ;
65- expect ( wrapper . find ( ".mx_MessageComposer_roomReplaced_header" ) ) . toHaveLength ( 1 ) ;
76+ it ( "should pass the sticker picker disabled prop" , ( ) => {
77+ const wrapper = wrapAndRender ( { room : localRoom } ) ;
78+ expect ( wrapper . find ( MessageComposerButtons ) . props ( ) . showStickersButton ) . toBe ( false ) ;
79+ } ) ;
6680 } ) ;
6781} ) ;
6882
69- function wrapAndRender ( props = { } , canSendMessages = true , tombstone ?: MatrixEvent ) : ReactWrapper {
83+ function wrapAndRender (
84+ props : Partial < React . ComponentProps < typeof MessageComposer > > = { } ,
85+ canSendMessages = true ,
86+ tombstone ?: MatrixEvent ,
87+ ) : ReactWrapper {
7088 const mockClient = MatrixClientPeg . get ( ) ;
7189 const roomId = "myroomid" ;
72- const room : any = {
90+ const room : any = props . room || {
7391 currentState : undefined ,
7492 roomId,
7593 client : mockClient ,
0 commit comments