|
|
@ -25,8 +25,10 @@ import io.element.android.libraries.matrix.api.room.RoomMembershipState |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.AudioMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.AudioMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.EmoteMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.EmoteMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.FileMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.FileMessageType |
|
|
|
|
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.FormattedBody |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.ImageMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.ImageMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessageType |
|
|
|
|
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.MessageFormat |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType |
|
|
|
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType |
|
|
@ -51,6 +53,7 @@ import org.junit.Test |
|
|
|
import org.junit.runner.RunWith |
|
|
|
import org.junit.runner.RunWith |
|
|
|
import org.robolectric.RobolectricTestRunner |
|
|
|
import org.robolectric.RobolectricTestRunner |
|
|
|
import org.robolectric.RuntimeEnvironment |
|
|
|
import org.robolectric.RuntimeEnvironment |
|
|
|
|
|
|
|
import org.robolectric.annotation.Config |
|
|
|
|
|
|
|
|
|
|
|
@RunWith(RobolectricTestRunner::class) |
|
|
|
@RunWith(RobolectricTestRunner::class) |
|
|
|
class NotifiableEventResolverTest { |
|
|
|
class NotifiableEventResolverTest { |
|
|
@ -97,6 +100,71 @@ class NotifiableEventResolverTest { |
|
|
|
assertThat(result).isEqualTo(expectedResult) |
|
|
|
assertThat(result).isEqualTo(expectedResult) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
@Config(qualifiers = "en") |
|
|
|
|
|
|
|
fun `resolve event message with mention`() = runTest { |
|
|
|
|
|
|
|
val sut = createNotifiableEventResolver( |
|
|
|
|
|
|
|
notificationResult = Result.success( |
|
|
|
|
|
|
|
createNotificationData( |
|
|
|
|
|
|
|
content = NotificationContent.MessageLike.RoomMessage( |
|
|
|
|
|
|
|
senderId = A_USER_ID_2, |
|
|
|
|
|
|
|
messageType = TextMessageType(body = "Hello world", formatted = null) |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
hasMention = true, |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) |
|
|
|
|
|
|
|
val expectedResult = createNotifiableMessageEvent(body = "Mentioned you: Hello world") |
|
|
|
|
|
|
|
assertThat(result).isEqualTo(expectedResult) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
fun `resolve HTML formatted event message text takes plain text version`() = runTest { |
|
|
|
|
|
|
|
val sut = createNotifiableEventResolver( |
|
|
|
|
|
|
|
notificationResult = Result.success( |
|
|
|
|
|
|
|
createNotificationData( |
|
|
|
|
|
|
|
content = NotificationContent.MessageLike.RoomMessage( |
|
|
|
|
|
|
|
senderId = A_USER_ID_2, |
|
|
|
|
|
|
|
messageType = TextMessageType( |
|
|
|
|
|
|
|
body = "Hello world!", |
|
|
|
|
|
|
|
formatted = FormattedBody( |
|
|
|
|
|
|
|
body = "<b>Hello world</b>", |
|
|
|
|
|
|
|
format = MessageFormat.HTML, |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) |
|
|
|
|
|
|
|
val expectedResult = createNotifiableMessageEvent(body = "Hello world") |
|
|
|
|
|
|
|
assertThat(result).isEqualTo(expectedResult) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
fun `resolve incorrectly formatted event message text uses fallback`() = runTest { |
|
|
|
|
|
|
|
val sut = createNotifiableEventResolver( |
|
|
|
|
|
|
|
notificationResult = Result.success( |
|
|
|
|
|
|
|
createNotificationData( |
|
|
|
|
|
|
|
content = NotificationContent.MessageLike.RoomMessage( |
|
|
|
|
|
|
|
senderId = A_USER_ID_2, |
|
|
|
|
|
|
|
messageType = TextMessageType( |
|
|
|
|
|
|
|
body = "Hello world", |
|
|
|
|
|
|
|
formatted = FormattedBody( |
|
|
|
|
|
|
|
body = "???Hello world!???", |
|
|
|
|
|
|
|
format = MessageFormat.UNKNOWN, |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID) |
|
|
|
|
|
|
|
val expectedResult = createNotifiableMessageEvent(body = "Hello world") |
|
|
|
|
|
|
|
assertThat(result).isEqualTo(expectedResult) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
fun `resolve event message audio`() = runTest { |
|
|
|
fun `resolve event message audio`() = runTest { |
|
|
|
val sut = createNotifiableEventResolver( |
|
|
|
val sut = createNotifiableEventResolver( |
|
|
@ -430,6 +498,7 @@ class NotifiableEventResolverTest { |
|
|
|
private fun createNotificationData( |
|
|
|
private fun createNotificationData( |
|
|
|
content: NotificationContent, |
|
|
|
content: NotificationContent, |
|
|
|
isDirect: Boolean = false, |
|
|
|
isDirect: Boolean = false, |
|
|
|
|
|
|
|
hasMention: Boolean = false, |
|
|
|
): NotificationData { |
|
|
|
): NotificationData { |
|
|
|
return NotificationData( |
|
|
|
return NotificationData( |
|
|
|
eventId = AN_EVENT_ID, |
|
|
|
eventId = AN_EVENT_ID, |
|
|
@ -444,7 +513,7 @@ class NotifiableEventResolverTest { |
|
|
|
timestamp = A_TIMESTAMP, |
|
|
|
timestamp = A_TIMESTAMP, |
|
|
|
content = content, |
|
|
|
content = content, |
|
|
|
contentUrl = null, |
|
|
|
contentUrl = null, |
|
|
|
hasMention = false, |
|
|
|
hasMention = hasMention, |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|