@@ -16,7 +16,7 @@ limitations under the License.
16
16
17
17
import React , { createRef , RefObject } from "react" ;
18
18
import { render } from "@testing-library/react" ;
19
- import { MatrixClient , MsgType , Room } from "matrix-js-sdk/src/matrix" ;
19
+ import { MatrixClient , MatrixEvent , MsgType , Room } from "matrix-js-sdk/src/matrix" ;
20
20
import { mocked } from "jest-mock" ;
21
21
22
22
import VoiceRecordComposerTile from "../../../../src/components/views/rooms/VoiceRecordComposerTile" ;
@@ -26,6 +26,7 @@ import { IUpload, VoiceMessageRecording } from "../../../../src/audio/VoiceMessa
26
26
import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks" ;
27
27
import { VoiceRecordingStore } from "../../../../src/stores/VoiceRecordingStore" ;
28
28
import { PlaybackClock } from "../../../../src/audio/PlaybackClock" ;
29
+ import { mkEvent } from "../../../test-utils" ;
29
30
30
31
jest . mock ( "../../../../src/utils/local-room" , ( ) => ( {
31
32
doMaybeLocalRoomAction : jest . fn ( ) ,
@@ -46,10 +47,12 @@ describe("<VoiceRecordComposerTile/>", () => {
46
47
let mockRecorder : VoiceMessageRecording ;
47
48
let mockUpload : IUpload ;
48
49
let mockClient : MatrixClient ;
50
+ let replyToEvent : MatrixEvent | null = null ;
49
51
const roomId = "!room:example.com" ;
50
52
51
53
beforeEach ( ( ) => {
52
54
mockClient = {
55
+ getUserId : jest . fn ( ) . mockReturnValue ( "@alice:example.com" ) ,
53
56
sendMessage : jest . fn ( ) ,
54
57
} as unknown as MatrixClient ;
55
58
MatrixClientPeg . get = ( ) => mockClient ;
@@ -63,6 +66,7 @@ describe("<VoiceRecordComposerTile/>", () => {
63
66
room,
64
67
ref : voiceRecordComposerTile ,
65
68
permalinkCreator : new RoomPermalinkCreator ( room ) ,
69
+ replyToEvent,
66
70
} ;
67
71
mockUpload = {
68
72
mxc : "mxc://example.com/voice" ,
@@ -127,6 +131,44 @@ describe("<VoiceRecordComposerTile/>", () => {
127
131
"org.matrix.msc1767.text" : "Voice message" ,
128
132
"org.matrix.msc3245.voice" : { } ,
129
133
"url" : "mxc://example.com/voice" ,
134
+ "org.matrix.msc3952.mentions" : { } ,
135
+ } ) ;
136
+ } ) ;
137
+
138
+ it ( "reply with voice recording" , async ( ) => {
139
+ replyToEvent = mkEvent ( {
140
+ type : "m.room.message" ,
141
+ user : "@bob:test" ,
142
+ room : roomId ,
143
+ content : { } ,
144
+ event : true ,
145
+ } ) ;
146
+
147
+ await voiceRecordComposerTile . current ! . send ( ) ;
148
+ expect ( mockClient . sendMessage ) . toHaveBeenCalledWith ( roomId , {
149
+ "body" : "Voice message" ,
150
+ "file" : undefined ,
151
+ "info" : {
152
+ duration : 1337000 ,
153
+ mimetype : "audio/ogg" ,
154
+ size : undefined ,
155
+ } ,
156
+ "msgtype" : MsgType . Audio ,
157
+ "org.matrix.msc1767.audio" : {
158
+ duration : 1337000 ,
159
+ waveform : [ 1434 , 2560 , 3686 ] ,
160
+ } ,
161
+ "org.matrix.msc1767.file" : {
162
+ file : undefined ,
163
+ mimetype : "audio/ogg" ,
164
+ name : "Voice message.ogg" ,
165
+ size : undefined ,
166
+ url : "mxc://example.com/voice" ,
167
+ } ,
168
+ "org.matrix.msc1767.text" : "Voice message" ,
169
+ "org.matrix.msc3245.voice" : { } ,
170
+ "url" : "mxc://example.com/voice" ,
171
+ "org.matrix.msc3952.mentions" : { user_ids : [ "@bob:test" ] } ,
130
172
} ) ;
131
173
} ) ;
132
174
} ) ;
0 commit comments