From baea96e6a60c02c893c376095db2575f19e03822 Mon Sep 17 00:00:00 2001 From: Bleno Claus Date: Fri, 12 Jul 2024 20:33:05 -0300 Subject: [PATCH] fix tests --- .../order/adapter/gateway/PaymentGateway.kt | 2 -- .../gateway/impl/PaymentGatewayImpl.kt | 21 ------------------- .../messaging/consumer/OrderConsumer.kt | 12 +++++------ .../driver/web/response/PaymentResponse.kt | 13 ++++++++++++ .../kotlin/com/fiap/order/TestFixtures.kt | 3 ++- .../gateway/impl/PaymentGatewayImplTest.kt | 9 ++++---- .../usecases/services/OrderServiceTest.kt | 2 +- .../usecases/services/PaymentServiceTest.kt | 15 +++++-------- 8 files changed, 31 insertions(+), 46 deletions(-) diff --git a/src/main/kotlin/com/fiap/order/adapter/gateway/PaymentGateway.kt b/src/main/kotlin/com/fiap/order/adapter/gateway/PaymentGateway.kt index fcba729..fc2f647 100644 --- a/src/main/kotlin/com/fiap/order/adapter/gateway/PaymentGateway.kt +++ b/src/main/kotlin/com/fiap/order/adapter/gateway/PaymentGateway.kt @@ -6,7 +6,5 @@ import com.fiap.order.driver.web.response.PaymentResponse interface PaymentGateway { fun findByPaymentId(paymentId: String): PaymentResponse? - fun requestPayment(order: Order): PaymentResponse - fun notifyRequestPayment(order: Order) } diff --git a/src/main/kotlin/com/fiap/order/adapter/gateway/impl/PaymentGatewayImpl.kt b/src/main/kotlin/com/fiap/order/adapter/gateway/impl/PaymentGatewayImpl.kt index 7c99c6b..4521694 100644 --- a/src/main/kotlin/com/fiap/order/adapter/gateway/impl/PaymentGatewayImpl.kt +++ b/src/main/kotlin/com/fiap/order/adapter/gateway/impl/PaymentGatewayImpl.kt @@ -18,27 +18,6 @@ class PaymentGatewayImpl( return paymentsApiClient.getByPaymentId(paymentId) } - override fun requestPayment(order: Order): PaymentResponse { - val paymentHTTPRequest = PaymentRequest( - orderInfo = PaymentOrderInfo( - number = order.number!!, - orderedAt = order.orderedAt, - orderedBy = order.customer?.name ?: ANONYMOUS, - total = order.total, - lines = order.lines.map { orderLine -> - PaymentOrderInfoLine( - name = orderLine.name, - quantity = orderLine.quantity, - unitPrice = orderLine.unitPrice, - total = orderLine.total - ) - } - ) - ) - - return paymentsApiClient.create(paymentHTTPRequest) - } - override fun notifyRequestPayment(order: Order) { paymentSender.requestPayment( paymentRequest = PaymentRequest( diff --git a/src/main/kotlin/com/fiap/order/driver/messaging/consumer/OrderConsumer.kt b/src/main/kotlin/com/fiap/order/driver/messaging/consumer/OrderConsumer.kt index b16a943..56e7dfa 100644 --- a/src/main/kotlin/com/fiap/order/driver/messaging/consumer/OrderConsumer.kt +++ b/src/main/kotlin/com/fiap/order/driver/messaging/consumer/OrderConsumer.kt @@ -3,8 +3,8 @@ package com.fiap.order.driver.messaging.consumer import com.fiap.order.domain.valueobjects.PaymentStatus import com.fiap.order.driver.messaging.event.PaymentEvent import com.fiap.order.driver.messaging.event.toDomain +import com.fiap.order.usecases.ChangeOrderStatusUseCase import com.fiap.order.usecases.CreateOrderUseCase -import com.fiap.order.usecases.services.OrderService import io.awspring.cloud.sqs.annotation.SqsListener import org.slf4j.LoggerFactory import org.springframework.messaging.MessageHeaders @@ -14,19 +14,19 @@ import org.springframework.stereotype.Component @Component class OrderConsumer( private val createOrderUseCase: CreateOrderUseCase, -) { + private val changeOrderStatusUseCase: ChangeOrderStatusUseCase, ) { private val log = LoggerFactory.getLogger(javaClass) @SqsListener("\${sqs.queues.request-payment-response}") fun onMessage(message: PaymentEvent, @Headers headers: MessageHeaders) { + log.info("Event from payment response received $message") when (message.status) { PaymentStatus.PENDING -> createOrderUseCase.acceptPending(message.toDomain()) - PaymentStatus.EXPIRED -> TODO() - PaymentStatus.FAILED -> TODO() - PaymentStatus.CONFIRMED -> TODO() + PaymentStatus.EXPIRED, + PaymentStatus.FAILED -> changeOrderStatusUseCase.cancelOrder(message.orderNumber) + PaymentStatus.CONFIRMED -> changeOrderStatusUseCase.confirmOrder(message.orderNumber) } - log.info(message.toString()) } } \ No newline at end of file diff --git a/src/main/kotlin/com/fiap/order/driver/web/response/PaymentResponse.kt b/src/main/kotlin/com/fiap/order/driver/web/response/PaymentResponse.kt index be7f635..fe9cafd 100644 --- a/src/main/kotlin/com/fiap/order/driver/web/response/PaymentResponse.kt +++ b/src/main/kotlin/com/fiap/order/driver/web/response/PaymentResponse.kt @@ -1,5 +1,6 @@ package com.fiap.order.driver.web.response +import com.fiap.order.domain.entities.Payment import com.fiap.order.domain.valueobjects.PaymentStatus import java.time.LocalDateTime @@ -13,3 +14,15 @@ data class PaymentResponse( val status: PaymentStatus, val statusChangedAt: LocalDateTime, ) + + +fun PaymentResponse.toDomain() = Payment( + id = id, + orderNumber = orderNumber, + externalOrderId = externalOrderId, + externalOrderGlobalId = externalOrderGlobalId, + paymentInfo = paymentInfo, + createdAt = createdAt, + status = status, + statusChangedAt = statusChangedAt, +) \ No newline at end of file diff --git a/src/test/kotlin/com/fiap/order/TestFixtures.kt b/src/test/kotlin/com/fiap/order/TestFixtures.kt index 53ae2f0..57a7eba 100644 --- a/src/test/kotlin/com/fiap/order/TestFixtures.kt +++ b/src/test/kotlin/com/fiap/order/TestFixtures.kt @@ -16,6 +16,7 @@ import com.fiap.order.driver.web.request.OrderItemRequest import com.fiap.order.driver.web.request.OrderRequest import com.fiap.order.driver.web.response.PaymentResponse import com.fiap.order.driver.web.response.PendingOrderResponse +import com.fiap.order.driver.web.response.toDomain import java.math.BigDecimal import java.time.LocalDateTime import java.util.* @@ -187,5 +188,5 @@ fun createPendingOrderResponse( paymentResponse: PaymentResponse = createPaymentResponse(orderNumber = 1) ) = PendingOrderResponse( order = order, - payment = paymentResponse, + payment = paymentResponse.toDomain(), ) diff --git a/src/test/kotlin/com/fiap/order/adapter/gateway/impl/PaymentGatewayImplTest.kt b/src/test/kotlin/com/fiap/order/adapter/gateway/impl/PaymentGatewayImplTest.kt index 3f02d41..c1316f0 100644 --- a/src/test/kotlin/com/fiap/order/adapter/gateway/impl/PaymentGatewayImplTest.kt +++ b/src/test/kotlin/com/fiap/order/adapter/gateway/impl/PaymentGatewayImplTest.kt @@ -5,6 +5,7 @@ import com.fiap.order.adapter.messaging.sender.PaymentSender import com.fiap.order.createOrder import com.fiap.order.createPaymentResponse import io.mockk.every +import io.mockk.justRun import io.mockk.mockk import io.mockk.unmockkAll import org.assertj.core.api.Assertions.assertThat @@ -41,12 +42,10 @@ class PaymentGatewayImplTest { @Test fun `should obtain payment`() { val order = createOrder(number = 1) - val paymentResponse = createPaymentResponse(orderNumber = order.number!!) - - every { paymentsApiClient.create(any()) } returns paymentResponse + + justRun { paymentSender.requestPayment(any()) } - val result = paymentGatewayImpl.requestPayment(order) + paymentGatewayImpl.notifyRequestPayment(order) - assertThat(result).isEqualTo(paymentResponse) } } diff --git a/src/test/kotlin/com/fiap/order/usecases/services/OrderServiceTest.kt b/src/test/kotlin/com/fiap/order/usecases/services/OrderServiceTest.kt index 41b5039..5f7a10d 100644 --- a/src/test/kotlin/com/fiap/order/usecases/services/OrderServiceTest.kt +++ b/src/test/kotlin/com/fiap/order/usecases/services/OrderServiceTest.kt @@ -55,7 +55,7 @@ class OrderServiceTest { fun setUp() { every { getCustomersUseCase.getByCustomerId(any()) } returns createCustomer() every { getProductUseCase.getByProductNumbers(any()) } returns listOf(createProduct()) - every { requestPaymentUseCase.requestPayment(any()) } returns createPaymentResponse() + justRun { requestPaymentUseCase.requestPayment(any()) } } @AfterEach diff --git a/src/test/kotlin/com/fiap/order/usecases/services/PaymentServiceTest.kt b/src/test/kotlin/com/fiap/order/usecases/services/PaymentServiceTest.kt index d29005c..a506e92 100644 --- a/src/test/kotlin/com/fiap/order/usecases/services/PaymentServiceTest.kt +++ b/src/test/kotlin/com/fiap/order/usecases/services/PaymentServiceTest.kt @@ -3,10 +3,7 @@ package com.fiap.order.usecases.services import com.fiap.order.adapter.gateway.PaymentGateway import com.fiap.order.createOrder import com.fiap.order.createPaymentResponse -import io.mockk.every -import io.mockk.mockk -import io.mockk.unmockkAll -import io.mockk.verify +import io.mockk.* import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Test @@ -27,13 +24,11 @@ class PaymentServiceTest { @Test fun `should request payment`() { val order = createOrder(number = 1L) - val paymentResponse = createPaymentResponse(orderNumber = order.number!!) - - every { paymentGateway.requestPayment(order) } returns paymentResponse + + justRun { paymentGateway.notifyRequestPayment(order) } - val result = paymentService.requestPayment(order) + paymentService.requestPayment(order) - assertThat(result).isEqualTo(paymentResponse) - verify(exactly = 1) { paymentGateway.requestPayment(order) } + verify(exactly = 1) { paymentGateway.notifyRequestPayment(order) } } }