Skip to content

Commit

Permalink
Legg til tester
Browse files Browse the repository at this point in the history
  • Loading branch information
halvorbmundal committed Jan 22, 2024
1 parent 5a5c604 commit 282ecc8
Showing 1 changed file with 207 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
package no.nav.familie.oppdrag.grensesnittavstemming

import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.spi.ILoggingEvent
import ch.qos.logback.core.read.ListAppender
import io.mockk.every
import io.mockk.mockk
import java.time.LocalDateTime
import java.util.*
import no.nav.familie.kontrakter.felles.oppdrag.GrensesnittavstemmingRequest
import no.nav.familie.oppdrag.avstemming.AvstemmingSender
import no.nav.familie.oppdrag.iverksetting.OppdragMapper
import no.nav.familie.oppdrag.repository.OppdragLager
import no.nav.familie.oppdrag.repository.OppdragLagerRepository
import no.nav.familie.oppdrag.repository.TidligereKjørtGrensesnittavstemming
import no.nav.familie.oppdrag.repository.TidligereKjørteGrensesnittavstemmingerRepository
import no.nav.familie.oppdrag.service.GrensesnittavstemmingService
import no.nav.familie.oppdrag.util.Containers
import no.nav.familie.oppdrag.util.TestConfig
import no.nav.familie.oppdrag.util.TestOppdragMedAvstemmingsdato
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.jdbc.core.JdbcTemplate
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.context.ContextConfiguration
import org.testcontainers.junit.jupiter.Container
import org.testcontainers.junit.jupiter.Testcontainers


@ActiveProfiles("dev")
@ContextConfiguration(initializers = arrayOf(Containers.PostgresSQLInitializer::class))
@SpringBootTest(classes = [TestConfig::class], properties = ["spring.cloud.vault.enabled=false"])
@Testcontainers
class GrensesnittavstemmingIdTest(
@Autowired
val tidligereKjørteGrensesnittavstemmingerRepository: TidligereKjørteGrensesnittavstemmingerRepository,
@Autowired
val jdbcTemplate: JdbcTemplate,
@Autowired
val oppdragLagerRepository: OppdragLagerRepository,
@Autowired val oppdragMapper: OppdragMapper,
) {

val avstemmingSender: AvstemmingSender = mockk()


val grensesnittavstemmingService = GrensesnittavstemmingService(
avstemmingSender = avstemmingSender,
oppdragLagerRepository = oppdragLagerRepository,
tidligereKjørteGrensesnittavstemmingerRepository = tidligereKjørteGrensesnittavstemmingerRepository,
antall = 2
)

companion object {
protected fun initLoggingEventListAppender(): ListAppender<ILoggingEvent> {
val listAppender = ListAppender<ILoggingEvent>()
listAppender.start()
return listAppender
}


@Container
var postgreSQLContainer = Containers.postgreSQLContainer
}

private val listAppender = initLoggingEventListAppender()

@BeforeEach
fun setUp() {
jdbcTemplate.execute("TRUNCATE TABLE tidligere_kjoerte_grensesnittavstemminger")
}

@Test
fun `Skal kunne lagre avstemming Id`() {
val uuid = UUID.randomUUID()
tidligereKjørteGrensesnittavstemmingerRepository.insert(TidligereKjørtGrensesnittavstemming(uuid))

val lagretKjørtGrensesnittavstemming = tidligereKjørteGrensesnittavstemmingerRepository.findById(uuid)
Assertions.assertNotNull(lagretKjørtGrensesnittavstemming)
}

@Test
fun `Skal ikke kjøre grensesnittavstemming dersom det allerede er kjørt på samme avstemmingId`() {
val logger: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java) as Logger
logger.addAppender(listAppender)

opprettUtbetalingsoppdrag()
every { avstemmingSender.sendGrensesnittAvstemming(any()) } returns Unit

val avstemmingId = UUID.randomUUID()
grensesnittavstemmingService.utførGrensesnittavstemming(
GrensesnittavstemmingRequest(
fagsystem = "BA",
fra = LocalDateTime.now().minusDays(2),
til = LocalDateTime.now(),
avstemmingId = avstemmingId
)
)

grensesnittavstemmingService.utførGrensesnittavstemming(
GrensesnittavstemmingRequest(
fagsystem = "BA",
fra = LocalDateTime.now().minusDays(2),
til = LocalDateTime.now(),
avstemmingId = avstemmingId
)
)

val fullførtMeldinger = listAppender.list.filter { "Fullført grensesnittavstemming" in it.message }
Assertions.assertEquals(1, fullførtMeldinger.size)
}

