1
0
mirror of https://github.com/pcvolkmer/etl-processor.git synced 2025-04-19 17:26:51 +00:00

refactor: use RequestService in ResponseProcessor

This commit is contained in:
Paul-Christian Volkmer 2024-05-02 10:12:40 +02:00
parent 40b2558943
commit ae5d8341cc
2 changed files with 13 additions and 15 deletions

View File

@ -20,7 +20,6 @@
package dev.dnpm.etl.processor.services
import dev.dnpm.etl.processor.monitoring.Report
import dev.dnpm.etl.processor.monitoring.RequestRepository
import dev.dnpm.etl.processor.monitoring.RequestStatus
import org.slf4j.LoggerFactory
import org.springframework.context.event.EventListener
@ -31,7 +30,7 @@ import java.util.*
@Service
class ResponseProcessor(
private val requestRepository: RequestRepository,
private val requestService: RequestService,
private val statisticsUpdateProducer: Sinks.Many<Any>
) {
@ -39,7 +38,7 @@ class ResponseProcessor(
@EventListener(classes = [ResponseEvent::class])
fun handleResponseEvent(event: ResponseEvent) {
requestRepository.findByUuidEquals(event.requestUuid).ifPresentOrElse({
requestService.findByUuid(event.requestUuid).ifPresentOrElse({
it.processedAt = event.timestamp
it.status = event.status
@ -76,7 +75,7 @@ class ResponseProcessor(
}
}
requestRepository.save(it)
requestService.save(it)
statisticsUpdateProducer.emitNext("", Sinks.EmitFailureHandler.FAIL_FAST)
}, {

View File

@ -21,7 +21,6 @@ package dev.dnpm.etl.processor.services
import dev.dnpm.etl.processor.Fingerprint
import dev.dnpm.etl.processor.monitoring.Request
import dev.dnpm.etl.processor.monitoring.RequestRepository
import dev.dnpm.etl.processor.monitoring.RequestStatus
import dev.dnpm.etl.processor.monitoring.RequestType
import org.assertj.core.api.Assertions.assertThat
@ -41,7 +40,7 @@ import java.util.*
@ExtendWith(MockitoExtension::class)
class ResponseProcessorTest {
private lateinit var requestRepository: RequestRepository
private lateinit var requestService: RequestService
private lateinit var statisticsUpdateProducer: Sinks.Many<Any>
private lateinit var responseProcessor: ResponseProcessor
@ -58,20 +57,20 @@ class ResponseProcessorTest {
@BeforeEach
fun setup(
@Mock requestRepository: RequestRepository,
@Mock requestService: RequestService,
@Mock statisticsUpdateProducer: Sinks.Many<Any>
) {
this.requestRepository = requestRepository
this.requestService = requestService
this.statisticsUpdateProducer = statisticsUpdateProducer
this.responseProcessor = ResponseProcessor(requestRepository, statisticsUpdateProducer)
this.responseProcessor = ResponseProcessor(requestService, statisticsUpdateProducer)
}
@Test
fun shouldNotSaveStatusForUnknownRequest() {
doAnswer {
Optional.empty<Request>()
}.whenever(requestRepository).findByUuidEquals(anyString())
}.whenever(requestService).findByUuid(anyString())
val event = ResponseEvent(
"TestID1234",
@ -81,14 +80,14 @@ class ResponseProcessorTest {
this.responseProcessor.handleResponseEvent(event)
verify(requestRepository, never()).save(any())
verify(requestService, never()).save(any())
}
@Test
fun shouldNotSaveStatusWithUnknownState() {
doAnswer {
Optional.of(testRequest)
}.whenever(requestRepository).findByUuidEquals(anyString())
}.whenever(requestService).findByUuid(anyString())
val event = ResponseEvent(
"TestID1234",
@ -98,7 +97,7 @@ class ResponseProcessorTest {
this.responseProcessor.handleResponseEvent(event)
verify(requestRepository, never()).save(any())
verify(requestService, never()).save(any())
}
@ParameterizedTest
@ -106,7 +105,7 @@ class ResponseProcessorTest {
fun shouldSaveStatusForKnownRequest(requestStatus: RequestStatus) {
doAnswer {
Optional.of(testRequest)
}.whenever(requestRepository).findByUuidEquals(anyString())
}.whenever(requestService).findByUuid(anyString())
val event = ResponseEvent(
"TestID1234",
@ -117,7 +116,7 @@ class ResponseProcessorTest {
this.responseProcessor.handleResponseEvent(event)
val captor = argumentCaptor<Request>()
verify(requestRepository, times(1)).save(captor.capture())
verify(requestService, times(1)).save(captor.capture())
assertThat(captor.firstValue).isNotNull
assertThat(captor.firstValue.status).isEqualTo(requestStatus)
}