Rename and add dto's
This commit is contained in:
parent
723e5a4178
commit
b33082e1fe
|
|
@ -6,7 +6,7 @@ import org.springframework.stereotype.Component
|
|||
import ru.touchin.push.message.provider.dto.request.PushTokenCheck
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenMessage
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushResult
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageResult
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageTraceableResult
|
||||
import ru.touchin.push.message.provider.enums.PushTokenStatus
|
||||
import ru.touchin.push.message.provider.exceptions.InvalidPushTokenException
|
||||
import ru.touchin.push.message.provider.exceptions.PushMessageProviderException
|
||||
|
|
@ -32,7 +32,7 @@ class FcmClient(
|
|||
fun check(request: PushTokenCheck): PushTokenStatus {
|
||||
val validationRequest = PushTokenMessage(
|
||||
token = request.pushToken,
|
||||
notification = null,
|
||||
pushMessageNotification = null,
|
||||
data = emptyMap()
|
||||
)
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ class FcmClient(
|
|||
return try {
|
||||
val messageId = firebaseMessaging.send(message, dryRun)
|
||||
|
||||
SendPushTokenMessageResult(messageId)
|
||||
SendPushTokenMessageTraceableResult(messageId)
|
||||
} catch (e: FirebaseMessagingException) {
|
||||
throw firebaseMessagingExceptionConverter(e)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
package ru.touchin.push.message.provider.fcm.converters
|
||||
|
||||
import com.google.firebase.messaging.Notification as FcmNotification
|
||||
import org.springframework.stereotype.Component
|
||||
import ru.touchin.push.message.provider.dto.Notification
|
||||
|
||||
@Component
|
||||
class NotificationConverter {
|
||||
|
||||
operator fun invoke(notification: Notification): FcmNotification {
|
||||
return FcmNotification.builder()
|
||||
.setTitle(notification.title)
|
||||
.setBody(notification.description)
|
||||
.setImage(notification.imageUrl)
|
||||
.build()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package ru.touchin.push.message.provider.fcm.converters
|
||||
|
||||
import com.google.firebase.messaging.Notification as FcmNotification
|
||||
import org.springframework.stereotype.Component
|
||||
import ru.touchin.push.message.provider.dto.PushMessageNotification
|
||||
|
||||
@Component
|
||||
class PushMessageNotificationConverter {
|
||||
|
||||
operator fun invoke(pushMessageNotification: PushMessageNotification): FcmNotification {
|
||||
return FcmNotification.builder()
|
||||
.setTitle(pushMessageNotification.title)
|
||||
.setBody(pushMessageNotification.description)
|
||||
.setImage(pushMessageNotification.imageUrl)
|
||||
.build()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -6,12 +6,12 @@ import com.google.firebase.messaging.ApnsConfig
|
|||
import com.google.firebase.messaging.Aps
|
||||
import com.google.firebase.messaging.Message
|
||||
import org.springframework.stereotype.Component
|
||||
import ru.touchin.push.message.provider.dto.Notification
|
||||
import ru.touchin.push.message.provider.dto.PushMessageNotification
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenMessage
|
||||
|
||||
@Component
|
||||
class PushTokenMessageConverter(
|
||||
private val notificationConverter: NotificationConverter
|
||||
private val pushMessageNotificationConverter: PushMessageNotificationConverter
|
||||
) {
|
||||
|
||||
private companion object {
|
||||
|
|
@ -26,14 +26,14 @@ class PushTokenMessageConverter(
|
|||
.setToken(request.token)
|
||||
.setupApns()
|
||||
.setupAndroid()
|
||||
.setIfExists(request.notification)
|
||||
.setIfExists(request.pushMessageNotification)
|
||||
.putAllData(request.data)
|
||||
.build()
|
||||
}
|
||||
|
||||
private fun Message.Builder.setIfExists(notification: Notification?): Message.Builder {
|
||||
return if (notification != null) {
|
||||
setNotification(notificationConverter(notification))
|
||||
private fun Message.Builder.setIfExists(pushMessageNotification: PushMessageNotification?): Message.Builder {
|
||||
return if (pushMessageNotification != null) {
|
||||
setNotification(pushMessageNotificationConverter(pushMessageNotification))
|
||||
} else {
|
||||
this
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,15 +5,15 @@ import org.junit.Assert
|
|||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import ru.touchin.push.message.provider.dto.Notification
|
||||
import ru.touchin.push.message.provider.dto.PushMessageNotification
|
||||
import com.google.firebase.messaging.Notification as FcmNotification
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
|
||||
@SpringBootTest
|
||||
class NotificationConverterTest {
|
||||
class PushMessageNotificationConverterTest {
|
||||
|
||||
@Autowired
|
||||
lateinit var notificationConverter: NotificationConverter
|
||||
lateinit var pushMessageNotificationConverter: PushMessageNotificationConverter
|
||||
|
||||
@Autowired
|
||||
lateinit var objectMapper: ObjectMapper
|
||||
|
|
@ -21,19 +21,19 @@ class NotificationConverterTest {
|
|||
@Test
|
||||
@DisplayName("Конвертация уведомления происходит корректно")
|
||||
fun invoke_basic() {
|
||||
val notification = Notification(
|
||||
val pushMessageNotification = PushMessageNotification(
|
||||
title = "title",
|
||||
description = "description",
|
||||
imageUrl = "imageUrl"
|
||||
)
|
||||
|
||||
val realResult = notificationConverter(notification)
|
||||
val realResult = pushMessageNotificationConverter(pushMessageNotification)
|
||||
val realResultJson = objectMapper.writeValueAsString(realResult)
|
||||
|
||||
val expectedResult = FcmNotification.builder()
|
||||
.setTitle(notification.title)
|
||||
.setBody(notification.description)
|
||||
.setImage(notification.imageUrl)
|
||||
.setTitle(pushMessageNotification.title)
|
||||
.setBody(pushMessageNotification.description)
|
||||
.setImage(pushMessageNotification.imageUrl)
|
||||
.build()
|
||||
|
||||
val expectedResultJson = objectMapper.writeValueAsString(expectedResult)
|
||||
|
|
@ -11,7 +11,7 @@ import org.junit.jupiter.api.DisplayName
|
|||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import ru.touchin.push.message.provider.dto.Notification
|
||||
import ru.touchin.push.message.provider.dto.PushMessageNotification
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenMessage
|
||||
|
||||
@SpringBootTest
|
||||
|
|
@ -21,7 +21,7 @@ class PushTokenMessageConverterTest {
|
|||
lateinit var pushTokenMessageConverter: PushTokenMessageConverter
|
||||
|
||||
@Autowired
|
||||
lateinit var notificationConverter: NotificationConverter
|
||||
lateinit var pushMessageNotificationConverter: PushMessageNotificationConverter
|
||||
|
||||
@Autowired
|
||||
lateinit var objectMapper: ObjectMapper
|
||||
|
|
@ -29,14 +29,14 @@ class PushTokenMessageConverterTest {
|
|||
@Test
|
||||
@DisplayName("Конвертация сообщения с уведомлением происходит корректно")
|
||||
fun invoke_withNotification() {
|
||||
val notification = Notification(
|
||||
val pushMessageNotification = PushMessageNotification(
|
||||
title = "title",
|
||||
description = "description",
|
||||
imageUrl = "imageUrl"
|
||||
)
|
||||
val pushTokenMessage = PushTokenMessage(
|
||||
token = "token",
|
||||
notification = notification,
|
||||
pushMessageNotification = pushMessageNotification,
|
||||
data = mapOf("testKey" to "testvalue")
|
||||
)
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ class PushTokenMessageConverterTest {
|
|||
|
||||
val expectedResult = Message.builder()
|
||||
.setToken(pushTokenMessage.token)
|
||||
.setNotification(notificationConverter(notification))
|
||||
.setNotification(pushMessageNotificationConverter(pushMessageNotification))
|
||||
.putAllData(pushTokenMessage.data)
|
||||
.setupApns()
|
||||
.setupAndroid()
|
||||
|
|
@ -65,7 +65,7 @@ class PushTokenMessageConverterTest {
|
|||
fun invoke_withoutNotification() {
|
||||
val pushTokenMessage = PushTokenMessage(
|
||||
token = "token",
|
||||
notification = null,
|
||||
pushMessageNotification = null,
|
||||
data = mapOf("testKey" to "testvalue")
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import org.springframework.boot.test.mock.mockito.MockBean
|
|||
import ru.touchin.push.message.provider.dto.request.PushTokenCheck
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenMessage
|
||||
import ru.touchin.push.message.provider.dto.result.CheckPushTokenResult
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageResult
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageTraceableResult
|
||||
import ru.touchin.push.message.provider.enums.PushTokenStatus
|
||||
import ru.touchin.push.message.provider.fcm.clients.FcmClient
|
||||
import ru.touchin.push.message.provider.services.PushMessageProviderService
|
||||
|
|
@ -29,11 +29,11 @@ class PushMessageProviderFcmServiceTest {
|
|||
fun send_basic() {
|
||||
val request = PushTokenMessage(
|
||||
token = "testToken",
|
||||
notification = null,
|
||||
pushMessageNotification = null,
|
||||
data = emptyMap()
|
||||
)
|
||||
|
||||
val expectedResult = SendPushTokenMessageResult("testMessageId")
|
||||
val expectedResult = SendPushTokenMessageTraceableResult("testMessageId")
|
||||
|
||||
Mockito.`when`(
|
||||
fcmClient.sendPushTokenMessage(request)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package ru.touchin.push.message.provider.dto
|
||||
|
||||
class Notification(
|
||||
class PushMessageNotification(
|
||||
val title: String?,
|
||||
val description: String?,
|
||||
val imageUrl: String?
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package ru.touchin.push.message.provider.dto.request
|
||||
|
||||
import ru.touchin.push.message.provider.dto.Notification
|
||||
import ru.touchin.push.message.provider.dto.PushMessageNotification
|
||||
|
||||
class PushTokenMessage(
|
||||
val token: String,
|
||||
override val notification: Notification?,
|
||||
override val pushMessageNotification: PushMessageNotification?,
|
||||
override val data: Map<String, String>
|
||||
) : SendPushRequest
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
package ru.touchin.push.message.provider.dto.request
|
||||
|
||||
import ru.touchin.push.message.provider.dto.Notification
|
||||
import ru.touchin.push.message.provider.dto.PushMessageNotification
|
||||
|
||||
sealed interface SendPushRequest {
|
||||
|
||||
val notification: Notification?
|
||||
val pushMessageNotification: PushMessageNotification?
|
||||
val data: Map<String, String>
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,5 +3,5 @@ package ru.touchin.push.message.provider.dto.result
|
|||
import ru.touchin.push.message.provider.enums.PushTokenStatus
|
||||
|
||||
data class CheckPushTokenResult(
|
||||
val status: PushTokenStatus
|
||||
val status: PushTokenStatus,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
package ru.touchin.push.message.provider.dto.result
|
||||
|
||||
class SendPushTokenMessageResult(
|
||||
val messageId: String
|
||||
) : SendPushResult
|
||||
object SendPushTokenMessageResult : SendPushResult
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
package ru.touchin.push.message.provider.dto.result
|
||||
|
||||
data class SendPushTokenMessageTraceableResult(
|
||||
val messageId: String
|
||||
) : SendPushResult
|
||||
Loading…
Reference in New Issue