Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
BlenoClaus authored and blenohclaus committed Jul 12, 2024
1 parent adae578 commit baea96e
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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())
}
}
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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,
)
3 changes: 2 additions & 1 deletion src/test/kotlin/com/fiap/order/TestFixtures.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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.*
Expand Down Expand Up @@ -187,5 +188,5 @@ fun createPendingOrderResponse(
paymentResponse: PaymentResponse = createPaymentResponse(orderNumber = 1)
) = PendingOrderResponse(
order = order,
payment = paymentResponse,
payment = paymentResponse.toDomain(),
)
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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) }
}
}

0 comments on commit baea96e

Please sign in to comment.