Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,9 @@ public fun Message.shouldDeleteRemote(currentUserId: String?): Result<Unit> {
return Result.Failure(error)
}
// 2. type = 'error'/'ephemeral' - not persisted on server, delete only locally
// 3. syncStatus = 'IN_PROGRESS'/`SYNC_NEEDED`/`FAILED_PERMANENTLY` - not persisted on server, delete only locally
// 3. syncStatus = 'IN_PROGRESS'/`FAILED_PERMANENTLY` - not persisted on server, delete only locally
if (isError() || isEphemeral() ||
syncStatus == SyncStatus.IN_PROGRESS ||
syncStatus == SyncStatus.SYNC_NEEDED ||
syncStatus == SyncStatus.FAILED_PERMANENTLY
) {
val error = Error.GenericError("Message is local-only, don't call DeleteMessage API")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -629,40 +629,40 @@ internal class MessageUtilsTest {
}

@Test
fun `shouldDeleteRemote should return Failure for SYNC_NEEDED sync status`() {
fun `shouldDeleteRemote should return Failure for FAILED_PERMANENTLY sync status`() {
val message = randomMessage(
type = MessageType.REGULAR,
syncStatus = SyncStatus.SYNC_NEEDED,
syncStatus = SyncStatus.FAILED_PERMANENTLY,
)
val result = message.shouldDeleteRemote(randomString())
assertTrue(result is Result.Failure)
}

@Test
fun `shouldDeleteRemote should return Failure for FAILED_PERMANENTLY sync status`() {
fun `shouldDeleteRemote should return Success for COMPLETED regular message`() {
val message = randomMessage(
type = MessageType.REGULAR,
syncStatus = SyncStatus.FAILED_PERMANENTLY,
syncStatus = SyncStatus.COMPLETED,
)
val result = message.shouldDeleteRemote(randomString())
assertTrue(result is Result.Failure)
assertTrue(result is Result.Success)
}

@Test
fun `shouldDeleteRemote should return Success for COMPLETED regular message`() {
fun `shouldDeleteRemote should return Success for AWAITING_ATTACHMENTS regular message`() {
val message = randomMessage(
type = MessageType.REGULAR,
syncStatus = SyncStatus.COMPLETED,
syncStatus = SyncStatus.AWAITING_ATTACHMENTS,
)
val result = message.shouldDeleteRemote(randomString())
assertTrue(result is Result.Success)
}

@Test
fun `shouldDeleteRemote should return Success for AWAITING_ATTACHMENTS regular message`() {
fun `shouldDeleteRemote should return Success for SYNC_NEEDED sync status`() {
val message = randomMessage(
type = MessageType.REGULAR,
syncStatus = SyncStatus.AWAITING_ATTACHMENTS,
syncStatus = SyncStatus.SYNC_NEEDED,
)
val result = message.shouldDeleteRemote(randomString())
assertTrue(result is Result.Success)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ internal class DeleteMessageListenerDatabaseTest {
}

@Test
fun `onMessageDeletePrecondition when message has SYNC_NEEDED should return Failure and delete from repo`() =
fun `onMessageDeletePrecondition when message has SYNC_NEEDED should return Success`() =
runTest {
val currentUser = randomUser()
val testMessage = randomMessage(
Expand All @@ -224,8 +224,7 @@ internal class DeleteMessageListenerDatabaseTest {

val result = deleteMessageListenerState.onMessageDeletePrecondition(testMessage.id)

assertTrue(result is Result.Failure)
verify(messageRepository).deleteChannelMessage(argThat { id == testMessage.id })
assertTrue(result is Result.Success)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ internal class DeleteMessageListenerStateTest {
}

@Test
fun `onMessageDeletePrecondition when message has SYNC_NEEDED should return Failure and delete locally`() =
fun `onMessageDeletePrecondition when message has SYNC_NEEDED should return Success`() =
runTest {
val testMessage = randomMessage(
id = "msg-1",
Expand All @@ -262,15 +262,11 @@ internal class DeleteMessageListenerStateTest {
)

whenever(logicRegistry.channelFromMessageId(any())) doReturn channelLogic
whenever(logicRegistry.channelFromMessage(any())) doReturn channelLogic
whenever(logicRegistry.getActiveQueryThreadsLogic()) doReturn activeThreadsLogic
whenever(logicRegistry.threadFromMessage(any())) doReturn null
whenever(channelLogic.getMessage(any())) doReturn testMessage

val result = deleteMessageListenerState.onMessageDeletePrecondition(testMessage.id)

assertTrue(result is Result.Failure)
verify(channelLogic).deleteMessage(argThat { id == testMessage.id })
assertTrue(result is Result.Success)
}

@Test
Expand Down
Loading