@@ -202,7 +202,88 @@ describe('messages API', () => {
202202 expect ( response . messages . length ) . toBe ( 0 ) ;
203203 } ) ;
204204
205- it ( 'delete message' , async ( ) => {
205+ it ( 'delete message for me' , async ( ) => {
206+ // First, create a new message for this test
207+ const sendResponse = await channel . sendMessage ( {
208+ message : {
209+ text : 'Message to delete for me only' ,
210+ user_id : user . id ,
211+ } ,
212+ } ) ;
213+ const testMessageId = sendResponse . message . id ;
214+
215+ // Delete the message for user only (delete_for_me: true)
216+ const deleteResponse = await client . chat . deleteMessage ( {
217+ id : testMessageId ,
218+ delete_for_me : true ,
219+ } ) ;
220+
221+ expect ( deleteResponse . message ?. id ) . toBe ( testMessageId ) ;
222+
223+ // Verify the message shows deleted_for_me: true for the deleting user
224+ const getMessageResponse = await client . chat . getMessage ( {
225+ id : testMessageId ,
226+ } ) ;
227+ expect ( getMessageResponse . message ?. deleted_for_me ) . toBe ( true ) ;
228+ expect ( getMessageResponse . message ?. text ) . toBe (
229+ 'Message to delete for me only' ,
230+ ) ;
231+
232+ // The message should still exist and be accessible to other users
233+ // Note: In the server-side SDK, we can't easily test different users viewing the same message
234+ // as that would require different authentication contexts
235+ } ) ;
236+
237+ it ( 'delete message for me - error when combined with hard delete' , async ( ) => {
238+ // Create another message for this test
239+ const sendResponse = await channel . sendMessage ( {
240+ message : {
241+ text : 'Message to test incompatible flags' ,
242+ user_id : user . id ,
243+ } ,
244+ } ) ;
245+ const testMessageId = sendResponse . message . id ;
246+
247+ // Attempt to delete with both delete_for_me and hard flags should fail
248+ await expect ( ( ) =>
249+ client . chat . deleteMessage ( {
250+ id : testMessageId ,
251+ delete_for_me : true ,
252+ hard : true ,
253+ } ) ,
254+ ) . rejects . toThrowError ( ) ;
255+ } ) ;
256+
257+ it ( 'delete message for me - normal message fetch includes deleted_for_me field' , async ( ) => {
258+ // Create a message to test with
259+ const sendResponse = await channel . sendMessage ( {
260+ message : {
261+ text : 'Message to check deleted_for_me field' ,
262+ user_id : user . id ,
263+ } ,
264+ } ) ;
265+ const testMessageId = sendResponse . message . id ;
266+
267+ // Initially, deleted_for_me should be false or undefined
268+ const initialGetResponse = await client . chat . getMessage ( {
269+ id : testMessageId ,
270+ } ) ;
271+ expect ( initialGetResponse . message ?. deleted_for_me ) . toBeFalsy ( ) ;
272+
273+ // Delete for me
274+ await client . chat . deleteMessage ( {
275+ id : testMessageId ,
276+ delete_for_me : true ,
277+ } ) ;
278+
279+ // Now deleted_for_me should be true
280+ const finalGetResponse = await client . chat . getMessage ( {
281+ id : testMessageId ,
282+ } ) ;
283+ expect ( finalGetResponse . message ?. deleted_for_me ) . toBe ( true ) ;
284+ } ) ;
285+
286+ it ( 'delete message (hard delete)' , async ( ) => {
206287 const response = await client . chat . deleteMessage ( {
207288 id : messageId ! ,
208289 hard : true ,
0 commit comments