Skip to content

Commit

Permalink
Legge til enhetstest for beregning av forskudd
Browse files Browse the repository at this point in the history
  • Loading branch information
s148719 committed Nov 10, 2023
1 parent 6a2b4b9 commit 0583733
Show file tree
Hide file tree
Showing 7 changed files with 159 additions and 194 deletions.
Original file line number Diff line number Diff line change
@@ -1,166 +1,63 @@
package no.nav.bidrag.behandling.controller

import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer
import no.nav.bidrag.behandling.database.datamodell.Barnetillegg
import io.kotest.assertions.assertSoftly
import io.kotest.matchers.shouldBe
import io.kotest.matchers.shouldNotBe
import no.nav.bidrag.behandling.database.datamodell.Behandling
import no.nav.bidrag.behandling.database.datamodell.BehandlingType
import no.nav.bidrag.behandling.database.datamodell.BoStatusType
import no.nav.bidrag.behandling.database.datamodell.HusstandsBarn
import no.nav.bidrag.behandling.database.datamodell.HusstandsBarnPeriode
import no.nav.bidrag.behandling.database.datamodell.Inntekt
import no.nav.bidrag.behandling.database.datamodell.Rolle
import no.nav.bidrag.behandling.database.datamodell.Sivilstand
import no.nav.bidrag.behandling.database.datamodell.SivilstandType
import no.nav.bidrag.behandling.database.datamodell.SoknadType
import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd
import no.nav.bidrag.behandling.service.BehandlingService
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.SøktAvType
import no.nav.bidrag.behandling.database.repository.BehandlingRepository
import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons
import no.nav.bidrag.behandling.utils.oppretteBehandling
import no.nav.bidrag.behandling.utils.oppretteBehandlingRoller
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import java.math.BigDecimal
import org.springframework.http.HttpEntity
import org.springframework.http.HttpMethod
import org.springframework.http.HttpStatus
import java.util.*
import kotlin.test.Ignore

