Skip to content

Commit

Permalink
[ECO-5196] updated MessagesIntegrationTest
Browse files Browse the repository at this point in the history
- Added test for updating a sent message
- Added test for deleting a sent message
  • Loading branch information
sacOO7 committed Feb 13, 2025
1 parent cd700ac commit 44cd11b
Showing 1 changed file with 98 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -88,6 +89,103 @@ 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<Message>()
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)
}

@Test
fun `should be able to delete 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<Message>()
room.messages.subscribe { receivedMsges.add(it.message) }

val sentMessage = room.messages.send("hello")
assertWaiter { receivedMsges.size == 1 }

val description = "Deleting message"
val opMetadata = mapOf("operation" to "delete")

val deletedMessage = room.messages.delete(
message = sentMessage,
description = description,
opMetadata = opMetadata,
)

assertEquals(MessageAction.MESSAGE_DELETE, deletedMessage.action)
assertEquals(sentMessage.serial, deletedMessage.serial)
assertEquals(sentMessage.createdAt, deletedMessage.createdAt)

assertWaiter { receivedMsges.size == 2 }
val receivedMsg2 = receivedMsges.last()
assertEquals(deletedMessage.operation?.description, receivedMsg2.operation?.description)
assertEquals(deletedMessage.operation?.metadata, receivedMsg2.operation?.metadata)
// check for serial, version, createdAt, timestamp, clientId, roomId, action for deleted message and received message 2
assertEquals(deletedMessage.serial, receivedMsg2.serial)
assertEquals(deletedMessage.version, receivedMsg2.version)
assertEquals(deletedMessage.createdAt, receivedMsg2.createdAt)
assertEquals(deletedMessage.timestamp, receivedMsg2.timestamp)
assertEquals(deletedMessage.clientId, receivedMsg2.clientId)
assertEquals(deletedMessage.roomId, receivedMsg2.roomId)
assertEquals(deletedMessage.action, receivedMsg2.action)
}

companion object {
private lateinit var sandbox: Sandbox

Expand Down

0 comments on commit 44cd11b

Please sign in to comment.