@Test
fun `Skal være mulig å kjøre grensesnittavstemming selv om avstemmingId er null`() {
val logger: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java) as Logger
logger.addAppender(listAppender)

opprettUtbetalingsoppdrag()
every { avstemmingSender.sendGrensesnittAvstemming(any()) } returns Unit

grensesnittavstemmingService.utførGrensesnittavstemming(
GrensesnittavstemmingRequest(
fagsystem = "BA",
fra = LocalDateTime.now().minusDays(2),
til = LocalDateTime.now(),
avstemmingId = null
)
)

val fullførtMeldinger = listAppender.list.filter { "Fullført grensesnittavstemming" in it.message }
Assertions.assertEquals(1, fullførtMeldinger.size)
}

@Test
fun `Skal være mulig å kjøre grensesnittavstemming flere ganger når ikke avstemmingId er satt`() {
val logger: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java) as Logger
logger.addAppender(listAppender)

opprettUtbetalingsoppdrag()
every { avstemmingSender.sendGrensesnittAvstemming(any()) } returns Unit

grensesnittavstemmingService.utførGrensesnittavstemming(
GrensesnittavstemmingRequest(
fagsystem = "BA",
fra = LocalDateTime.now().minusDays(2),
til = LocalDateTime.now(),
avstemmingId = null
)
)

grensesnittavstemmingService.utførGrensesnittavstemming(
GrensesnittavstemmingRequest(
fagsystem = "BA",
fra = LocalDateTime.now().minusDays(2),
til = LocalDateTime.now(),
avstemmingId = null
)
)

val fullførtMeldinger = listAppender.list.filter { "Fullført grensesnittavstemming" in it.message }
Assertions.assertEquals(2, fullførtMeldinger.size)
}

@Test
fun `Skal være mulig å kjøre grensesnittavstemming flere ganger når om man bruker forskjellig avstemmingId`() {
val logger: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java) as Logger
logger.addAppender(listAppender)

opprettUtbetalingsoppdrag()
every { avstemmingSender.sendGrensesnittAvstemming(any()) } returns Unit

grensesnittavstemmingService.utførGrensesnittavstemming(
GrensesnittavstemmingRequest(
fagsystem = "BA",
fra = LocalDateTime.now().minusDays(2),
til = LocalDateTime.now(),
avstemmingId = UUID.randomUUID()
)
)

grensesnittavstemmingService.utførGrensesnittavstemming(
GrensesnittavstemmingRequest(
fagsystem = "BA",
fra = LocalDateTime.now().minusDays(2),
til = LocalDateTime.now(),
avstemmingId = UUID.randomUUID()
)
)

val fullførtMeldinger = listAppender.list.filter { "Fullført grensesnittavstemming" in it.message }
Assertions.assertEquals(2, fullførtMeldinger.size)
}

private fun opprettUtbetalingsoppdrag() {
val utbetalingsoppdrag = TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag(
LocalDateTime.now().minusDays(1),
"BA",
utbetalingsperiode = arrayOf(TestOppdragMedAvstemmingsdato.lagUtbetalingsperiode())
)
val oppdrag = oppdragMapper.tilOppdrag(oppdragMapper.tilOppdrag110(utbetalingsoppdrag))
oppdragLagerRepository.opprettOppdrag(OppdragLager.lagFraOppdrag(utbetalingsoppdrag, oppdrag), 0)
}
}

0 comments on commit 282ecc8

Please sign in to comment.