class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() {
@Autowired
lateinit var behandlingService: BehandlingService

@Autowired
lateinit var bidragBeregnForskuddConsumer: BidragBeregnForskuddConsumer

fun prepareBehandling(): Behandling {
val cal1 = Calendar.getInstance()
cal1.set(Calendar.DAY_OF_MONTH, 1)
lateinit var behandlingRepository: BehandlingRepository

val datoFom = cal1.time
@BeforeEach
fun oppsett() {
behandlingRepository.deleteAll()
}

val cal = Calendar.getInstance()
cal.add(Calendar.MONTH, 2)
val datoTom = cal.time

val b =
Behandling(
BehandlingType.FORSKUDD,
SoknadType.FASTSETTELSE,
datoFom,
datoTom,
datoFom,
"1234",
123213L,
123213L,
"ENHE",
SøktAvType.BIDRAGSMOTTAKER,
null,
null,
null,
datoFom,
null,
null,
null,
null,
null,
null,
null,
1,
)
@Test
fun `skal beregne forskudd for behandling`() {

val husstandsBarn =
HusstandsBarn(
behandling = b,
medISaken = true,
null,
"123",
null,
datoFom,
)
husstandsBarn.perioder =
mutableSetOf(
HusstandsBarnPeriode(
husstandsBarn,
datoFom,
datoTom,
BoStatusType.REGISTRERT_PA_ADRESSE,
"",
),
)
// given
var behandling = lagreBehandlingMedRoller()

b.husstandsBarn =
mutableSetOf(
husstandsBarn,
)
b.roller =
mutableSetOf(
Rolle(b, Rolletype.BIDRAGSMOTTAKER, "123", datoFom, null, null),
Rolle(b, Rolletype.BARN, "123", datoFom, null, null),
)
b.inntekter =
mutableSetOf(
Inntekt("lønn", BigDecimal.TEN, datoFom, datoTom, "ident", true, true),
)
b.barnetillegg =
mutableSetOf(
Barnetillegg(b, "ident", BigDecimal.TEN, datoFom, datoTom),
)
b.utvidetbarnetrygd =
mutableSetOf(
Utvidetbarnetrygd(b, true, BigDecimal.TEN, datoFom, datoTom),
)
b.sivilstand =
mutableSetOf(
Sivilstand(b, datoFom, datoTom, SivilstandType.GIFT),
)
// when
val returnert =
httpHeaderTestRestTemplate.exchange(
"${rootUri()}/behandling/${behandling.id}/beregn",
HttpMethod.POST,
HttpEntity.EMPTY,
ForskuddBeregningRespons::class.java,)

return b
// then
assertSoftly {
returnert shouldNotBe null
returnert.statusCode shouldBe HttpStatus.OK
returnert.body shouldNotBe null
}
}

// @Test
// fun `split periods just one period`() {
// val controller = BehandlingBeregnForskuddController(behandlingService, bidragBeregnForskuddConsumer)
// val cal1 = Calendar.getInstance()
// val cal2 = Calendar.getInstance()
// cal1.set(Calendar.DAY_OF_MONTH, 1)
// cal2.set(Calendar.DAY_OF_MONTH, 10)
//
// val fraDato = cal1.time
// val fraDato2 = cal2.time
// cal1.add(Calendar.MONTH, 1)
// cal2.add(Calendar.MONTH, 1)
// val tilDao = cal1.time
// val tilDao2 = cal2.time
//
// val b = HusstandsBarn(prepareBehandling(), true)
//
// val splitPeriods1 = controller.splitPeriods(
// listOf(
// prepareHusstandsBarnPeriode(b, fraDato, tilDao),
// prepareHusstandsBarnPeriode(b, fraDato2, tilDao2),
// ),
// )
//
// assertEquals(3, splitPeriods1.size)
// }

// @Test
// fun `split periods`() {
// val controller = BehandlingBeregnForskuddController(behandlingService, bidragBeregnForskuddConsumer)
// val cal1 = Calendar.getInstance()
// cal1.set(Calendar.DAY_OF_MONTH, 1)
//
// val fraDato = cal1.time
// cal1.add(Calendar.MONTH, 1)
// val tilDao = cal1.time
//
// val b = HusstandsBarn(prepareBehandling(), true)
//
// val splitPeriods = controller.splitPeriods(
// listOf(
// prepareHusstandsBarnPeriode(b, fraDato, tilDao),
// ),
// )
//
// assertEquals(1, splitPeriods.size)
// }
private fun lagreBehandlingMedRoller(): Behandling {
var behandling = oppretteBehandling()
behandling.roller = oppretteBehandlingRoller(behandling)
return behandlingRepository.save(behandling)
}

private fun prepareHusstandsBarnPeriode(
b: HusstandsBarn,
Expand All @@ -174,14 +71,4 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() {
"",
)

@Test
@Ignore
fun preparePayload() {
// val c = BehandlingBeregnForskuddController(behandlingService, bidragBeregnForskuddConsumer)
//
// val message = HttpEntity(c.preparePayload(prepareBehandling(), R))
// val objectMapper = ObjectMapper()
//
// objectMapper.writeValue(System.out, message.body)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import no.nav.bidrag.behandling.dto.inntekt.InntekterResponse
import no.nav.bidrag.behandling.dto.inntekt.UtvidetbarnetrygdDto
import no.nav.bidrag.behandling.service.BehandlingService
import no.nav.bidrag.behandling.transformers.toDate
import no.nav.bidrag.behandling.utils.oppretteBehandling
import no.nav.bidrag.domene.enums.SøktAvType
import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost
import org.hibernate.engine.spi.SessionImplementor
Expand Down Expand Up @@ -266,20 +267,7 @@ class InntekterControllerTest : KontrollerTestRunner() {

private fun behandling(): Behandling {
val behandling: Behandling = behandlingRepository.save(
Behandling(
BehandlingType.FORSKUDD,
SoknadType.FASTSETTELSE,
Date(1),
Date(1),
Date(1),
"123",
123,
null,
"ENH",
SøktAvType.BIDRAGSMOTTAKER,
null,
null,
),
oppretteBehandling(),
)
return behandling
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,7 @@ abstract class KontrollerTestRunner : CommonTestRunner() {
stubUtils.stubSlettForsendelse()
stubUtils.stubHentForsendelserForSak()
stubUtils.stubTilgangskontrollTema()
stubUtils.stubHentePersoninfo(personident = "12345")
stubUtils.stubBeregneForskudd()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import com.github.tomakehurst.wiremock.client.WireMock
import io.kotest.matchers.shouldBe
import no.nav.bidrag.behandling.database.datamodell.Behandling
import no.nav.bidrag.behandling.database.datamodell.BehandlingType
import no.nav.bidrag.behandling.database.datamodell.Rolle
import no.nav.bidrag.behandling.database.datamodell.SoknadType
import no.nav.bidrag.behandling.database.repository.BehandlingRepository
import no.nav.bidrag.behandling.kafka.VedtakHendelseListener
Expand All @@ -15,10 +14,10 @@ import no.nav.bidrag.behandling.utils.ROLLE_BM
import no.nav.bidrag.behandling.utils.ROLLE_BP
import no.nav.bidrag.behandling.utils.SAKSNUMMER
import no.nav.bidrag.behandling.utils.SOKNAD_ID
import no.nav.bidrag.behandling.utils.oppretteBehandlingRoller
import no.nav.bidrag.domene.enums.BehandlingsrefKilde
import no.nav.bidrag.domene.enums.Beslutningstype
import no.nav.bidrag.domene.enums.Innkrevingstype
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.Stønadstype
import no.nav.bidrag.domene.enums.SøktAvType
import no.nav.bidrag.domene.enums.Vedtakskilde
Expand Down Expand Up @@ -58,7 +57,7 @@ class VedtakHendelseTest : CommonTestRunner() {
stubUtils.stubOpprettForsendelse()
val vedtakId = 123123
val behandlingRequest = opprettBehandling()
behandlingRequest.roller = opprettBehandlingRoller(behandlingRequest)
behandlingRequest.roller = oppretteBehandlingRoller(behandlingRequest)
val behandling = behandlingRepository.save(behandlingRequest)
vedtakHendelseListener.prossesserVedtakHendelse(
opprettHendelseRecord(
Expand Down Expand Up @@ -87,7 +86,7 @@ class VedtakHendelseTest : CommonTestRunner() {
stubUtils.stubOpprettForsendelse()
val vedtakId = 123123
val behandlingRequest = opprettBehandling()
behandlingRequest.roller = opprettBehandlingRoller(behandlingRequest)
behandlingRequest.roller = oppretteBehandlingRoller(behandlingRequest)
val behandling = behandlingRepository.save(behandlingRequest)
val vedtakHendelse =
opprettVedtakhendelse(vedtakId, behandling.id!!, stonadType = Stønadstype.FORSKUDD)
Expand Down Expand Up @@ -121,30 +120,6 @@ class VedtakHendelseTest : CommonTestRunner() {
stonadType = Stønadstype.BIDRAG18AAR,
)

private fun opprettBehandlingRoller(behandling: Behandling) = mutableSetOf(
Rolle(
ident = ROLLE_BM.fødselsnummer?.verdi!!,
rolleType = Rolletype.BIDRAGSMOTTAKER,
behandling = behandling,
fodtDato = null,
opprettetDato = null,
),
Rolle(
ident = ROLLE_BP.fødselsnummer?.verdi!!,
rolleType = Rolletype.BIDRAGSPLIKTIG,
behandling = behandling,
fodtDato = null,
opprettetDato = null,
),
Rolle(
ident = ROLLE_BA_1.fødselsnummer?.verdi!!,
rolleType = Rolletype.BARN,
behandling = behandling,
fodtDato = null,
opprettetDato = null,
),
)

private fun opprettVedtakhendelse(
vedtakId: Int,
behandlingId: Long,
Expand Down
44 changes: 44 additions & 0 deletions src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,19 @@ import com.github.tomakehurst.wiremock.matching.ContainsPattern
import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder
import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo
import no.nav.bidrag.behandling.consumer.OpprettForsendelseRespons
import no.nav.bidrag.behandling.dto.HentPersonResponse
import no.nav.bidrag.behandling.utils.opprettForsendelseResponsUnderOpprettelse
import no.nav.bidrag.domene.enums.Grunnlagstype
import no.nav.bidrag.domene.ident.Personident
import no.nav.bidrag.domene.tid.Fødselsdato
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag
import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag
import no.nav.bidrag.transport.person.PersonDto
import org.junit.Assert
import org.springframework.http.HttpHeaders
import org.springframework.http.HttpStatus
import java.time.LocalDate
import java.util.*

class StubUtils {
Expand Down Expand Up @@ -81,6 +90,41 @@ class StubUtils {
)
}

fun stubHentePersoninfo(status: HttpStatus = HttpStatus.OK, personident: String) {
WireMock.stubFor(
WireMock.post(WireMock.urlMatching("/bidrag-person/informasjon"))
.willReturn(
aClosedJsonResponse()
.withStatus(status.value())
.withBody(
toJsonString(
HentPersonResponse(
personident,
fødselsdato = Fødselsdato(LocalDate.now().minusMonths(500)).toString()
)
)
),
),
)
}

fun stubBeregneForskudd(status: HttpStatus = HttpStatus.OK) {
WireMock.stubFor(
WireMock.post(WireMock.urlMatching("/beregn/forskudd"))
.willReturn(
aClosedJsonResponse()
.withStatus(status.value())
.withBody(
toJsonString(
BeregnGrunnlag(periode = ÅrMånedsperiode(LocalDate.now().minusMonths(6), LocalDate.now().plusMonths(6)), søknadsbarnReferanse = "123", grunnlagListe = listOf(
Grunnlag(referanse="abra_cadabra", type= Grunnlagstype.BARNETILLEGG, grunnlagsreferanseListe = listOf("123"))
))
)
),
),
)
}

fun stubTilgangskontrollTema(
result: Boolean = true,
status: HttpStatus = HttpStatus.OK,
Expand Down
Loading

0 comments on commit 0583733

Please sign in to comment.