From 8db641b782c164758faded94b9b6c8e2b1cfdc51 Mon Sep 17 00:00:00 2001 From: sacOO7 Date: Thu, 13 Feb 2025 18:58:57 +0530 Subject: [PATCH] [ECO-5196] updated MessagesIntegrationTest - Added test for updating a sent message --- .../integration/MessagesIntegrationTest.kt | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/chat-android/src/test/java/com/ably/chat/integration/MessagesIntegrationTest.kt b/chat-android/src/test/java/com/ably/chat/integration/MessagesIntegrationTest.kt index bd1d541..5fa5058 100644 --- a/chat-android/src/test/java/com/ably/chat/integration/MessagesIntegrationTest.kt +++ b/chat-android/src/test/java/com/ably/chat/integration/MessagesIntegrationTest.kt @@ -4,6 +4,7 @@ import com.ably.chat.Message import com.ably.chat.MessageEvent import com.ably.chat.MessageMetadata import com.ably.chat.RoomOptions +import com.ably.chat.RoomStatus import com.ably.chat.assertWaiter import io.ably.lib.types.MessageAction import java.util.UUID @@ -88,6 +89,60 @@ class MessagesIntegrationTest { assertEquals(metadata.toString(), message.metadata.toString()) } + @Test + fun `should be able to update a sent message`() = runTest { + val chatClient = sandbox.createSandboxChatClient() + val roomId = UUID.randomUUID().toString() + + val room = chatClient.rooms.get(roomId) + + room.attach() + assertWaiter { room.status == RoomStatus.Attached } + + val receivedMsges = mutableListOf() + room.messages.subscribe { receivedMsges.add(it.message) } + + val sentMessage = room.messages.send("hello") + assertWaiter { receivedMsges.size == 1 } + + val updatedText = "hello updated" + val updatedMetadata = MessageMetadata() + updatedMetadata.addProperty("foo", "baz") + val description = "Updating message" + val opMetadata = mapOf("operation" to "update") + val headers = mapOf("headerKey" to "headerValue") + + val updatedMessage = room.messages.update( + message = sentMessage, + text = updatedText, + description = description, + opMetadata = opMetadata, + metadata = updatedMetadata, + headers = headers + ) + + assertEquals(MessageAction.MESSAGE_UPDATE, updatedMessage.action) + assertEquals(sentMessage.serial, updatedMessage.serial) + assertEquals(sentMessage.createdAt, updatedMessage.createdAt) + + assertWaiter { receivedMsges.size == 2 } + val receivedMsg2 = receivedMsges.last() + + assertEquals(updatedMessage.text, receivedMsg2.text) + assertEquals(updatedMessage.metadata.toString(), receivedMsg2.metadata.toString()) + assertEquals(updatedMessage.operation?.description, receivedMsg2.operation?.description) + assertEquals(updatedMessage.operation?.metadata, receivedMsg2.operation?.metadata) + assertEquals(updatedMessage.headers, receivedMsg2.headers) + // check for serial, version, createdAt, timestamp, clientId, roomId, action for updated message and received message 2 + assertEquals(updatedMessage.serial, receivedMsg2.serial) + assertEquals(updatedMessage.version, receivedMsg2.version) + assertEquals(updatedMessage.createdAt, receivedMsg2.createdAt) + assertEquals(updatedMessage.timestamp, receivedMsg2.timestamp) + assertEquals(updatedMessage.clientId, receivedMsg2.clientId) + assertEquals(updatedMessage.roomId, receivedMsg2.roomId) + assertEquals(updatedMessage.action, receivedMsg2.action) + } + companion object { private lateinit var sandbox: Sandbox