@@ -880,4 +880,96 @@ void whenUnblockingAMessage_thenIsUnblocked() {
880880
881881 Assertions .assertDoesNotThrow (() -> Blocklist .delete (blocklistName ).request ());
882882 }
883+
884+ @ DisplayName ("Can delete message for me only" )
885+ @ Test
886+ void whenDeletingMessageForMe_thenIsDeletedForMe () {
887+ String text = "This is a message to delete for me only" ;
888+ MessageRequestObject messageRequest =
889+ MessageRequestObject .builder ().text (text ).userId (testUserRequestObject .getId ()).build ();
890+ Message message =
891+ Assertions .assertDoesNotThrow (
892+ () ->
893+ Message .send (testChannel .getType (), testChannel .getId ())
894+ .message (messageRequest )
895+ .request ())
896+ .getMessage ();
897+ Assertions .assertNull (message .getDeletedAt ());
898+
899+ // Test delete for me only
900+ Message deletedMessage =
901+ Assertions .assertDoesNotThrow (
902+ () ->
903+ Message .delete (message .getId ())
904+ .deleteForMe (testUserRequestObject .getId ())
905+ .request ())
906+ .getMessage ();
907+
908+ // Verify the delete request was successful
909+ Assertions .assertNotNull (deletedMessage );
910+
911+ // For delete for me, the message should still exist but be marked as deleted for the specific
912+ // user
913+ // The deletedAt might be null as this is a "soft delete for me" operation
914+ System .out .println ("Delete for me response - deletedAt: " + deletedMessage .getDeletedAt ());
915+
916+ // Verify the message still exists (delete for me doesn't permanently delete)
917+ Message retrievedMessage =
918+ Assertions .assertDoesNotThrow (() -> Message .get (message .getId ()).request ()).getMessage ();
919+ Assertions .assertNotNull (retrievedMessage );
920+ Assertions .assertEquals (message .getId (), retrievedMessage .getId ());
921+ }
922+
923+ @ DisplayName ("Can use convenience method for delete for me" )
924+ @ Test
925+ void whenUsingDeleteForMeConvenienceMethod_thenIsDeletedForMe () {
926+ String text = "This is a message to delete for me using convenience method" ;
927+ MessageRequestObject messageRequest =
928+ MessageRequestObject .builder ().text (text ).userId (testUserRequestObject .getId ()).build ();
929+ Message message =
930+ Assertions .assertDoesNotThrow (
931+ () ->
932+ Message .send (testChannel .getType (), testChannel .getId ())
933+ .message (messageRequest )
934+ .request ())
935+ .getMessage ();
936+ Assertions .assertNull (message .getDeletedAt ());
937+
938+ // Test convenience method for delete for me
939+ Message deletedMessage =
940+ Assertions .assertDoesNotThrow (
941+ () -> Message .deleteForMe (message .getId (), testUserRequestObject .getId ()).request ())
942+ .getMessage ();
943+
944+ // Verify the delete request was successful
945+ Assertions .assertNotNull (deletedMessage );
946+
947+ // Verify the message still exists (delete for me doesn't permanently delete)
948+ Message retrievedMessage =
949+ Assertions .assertDoesNotThrow (() -> Message .get (message .getId ()).request ()).getMessage ();
950+ Assertions .assertNotNull (retrievedMessage );
951+ Assertions .assertEquals (message .getId (), retrievedMessage .getId ());
952+ }
953+
954+ @ DisplayName ("Can use convenience method for hard delete" )
955+ @ Test
956+ void whenUsingHardDeleteConvenienceMethod_thenIsHardDeleted () {
957+ String text = "This is a message to hard delete using convenience method" ;
958+ MessageRequestObject messageRequest =
959+ MessageRequestObject .builder ().text (text ).userId (testUserRequestObject .getId ()).build ();
960+ Message message =
961+ Assertions .assertDoesNotThrow (
962+ () ->
963+ Message .send (testChannel .getType (), testChannel .getId ())
964+ .message (messageRequest )
965+ .request ())
966+ .getMessage ();
967+ Assertions .assertNull (message .getDeletedAt ());
968+
969+ // Test convenience method for hard delete
970+ Message deletedMessage =
971+ Assertions .assertDoesNotThrow (() -> Message .hardDelete (message .getId ()).request ())
972+ .getMessage ();
973+ Assertions .assertNotNull (deletedMessage .getDeletedAt ());
974+ }
883975}
0 commit comments