Rename and add dto's

This commit is contained in:
Korna 2022-11-02 16:08:26 +03:00
parent 723e5a4178
commit b33082e1fe
13 changed files with 56 additions and 53 deletions

View File

@ -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)
}

View File

@ -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()
}
}

View File

@ -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()
}
}

View File

@ -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
}

View File

@ -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)

View File

@ -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")
)

View File

@ -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)

View File

@ -1,6 +1,6 @@
package ru.touchin.push.message.provider.dto
class Notification(
class PushMessageNotification(
val title: String?,
val description: String?,
val imageUrl: String?

View File

@ -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

View File

@ -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>
}

View File

@ -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,
)

View File

@ -1,5 +1,3 @@
package ru.touchin.push.message.provider.dto.result
class SendPushTokenMessageResult(
val messageId: String
) : SendPushResult
object SendPushTokenMessageResult : SendPushResult

View File

@ -0,0 +1,5 @@
package ru.touchin.push.message.provider.dto.result
data class SendPushTokenMessageTraceableResult(
val messageId: String
) : SendPushResult