@@ -28,48 +28,66 @@ import RoomContext from "../../../../src/contexts/RoomContext";
28
28
import { IRoomState } from "../../../../src/components/structures/RoomView" ;
29
29
import ResizeNotifier from "../../../../src/utils/ResizeNotifier" ;
30
30
import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks" ;
31
+ import { LocalRoom } from "../../../../src/models/LocalRoom" ;
32
+ import MessageComposerButtons from "../../../../src/components/views/rooms/MessageComposerButtons" ;
31
33
32
34
describe ( "MessageComposer" , ( ) => {
33
35
stubClient ( ) ;
34
36
const cli = createTestClient ( ) ;
35
- const room = mkStubRoom ( "!roomId:server" , "Room 1" , cli ) ;
36
37
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
+ } ) ;
42
71
} ) ;
43
72
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 ( ) ) ;
51
75
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
+ } ) ;
66
80
} ) ;
67
81
} ) ;
68
82
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 {
70
88
const mockClient = MatrixClientPeg . get ( ) ;
71
89
const roomId = "myroomid" ;
72
- const room : any = {
90
+ const room : any = props . room || {
73
91
currentState : undefined ,
74
92
roomId,
75
93
client : mockClient ,
0 commit comments