mirror of
https://github.com/Dannecron/spring-boot-demo.git
synced 2025-12-25 16:22:35 +03:00
ad tests
This commit is contained in:
@@ -0,0 +1,60 @@
|
|||||||
|
package com.example.demo.services.kafka
|
||||||
|
|
||||||
|
import com.example.demo.models.Product
|
||||||
|
import com.example.demo.services.kafka.dto.ProductDto
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.mockito.kotlin.argumentCaptor
|
||||||
|
import org.mockito.kotlin.doReturn
|
||||||
|
import org.mockito.kotlin.whenever
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean
|
||||||
|
import org.springframework.kafka.core.KafkaTemplate
|
||||||
|
import org.springframework.kafka.support.KafkaHeaders
|
||||||
|
import org.springframework.kafka.support.SendResult
|
||||||
|
import org.springframework.messaging.Message
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner
|
||||||
|
import java.time.OffsetDateTime
|
||||||
|
import java.util.*
|
||||||
|
import java.util.concurrent.CompletableFuture
|
||||||
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
@RunWith(SpringRunner::class)
|
||||||
|
@SpringBootTest
|
||||||
|
class ProducerImplTest {
|
||||||
|
@Autowired
|
||||||
|
private lateinit var producerImpl: ProducerImpl
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private lateinit var kafkaTemplate: KafkaTemplate<String, Any>
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun produceProductInfo_success() {
|
||||||
|
val topic = "some-topic"
|
||||||
|
val product = Product(
|
||||||
|
id = 123,
|
||||||
|
guid = UUID.randomUUID(),
|
||||||
|
name = "name",
|
||||||
|
description = null,
|
||||||
|
price = 10050,
|
||||||
|
createdAt = OffsetDateTime.now().minusDays(2),
|
||||||
|
updatedAt = OffsetDateTime.now().minusHours(1),
|
||||||
|
deletedAt = OffsetDateTime.now(),
|
||||||
|
)
|
||||||
|
|
||||||
|
val captor = argumentCaptor<Message<ProductDto>>()
|
||||||
|
|
||||||
|
whenever(kafkaTemplate.send(captor.capture()))
|
||||||
|
.doReturn(CompletableFuture<SendResult<String, Any>>())
|
||||||
|
|
||||||
|
producerImpl.produceProductInfo(topic, product)
|
||||||
|
|
||||||
|
assertEquals(1, captor.allValues.count())
|
||||||
|
val actualArgument = captor.firstValue
|
||||||
|
assertEquals(product.id, actualArgument.payload.id)
|
||||||
|
assertEquals(product.guid.toString(), actualArgument.payload.guid)
|
||||||
|
assertEquals(topic, actualArgument.headers[KafkaHeaders.TOPIC])
|
||||||
|
assertEquals("some-custom-header", actualArgument.headers["X-Custom-Header"])
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user