@@ -35,6 +35,7 @@ import io.getstream.chat.android.client.api2.model.dto.UpstreamReactionDto
3535import io.getstream.chat.android.client.api2.model.dto.UpstreamUserDto
3636import io.getstream.chat.android.client.test.randomConnectedEvent
3737import io.getstream.chat.android.models.MessageTransformer
38+ import io.getstream.chat.android.models.MessageType
3839import io.getstream.chat.android.models.NoOpMessageTransformer
3940import io.getstream.chat.android.models.NoOpUserTransformer
4041import io.getstream.chat.android.models.UserTransformer
@@ -49,6 +50,9 @@ import io.getstream.chat.android.randomReaction
4950import io.getstream.chat.android.randomUser
5051import org.amshove.kluent.shouldBeEqualTo
5152import org.junit.jupiter.api.Test
53+ import org.junit.jupiter.params.ParameterizedTest
54+ import org.junit.jupiter.params.provider.Arguments
55+ import org.junit.jupiter.params.provider.MethodSource
5256import org.mockito.kotlin.spy
5357import org.mockito.kotlin.times
5458import org.mockito.kotlin.verify
@@ -167,7 +171,7 @@ internal class DtoMappingTest {
167171 @Test
168172 fun `Message is correctly mapped to Dto` () {
169173 val messageTransformer = spy(NoOpMessageTransformer )
170- val message = randomMessage()
174+ val message = randomMessage(type = MessageType . REGULAR )
171175 val mapping = Fixture ()
172176 .withMessageTransformer(messageTransformer)
173177 .get()
@@ -201,6 +205,17 @@ internal class DtoMappingTest {
201205 verify(messageTransformer, times(1 )).transform(message)
202206 }
203207
208+ @ParameterizedTest
209+ @MethodSource(" messageTypeCoercionInput" )
210+ fun `Message toDto coerces type to allowed upstream values` (inputType : String , expectedType : String ) {
211+ val message = randomMessage(type = inputType)
212+ val mapping = Fixture ().get()
213+
214+ val dto = with (mapping) { message.toDto() }
215+
216+ dto.type shouldBeEqualTo expectedType
217+ }
218+
204219 @Test
205220 fun `Mute is correctly mapped to Dto` () {
206221 val mute = randomMute()
@@ -311,6 +326,20 @@ internal class DtoMappingTest {
311326 dto shouldBeEqualTo expected
312327 }
313328
329+ companion object {
330+ @JvmStatic
331+ fun messageTypeCoercionInput (): List <Arguments > = listOf (
332+ Arguments .of(MessageType .REGULAR , MessageType .REGULAR ),
333+ Arguments .of(MessageType .SYSTEM , MessageType .SYSTEM ),
334+ Arguments .of(MessageType .REPLY , " " ),
335+ Arguments .of(MessageType .EPHEMERAL , " " ),
336+ Arguments .of(MessageType .ERROR , " " ),
337+ Arguments .of(MessageType .FAILED , " " ),
338+ Arguments .of(" some-unknown-type" , " " ),
339+ Arguments .of(" " , " " ),
340+ )
341+ }
342+
314343 internal class Fixture {
315344
316345 private var messageTransformer: MessageTransformer = NoOpMessageTransformer
0 commit comments