diff --git a/.github/workflows/dependabot.yaml b/.github/workflows/dependabot.yaml
new file mode 100644
index 000000000..eb3310140
--- /dev/null
+++ b/.github/workflows/dependabot.yaml
@@ -0,0 +1,29 @@
+name: Run tests for dependabot PRs
+on:
+ workflow_dispatch:
+ pull_request:
+ types: [ ready_for_review, opened, synchronize ]
+ branches:
+ - 'dependabot/**'
+
+env:
+ GITHUB_USERNAME: x-access-token
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+jobs:
+ run-tests:
+ runs-on: ubuntu-latest
+ name: Run tests
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ - uses: actions/cache@v3
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - run: mvn -B -e --settings .m2/maven-settings.xml clean test
diff --git a/.github/workflows/deploy_feature.yaml b/.github/workflows/deploy_feature.yaml
index 57e4cf1c6..7e769c55e 100644
--- a/.github/workflows/deploy_feature.yaml
+++ b/.github/workflows/deploy_feature.yaml
@@ -1,5 +1,6 @@
name: Deploy feature
on:
+ workflow_dispatch:
push:
branches:
- '**'
@@ -29,7 +30,7 @@ jobs:
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- - run: mvn -Dmaven.test.skip=true -B -e --settings .m2/maven-settings.xml clean install
+ - run: mvn -B -e --settings .m2/maven-settings.xml clean install
- uses: nais/docker-build-push@v0
id: docker-push
with:
@@ -58,11 +59,12 @@ jobs:
${{ runner.os }}-maven-
- run: mvn -B -e --settings .m2/maven-settings.xml clean install
+
deploy-feature:
runs-on: ubuntu-latest
name: Deploy feature
- needs: build
-
+ needs:
+ - build
steps:
- uses: actions/checkout@v4
with:
diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml
index bf6c24c00..777944bf3 100644
--- a/.github/workflows/pr.yaml
+++ b/.github/workflows/pr.yaml
@@ -1,7 +1,11 @@
name: Deploy to dev
on:
+ workflow_dispatch:
pull_request:
types: [ ready_for_review, opened, synchronize ]
+ branches:
+ - '**'
+ - '!dependabot/**'
env:
GITHUB_USERNAME: x-access-token
@@ -27,7 +31,7 @@ jobs:
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- - run: mvn -Dmaven.test.skip=true -B -e --settings .m2/maven-settings.xml clean install
+ - run: mvn -B -e --settings .m2/maven-settings.xml clean install
- uses: nais/docker-build-push@v0
id: docker-push
with:
@@ -38,10 +42,11 @@ jobs:
image: ${{ steps.docker-push.outputs.image }}
tag: ${{ steps.docker-push.outputs.tag }}
- run-tests:
+ deploy-dev:
runs-on: ubuntu-latest
- name: Run tests
- needs: build
+ name: Deploy dev
+ needs:
+ - build
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
diff --git a/.gitignore b/.gitignore
index 13dfa131d..1ca0ae4f8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@ target/
.settings
.springBeans
.sts4-cache
+*nais-secrets*
### IntelliJ IDEA ###
.idea
@@ -30,4 +31,4 @@ build/
### VS Code ###
.vscode/
-*nais-secrets*
+
diff --git a/.nais/feature.yaml b/.nais/feature.yaml
index 5fc817094..c38b26335 100644
--- a/.nais/feature.yaml
+++ b/.nais/feature.yaml
@@ -2,6 +2,8 @@ name: bidrag-behandling-feature
ingresses:
- https://bidrag-behandling-feature.intern.dev.nav.no
env:
+ BIDRAG_PERSON_URL: https://bidrag-person-feature.dev-fss-pub.nais.io/bidrag-person
+ BIDRAG_PERSON_SCOPE: dev-fss.bidrag.bidrag-person-feature
BIDRAG_BEREGN_FORSKUDD_URL: http://bidrag-beregn-forskudd-rest-feature
BIDRAG_BEREGN_FORSKUDD_SCOPE: dev-gcp.bidrag.bidrag-beregn-forskudd-rest-feature
BIDRAG_GRUNNLAG_URL: http://bidrag-grunnlag-feature
@@ -11,6 +13,7 @@ env:
BIDRAG_TILGANGSKONTROLL_URL: http://bidrag-tilgangskontroll-feature
BIDRAG_TILGANGGSKONTROLL_SCOPE: dev-gcp.bidrag.bidrag-tilgangskontroll-feature
TOPIC_VEDTAK: bidrag.vedtak-feature
+ JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
kafka:
pool: nav-dev
azure_access_inbound:
@@ -34,4 +37,6 @@ outbound-access-apps:
- bidrag-beregn-forskudd-rest-feature
- bidrag-grunnlag-feature
- bidrag-dokument-forsendelse-feature
- - bidrag-tilgangskontroll-feature
\ No newline at end of file
+ - bidrag-tilgangskontroll-feature
+outbound-access-hosts:
+ - bidrag-person-feature.dev-fss-pub.nais.io
\ No newline at end of file
diff --git a/.nais/main.yaml b/.nais/main.yaml
index 5d65b0803..3f9cbb996 100644
--- a/.nais/main.yaml
+++ b/.nais/main.yaml
@@ -2,6 +2,8 @@ name: bidrag-behandling
ingresses:
- https://bidrag-behandling.intern.dev.nav.no
env:
+ BIDRAG_PERSON_URL: https://bidrag-person.dev-fss-pub.nais.io/bidrag-person
+ BIDRAG_PERSON_SCOPE: dev-fss.bidrag.bidrag-person
BIDRAG_BEREGN_FORSKUDD_URL: http://bidrag-beregn-forskudd-rest
BIDRAG_BEREGN_FORSKUDD_SCOPE: dev-gcp.bidrag.bidrag-beregn-forskudd-rest
BIDRAG_GRUNNLAG_URL: http://bidrag-grunnlag
@@ -11,6 +13,7 @@ env:
BIDRAG_TILGANGSKONTROLL_URL: http://bidrag-tilgangskontroll
BIDRAG_TILGANGGSKONTROLL_SCOPE: dev-gcp.bidrag.bidrag-tilgangskontroll
TOPIC_VEDTAK: bidrag.vedtak-syntetisk
+ JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
kafka:
pool: nav-dev
azure_access_inbound:
@@ -34,4 +37,6 @@ outbound-access-apps:
- bidrag-beregn-forskudd-rest
- bidrag-grunnlag
- bidrag-dokument-forsendelse
- - bidrag-tilgangskontroll
\ No newline at end of file
+ - bidrag-tilgangskontroll
+outbound-access-hosts:
+ - bidrag-person.dev-fss-pub.nais.io
\ No newline at end of file
diff --git a/.nais/prod.yaml b/.nais/prod.yaml
index a9c3a9b7e..773b1874e 100644
--- a/.nais/prod.yaml
+++ b/.nais/prod.yaml
@@ -2,6 +2,8 @@ name: bidrag-behandling
ingresses:
- https://bidrag-behandling.intern.nav.no
env:
+ BIDRAG_PERSON_URL: https://bidrag-person.prod-fss-pub.nais.io/bidrag-person
+ BIDRAG_PERSON_SCOPE: prod-fss.bidrag.bidrag-person
BIDRAG_BEREGN_FORSKUDD_URL: http://bidrag-beregn-forskudd-rest
BIDRAG_BEREGN_FORSKUDD_SCOPE: prod-gcp.bidrag.bidrag-beregn-forskudd-rest
BIDRAG_GRUNNLAG_URL: http://bidrag-grunnlag
@@ -34,4 +36,6 @@ outbound-access-apps:
- bidrag-beregn-forskudd-rest
- bidrag-grunnlag
- bidrag-dokument-forsendelse
- - bidrag-tilgangskontroll
\ No newline at end of file
+ - bidrag-tilgangskontroll
+outbound-access-hosts:
+ - bidrag-person.prod-fss-pub.nais.io
\ No newline at end of file
diff --git a/README.md b/README.md
index 9bf9b5189..2b2ef0a92 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,19 @@ Legg til Github secret `NAIS_DEPLOY_APIKEY` hvor secret hentes fra [Api key](htt
## Kjøre applikasjonen lokalt
+#### Dockermiljø
+Et lokalt Dockermiljø må være tilgjengelig for lokal kjøring. Forebredelsessteg for lokal kjøring på Mac OS med Colima Docker:
+
+> colima start \
+> docker-compose build \
+> docker-compose up
+
+#### Starte applikasjon lokalt
+
+Profil: local (angis i program arguments)
+
Start opp applikasjonen ved å kjøre [BidragTemplateLocal.kt](src/test/kotlin/no/nav/bidrag/behandling/BidragSpringAppLocal.kt).
+
Dette starter applikasjonen med profil `local` og henter miljøvariabler for Q1 miljøet fra filen [application-local.yaml](src/test/resources/application-local.yaml).
Her mangler det noen miljøvariabler som ikke bør committes til Git (Miljøvariabler for passord/secret osv).
@@ -23,14 +35,10 @@ Disse kan hentes ved å kjøre kan hentes ved å kjøre
kubectl exec --tty deployment/bidrag-behandling-feature -- printenv | grep -e AZURE_APP_CLIENT_ID -e AZURE_APP_CLIENT_SECRET
```
-### Live reload
-Med `spring-boot-devtools` har Spring støtte for live-reload av applikasjon. Dette betyr i praksis at Spring vil automatisk restarte applikasjonen når en fil endres. Du vil derfor slippe å restarte applikasjonen hver gang du gjør endringer. Dette er forklart i [dokumentasjonen](https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/html/using-boot-devtools.html#using-boot-devtools-restart).
-For at dette skal fungere må det gjøres noe endringer i Intellij instillingene slik at Intellij automatisk re-bygger filene som er endret:
+#### Kjøre lokalt mot sky
-* Gå til `Preference -> Compiler -> check "Build project automatically"`
-* Gå til `Preference -> Advanced settings -> check "Allow auto-make to start even if developed application is currently running"`
+Profil: local-nais (angis i program arguments)
-#### Kjøre lokalt mot sky
For å kunne kjøre lokalt mot sky må du gjøre følgende
Åpne terminal på root mappen til `bidrag-behandling`
@@ -51,4 +59,12 @@ Deretter kjør følgende kommando for å importere secrets. Viktig at filen som
kubectl exec --tty deployment/bidrag-behandling printenv | grep -E 'AZURE_APP_CLIENT_ID|AZURE_APP_CLIENT_SECRET|TOKEN_X|AZURE_OPENID_CONFIG_TOKEN_ENDPOINT|AZURE_APP_TENANT_ID|AZURE_APP_WELL_KNOWN_URL|_URL|SCOPE' > src/test/resources/application-lokal-nais-secrets.properties
```
-Deretter kan tokenet brukes til å logge inn på swagger-ui http://localhost:8080/swagger-ui.html
\ No newline at end of file
+Deretter kan tokenet brukes til å logge inn på swagger-ui http://localhost:8990/swagger-ui.html
+
+### Live reload
+Med `spring-boot-devtools` har Spring støtte for live-reload av applikasjon. Dette betyr i praksis at Spring vil automatisk restarte applikasjonen når en fil endres. Du vil derfor slippe å restarte applikasjonen hver gang du gjør endringer. Dette er forklart i [dokumentasjonen](https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/html/using-boot-devtools.html#using-boot-devtools-restart).
+For at dette skal fungere må det gjøres noe endringer i Intellij instillingene slik at Intellij automatisk re-bygger filene som er endret:
+
+* Gå til `Preference -> Compiler -> check "Build project automatically"`
+* Gå til `Preference -> Advanced settings -> check "Allow auto-make to start even if developed application is currently running"`
+*
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 9eb6fa961..c13292289 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -10,6 +10,12 @@ services:
POSTGRES_DB: bidrag-behandling
volumes:
- db:/var/lib/postgresql/data
+ zookeeper:
+ container_name: zookeeper
+ image: confluentinc/cp-zookeeper:7.1.2
+ environment:
+ ZOOKEEPER_CLIENT_PORT: 2181
+ ZOOKEEPER_TICK_TIME: 2000
kafka:
image: confluentinc/cp-kafka:6.2.1
depends_on:
diff --git a/pom.xml b/pom.xml
index 5397aa251..20b0db90f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.1.3
+ 3.1.4
no.nav
@@ -18,15 +18,15 @@
20230510130746_8b93e85
20230824131636_7aef062
7.4
- 3.1.5
+ 3.1.7
2.2.0
4.0.4
LATEST
- 5.6.2
+ 5.7.2
4.0.2
3.0.5
- 9.22.0
- 1.19.0
+ 9.22.3
+ 1.19.1
@@ -46,12 +46,12 @@
org.xerial.snappy
snappy-java
- 1.1.10.3
+ 1.1.10.5
org.springframework.kafka
spring-kafka
- 3.0.11
+ 3.0.12
@@ -130,7 +130,7 @@
com.h2database
h2
test
- 2.2.220
+ 2.2.224
org.flywaydb
@@ -159,7 +159,7 @@
com.fasterxml.jackson.module
jackson-module-kotlin
- 2.15.2
+ 2.15.3
@@ -198,7 +198,7 @@
no.nav.bidrag
bidrag-transport
- 20230821134807_d0642b9
+ 20230918144946_1e1bc33
@@ -423,7 +423,7 @@
com.pinterest
ktlint
- 0.48.2
+ 0.50.0
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt b/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt
index 0167cb392..c0c3a4298 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt
@@ -3,7 +3,13 @@ package no.nav.bidrag.behandling
import org.springframework.http.HttpStatus
import org.springframework.web.client.HttpClientErrorException
-fun `404`(behandlingId: Long): Nothing =
+fun behandlingNotFoundException(behandlingId: Long): Nothing =
throw HttpClientErrorException(HttpStatus.NOT_FOUND, "Fant ikke behandling med id $behandlingId")
+
class KunneIkkeLeseMeldingFraHendelse(melding: String?, throwable: Throwable) : RuntimeException(melding, throwable)
-fun fantIkkeSak(saksnummer: String): Nothing = throw HttpClientErrorException(HttpStatus.BAD_REQUEST, "Sak med saksnummer $saksnummer finnes ikke")
+
+fun fantIkkeSak(saksnummer: String): Nothing =
+ throw HttpClientErrorException(
+ HttpStatus.BAD_REQUEST,
+ "Sak med saksnummer $saksnummer finnes ikke",
+ )
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt b/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt
index ca971f662..e9a6e057e 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt
@@ -22,7 +22,9 @@ class DefaultRestControllerAdvice {
}
@ResponseBody
- @ExceptionHandler(value = [MethodArgumentNotValidException::class, IllegalArgumentException::class, MethodArgumentTypeMismatchException::class, ConversionFailedException::class, HttpMessageNotReadableException::class])
+ @ExceptionHandler(
+ value = [MethodArgumentNotValidException::class, IllegalArgumentException::class, MethodArgumentTypeMismatchException::class, ConversionFailedException::class, HttpMessageNotReadableException::class],
+ )
fun handleInvalidValueExceptions(exception: Exception): ResponseEntity<*> {
val cause = exception.cause
val valideringsFeil =
@@ -91,10 +93,11 @@ class DefaultRestControllerAdvice {
private fun createMissingKotlinParameterViolation(ex: MissingKotlinParameterException): String {
val errorFieldRegex = Regex("\\.([^.]*)\\[\\\"(.*)\"\\]\$")
- val paths = ex.path.map { errorFieldRegex.find(it.description)!! }.map {
- val (objectName, field) = it.destructured
- "$objectName.$field"
- }
- return "${paths.joinToString("->")} kan ikke være null"
+ val paths =
+ ex.path.map { errorFieldRegex.find(it.description)!! }.map {
+ val (objectName, field) = it.destructured
+ "$objectName.$field"
+ }
+ return "${paths.joinToString("->")} må fylles ut"
}
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt b/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt
index 38c6ff256..33a41ef7e 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt
@@ -19,9 +19,11 @@ private val log = KotlinLogging.logger {}
@Component
@Aspect
class HendelseCorrelationAspect(private val objectMapper: ObjectMapper) {
-
@Before(value = "execution(* no.nav.bidrag.behandling.kafka.VedtakHendelseListener.prossesserVedtakHendelse(..)) && args(hendelse)")
- fun leggSporingFraVedtakHendelseTilMDC(joinPoint: JoinPoint, hendelse: ConsumerRecord) {
+ fun leggSporingFraVedtakHendelseTilMDC(
+ joinPoint: JoinPoint,
+ hendelse: ConsumerRecord,
+ ) {
hentSporingFraHendelse(hendelse)?.let {
val correlationId = CorrelationId.existing(it)
MDC.put(CORRELATION_ID_HEADER, correlationId.get())
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt
index 6309da99a..91dfa9827 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt
@@ -15,28 +15,27 @@ import no.nav.bidrag.behandling.database.datamodell.Rolle
import no.nav.bidrag.behandling.database.datamodell.SivilstandType
import no.nav.bidrag.behandling.transformers.INFINITY
import no.nav.bidrag.behandling.transformers.toCompactString
-import no.nav.bidrag.behandling.transformers.toLocalDate
import no.nav.bidrag.behandling.transformers.toNoString
import no.nav.bidrag.beregn.felles.enums.BostatusKode
import no.nav.bidrag.beregn.felles.enums.SivilstandKode
import no.nav.bidrag.domain.enums.GrunnlagType
-import no.nav.bidrag.transport.beregning.forskudd.rest.request.BeregnForskuddGrunnlag
-import no.nav.bidrag.transport.beregning.forskudd.rest.request.Grunnlag
+import no.nav.bidrag.transport.beregning.felles.BeregnGrunnlag
+import no.nav.bidrag.transport.beregning.felles.Grunnlag
import org.springframework.stereotype.Service
import java.math.BigDecimal
import java.time.LocalDate
+
@Service
class ForskuddBeregning {
-
- private fun prepareSoknadsBarn(soknadBarn: Rolle): List =
+ private fun prepareSoknadsBarn(soknadBarn: Rolle, fDato: String): List =
listOf(
Grunnlag(
referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id,
- type = GrunnlagType.SOKNADSBARN_INFO.toString(),
+ type = GrunnlagType.SOKNADSBARN_INFO,
innhold = POJONode(
SoknadsBarnNode(
soknadsbarnId = soknadBarn.id!!.toInt(),
- fodselsdato = soknadBarn.fodtDato?.toLocalDate()?.toNoString(),
+ fodselsdato = fDato,
),
),
),
@@ -51,13 +50,17 @@ class ForskuddBeregning {
BostatusKode.BOR_IKKE_MED_FORELDRE
}
- private fun prepareBostatus(husstandsBarnPerioder: List, soknadsBarnIdent: String, soknadBarn: Rolle): List =
+ private fun prepareBostatus(
+ husstandsBarnPerioder: List,
+ soknadsBarnIdent: String,
+ soknadBarn: Rolle
+ ): List =
husstandsBarnPerioder
.filter { soknadsBarnIdent == it.ident }
.map {
Grunnlag(
referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(),
- type = GrunnlagType.BOSTATUS.toString(),
+ type = GrunnlagType.BOSTATUS,
innhold = POJONode(
BostatusNode(
datoFom = it.datoFom.toNoString(),
@@ -75,7 +78,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_BarnIHusstand_" + it.datoFom.replace("-", ""),
- type = GrunnlagType.BARN_I_HUSSTAND.toString(),
+ type = GrunnlagType.BARN_I_HUSSTAND,
innhold = POJONode(it),
)
}
@@ -89,7 +92,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}",
- type = GrunnlagType.INNTEKT.toString(),
+ type = GrunnlagType.INNTEKT,
innhold = POJONode(
InntektNode(
datoFom = it.datoFom.toNoString(),
@@ -104,7 +107,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(),
- type = GrunnlagType.INNTEKT.toString(),
+ type = GrunnlagType.INNTEKT,
innhold = POJONode(
InntektNode(
datoFom = it.datoFom.toNoString(),
@@ -119,7 +122,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(),
- type = GrunnlagType.INNTEKT.toString(),
+ type = GrunnlagType.INNTEKT,
innhold = POJONode(
InntektNode(
datoFom = it.datoFom.toNoString(),
@@ -144,7 +147,7 @@ class ForskuddBeregning {
sivilstand.map {
Grunnlag(
referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(),
- type = GrunnlagType.SIVILSTAND.toString(),
+ type = GrunnlagType.SIVILSTAND,
innhold = POJONode(
SivilstandNode(
datoFom = it.datoFom.toNoString(),
@@ -194,7 +197,7 @@ class ForskuddBeregning {
currentPeriods = currentPeriods + list[i].info.heads - list[i].info.tails
}
- return r
+ return r.filter { it.antall != 0.0 }
}
fun toBehandlingBeregningModel(behandling: Behandling): Either, BehandlingBeregningModel> =
@@ -210,20 +213,19 @@ class ForskuddBeregning {
roller = behandling.roller,
)
- fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle): BeregnForskuddGrunnlag =
- BeregnForskuddGrunnlag(
+ fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle, fDato: String): BeregnGrunnlag =
+ BeregnGrunnlag(
beregnDatoFra = b.virkningsDato,
beregnDatoTil = b.datoTom,
- grunnlagListe = prepareSoknadsBarn(soknadsBarn) +
- prepareBarnIHusstand(b) +
- prepareBostatus(b.husstandsBarnPerioder, soknadsBarn.ident, soknadsBarn) +
- prepareInntekterForBeregning(
- b.inntekter,
- b.barnetillegg,
- b.utvidetbarnetrygd,
- ) +
- prepareSivilstand(b.sivilstand),
-
+ grunnlagListe = prepareSoknadsBarn(soknadsBarn, fDato) +
+ prepareBarnIHusstand(b) +
+ prepareBostatus(b.husstandsBarnPerioder, soknadsBarn.ident, soknadsBarn) +
+ prepareInntekterForBeregning(
+ b.inntekter,
+ b.barnetillegg,
+ b.utvidetbarnetrygd,
+ ) +
+ prepareSivilstand(b.sivilstand),
)
}
@@ -253,7 +255,7 @@ data class BostatusNode(
data class SoknadsBarnNode(
val soknadsbarnId: Int,
- val fodselsdato: String?,
+ val fodselsdato: String,
)
data class InntektNode(
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt
index adf36fe7d..d999e8b20 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt
@@ -27,6 +27,7 @@ fun Set.rolleType(ident: String): String {
else -> rolleType?.name ?: "BIDRAGSMOTTAKER"
}
}
+
data class BehandlingBeregningModel private constructor(
val behandlingId: Long,
val virkningsDato: LocalDate,
@@ -48,85 +49,85 @@ data class BehandlingBeregningModel private constructor(
utvidetbarnetrygd: Set,
husstandsBarn: Set,
roller: Set,
- ): Either, BehandlingBeregningModel> = either {
- zipOrAccumulate(
- {
- ensure(behandlingId != null) { raise("Behandling id kan ikke være null") }
- behandlingId
- },
- {
- ensure(virkningsDato != null) { raise("Behandling virkningsDato kan ikke være null") }
- virkningsDato.toLocalDate()
- },
- {
- ensure(datoTom != null) { raise("Behandling datoTom kan ikke være null") }
- datoTom.toLocalDate()
- },
- {
- mapOrAccumulate(sivilstand) {
- SivilstandModel(
- it.datoFom?.toLocalDate() ?: raise("Sivilstands datoFom kan ikke være null"),
- it.datoTom?.toLocalDate(),
- it.sivilstandType,
- )
- }
- },
- {
- mapOrAccumulate(inntekter.filter { it.taMed }) {
- InntektModel(
- inntektType = it.inntektType ?: "INNTEKTSOPPLYSNINGER_ARBEIDSGIVER", // TODO -> DETTE ER KUN MIDLERTIDIG
-// inntektType = it.inntektType ?: raise("InntektType kan ikke være null"),
- belop = it.belop,
- rolle = roller.rolleType(it.ident),
- datoFom = it.datoFom?.toLocalDate() ?: raise("Inntekts datoFom kan ikke være null"),
- datoTom = it.datoTom?.toLocalDate(),
- )
- }
- },
- {
- mapOrAccumulate(barnetillegg) {
- BarnetilleggModel(
- datoFom = it.datoFom?.toLocalDate() ?: raise("Barnetillegg datoFom kan ikke være null"),
- datoTom = it.datoTom?.toLocalDate(),
- belop = it.barnetillegg,
- )
- }
- },
- {
- mapOrAccumulate(utvidetbarnetrygd) {
- UtvidetbarnetrygdModel(
- datoFom = it.datoFom?.toLocalDate() ?: raise("Utvidetbarnetrygd datoFom kan ikke være null"),
- datoTom = it.datoTom?.toLocalDate(),
- belop = it.belop,
- )
- }
- },
- {
- mapOrAccumulate(
- husstandsBarn.filter { it.medISaken }
- .flatMap { it.perioder },
- ) {
- HusstandsBarnPeriodeModel(
- datoFom = it.datoFom?.toLocalDate() ?: raise("HusstandsBarnPeriode datoFom kan ikke være null"),
- datoTom = it.datoTom?.toLocalDate(),
- ident = it.husstandsBarn.ident,
- boStatus = it.boStatus,
- )
- }
- },
- ) { behandlingId, virkningsDato, datoTom, sivilstand, inntekter, barnetillegg, utvidetbarnetrygd, husstandsBarnPerioder ->
- BehandlingBeregningModel(
- behandlingId,
- virkningsDato,
- datoTom,
- sivilstand,
- inntekter,
- barnetillegg,
- utvidetbarnetrygd,
- husstandsBarnPerioder,
- )
+ ): Either, BehandlingBeregningModel> =
+ either {
+ zipOrAccumulate(
+ {
+ ensure(behandlingId != null) { raise("Behandling id kan ikke være null") }
+ behandlingId
+ },
+ {
+ ensure(virkningsDato != null) { raise("Behandling virkningsDato må fylles ut") }
+ virkningsDato.toLocalDate()
+ },
+ {
+ ensure(datoTom != null) { raise("Behandling Dato Til må fylles ut") }
+ datoTom.toLocalDate()
+ },
+ {
+ mapOrAccumulate(sivilstand) {
+ SivilstandModel(
+ it.datoFom?.toLocalDate() ?: raise("Sivilstand Dato Fra må fylles ut"),
+ it.datoTom?.toLocalDate(),
+ it.sivilstandType,
+ )
+ }
+ },
+ {
+ mapOrAccumulate(inntekter.filter { it.taMed }) {
+ InntektModel(
+ inntektType = it.inntektType ?: raise("InntektType kan ikke være null"),
+ belop = it.belop,
+ rolle = roller.rolleType(it.ident),
+ datoFom = it.datoFom?.toLocalDate() ?: raise("Inntekts Dato Fra må fylles ut"),
+ datoTom = it.datoTom?.toLocalDate(),
+ )
+ }
+ },
+ {
+ mapOrAccumulate(barnetillegg) {
+ BarnetilleggModel(
+ datoFom = it.datoFom?.toLocalDate() ?: raise("Barnetillegg Dato Fra må fylles ut"),
+ datoTom = it.datoTom?.toLocalDate(),
+ belop = it.barnetillegg,
+ )
+ }
+ },
+ {
+ mapOrAccumulate(utvidetbarnetrygd) {
+ UtvidetbarnetrygdModel(
+ datoFom = it.datoFom?.toLocalDate() ?: raise("Utvidetbarnetrygd Dato Fra må fylles ut"),
+ datoTom = it.datoTom?.toLocalDate(),
+ belop = it.belop,
+ )
+ }
+ },
+ {
+ mapOrAccumulate(
+ husstandsBarn.filter { it.medISaken }
+ .flatMap { it.perioder },
+ ) {
+ HusstandsBarnPeriodeModel(
+ datoFom = it.datoFom?.toLocalDate() ?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"),
+ datoTom = it.datoTom?.toLocalDate(),
+ ident = it.husstandsBarn.ident,
+ boStatus = it.boStatus,
+ )
+ }
+ },
+ ) { behandlingId, virkningsDato, datoTom, sivilstand, inntekter, barnetillegg, utvidetbarnetrygd, husstandsBarnPerioder ->
+ BehandlingBeregningModel(
+ behandlingId,
+ virkningsDato,
+ datoTom,
+ sivilstand,
+ inntekter,
+ barnetillegg,
+ utvidetbarnetrygd,
+ husstandsBarnPerioder,
+ )
+ }
}
- }
}
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt b/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt
index 8009919e0..af7a31bc5 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt
@@ -17,6 +17,7 @@ import java.util.concurrent.TimeUnit
@EnableUserCache
class CacheConfig {
companion object {
+ const val PERSON_CACHE = "PERSON_CACHE"
const val SAK_CACHE = "SAK_CACHE"
const val TILGANG_TEMA_CACHE = "TILGANG_TEMA_CACHE"
const val TILGANG_PERSON_CACHE = "TILGANG_PERSON_CACHE"
@@ -26,10 +27,14 @@ class CacheConfig {
@Bean
fun cacheManager(): CacheManager {
val caffeineCacheManager = CaffeineCacheManager()
+ caffeineCacheManager.registerCustomCache(PERSON_CACHE, Caffeine.newBuilder().expireAfter(InvaliderCacheFørStartenAvArbeidsdag()).build())
caffeineCacheManager.registerCustomCache(TILGANG_TEMA_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build())
caffeineCacheManager.registerCustomCache(TILGANG_PERSON_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build())
caffeineCacheManager.registerCustomCache(TILGANG_SAK_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build())
- caffeineCacheManager.registerCustomCache(SAK_CACHE, Caffeine.newBuilder().expireAfter(InvaliderCacheFørStartenAvArbeidsdag()).build())
+ caffeineCacheManager.registerCustomCache(
+ SAK_CACHE,
+ Caffeine.newBuilder().expireAfter(InvaliderCacheFørStartenAvArbeidsdag()).build(),
+ )
return caffeineCacheManager
}
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/config/DefaultConfiguration.kt b/src/main/kotlin/no/nav/bidrag/behandling/config/DefaultConfiguration.kt
index 31b18b049..9880a86b6 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/config/DefaultConfiguration.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/config/DefaultConfiguration.kt
@@ -15,7 +15,10 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy
import org.springframework.context.annotation.Import
@EnableAspectJAutoProxy
-@OpenAPIDefinition(info = Info(title = "bidrag-behandling", version = "v1"), security = [SecurityRequirement(name = "bearer-key")])
+@OpenAPIDefinition(
+ info = Info(title = "bidrag-behandling", version = "v1"),
+ security = [SecurityRequirement(name = "bearer-key")],
+)
@SecurityScheme(bearerFormat = "JWT", name = "bearer-key", scheme = "bearer", type = SecuritySchemeType.HTTP)
@Configuration
@EnableJwtTokenValidation
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/config/RestConfig.kt b/src/main/kotlin/no/nav/bidrag/behandling/config/RestConfig.kt
index f315c0c97..f67e701dc 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/config/RestConfig.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/config/RestConfig.kt
@@ -18,7 +18,6 @@ import java.time.format.DateTimeFormatter
@EnableSecurityConfiguration
@Import(RestOperationsAzure::class)
class RestConfig {
-
@Bean
fun jackson2ObjectMapperBuilder(): Jackson2ObjectMapperBuilder {
return Jackson2ObjectMapperBuilder()
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt
index d0b576d51..57f60bd27 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt
@@ -2,7 +2,7 @@ package no.nav.bidrag.behandling.consumer
import no.nav.bidrag.behandling.dto.behandling.ForskuddDto
import no.nav.bidrag.commons.web.client.AbstractRestClient
-import no.nav.bidrag.transport.beregning.forskudd.rest.request.BeregnForskuddGrunnlag
+import no.nav.bidrag.transport.beregning.felles.BeregnGrunnlag
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
@@ -15,10 +15,8 @@ class BidragBeregnForskuddConsumer(
@Value("\${BIDRAG_BEREGN_FORSKUDD_URL}") bidragBeregnForskuddUrl: URI,
@Qualifier("azure") restTemplate: RestTemplate,
) : AbstractRestClient(restTemplate, "bidrag-beregn-forskudd-rest") {
-
private val beregnForskuddUri =
UriComponentsBuilder.fromUri(bidragBeregnForskuddUrl).pathSegment("beregn").pathSegment("forskudd").build().toUri()
- fun beregnForskudd(payload: BeregnForskuddGrunnlag): ForskuddDto =
- postForNonNullEntity(beregnForskuddUri, payload)
+ fun beregnForskudd(payload: BeregnGrunnlag): ForskuddDto = postForNonNullEntity(beregnForskuddUri, payload)
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragForsendelseConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragForsendelseConsumer.kt
index 87008ed65..77188ef9c 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragForsendelseConsumer.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragForsendelseConsumer.kt
@@ -16,7 +16,6 @@ class BidragForsendelseConsumer(
@Value("\${BIDRAG_FORSENDELSE_URL}") private val bidragForsnendelseUrl: URI,
@Qualifier("azure") restTemplate: RestTemplate,
) : AbstractRestClient(restTemplate, "bidrag-dokument-forsendelse") {
-
private val bidragForsendelsedUri get() =
UriComponentsBuilder.fromUri(bidragForsnendelseUrl).pathSegment("api").pathSegment("forsendelse")
@@ -27,7 +26,10 @@ class BidragForsendelseConsumer(
getForNonNullEntity(bidragForsendelsedUri.pathSegment("sak").pathSegment(saksnummer).pathSegment("forsendelser").build().toUri())
fun slettForsendelse(forsendelseId: Long) {
- postForEntity(bidragForsendelsedUri.pathSegment("journal").pathSegment(forsendelseId.toString()).pathSegment("avvik").build().toUri(), Avvikshendelse(AvvikType.SLETT_JOURNALPOST))
+ postForEntity(
+ bidragForsendelsedUri.pathSegment("journal").pathSegment(forsendelseId.toString()).pathSegment("avvik").build().toUri(),
+ Avvikshendelse(AvvikType.SLETT_JOURNALPOST),
+ )
}
}
@@ -42,6 +44,7 @@ data class ForsendelseResponsTo(
val forsendelseType: ForsendelseTypeTo? = null,
val status: ForsendelseStatusTo? = null,
)
+
data class BehandlingInfoResponseDto(
val soknadId: String? = null,
val erFattet: Boolean,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragPersonConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragPersonConsumer.kt
new file mode 100644
index 000000000..aba70bd8e
--- /dev/null
+++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragPersonConsumer.kt
@@ -0,0 +1,28 @@
+package no.nav.bidrag.behandling.consumer
+
+import no.nav.bidrag.behandling.config.CacheConfig.Companion.PERSON_CACHE
+import no.nav.bidrag.behandling.dto.HentPersonRequest
+import no.nav.bidrag.behandling.dto.HentPersonResponse
+import no.nav.bidrag.commons.cache.BrukerCacheable
+import no.nav.bidrag.commons.web.client.AbstractRestClient
+import org.springframework.beans.factory.annotation.Qualifier
+import org.springframework.beans.factory.annotation.Value
+import org.springframework.stereotype.Service
+import org.springframework.web.client.RestTemplate
+import org.springframework.web.util.UriComponentsBuilder
+import java.net.URI
+
+@Service
+class BidragPersonConsumer(
+ @Value("\${BIDRAG_PERSON_URL}") bidragPersonUrl: URI,
+ @Qualifier("azure") restTemplate: RestTemplate,
+) : AbstractRestClient(restTemplate, "bidrag-person") {
+
+ private val hentPersonUri =
+ UriComponentsBuilder.fromUri(bidragPersonUrl).pathSegment("informasjon").build().toUri()
+
+ @BrukerCacheable(PERSON_CACHE)
+ fun hentPerson(ident: String): HentPersonResponse {
+ return postForNonNullEntity(hentPersonUri, HentPersonRequest(ident))
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt
index e31152b18..21a40e56b 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt
@@ -22,9 +22,9 @@ class BidragTilgangskontrollConsumer(
@Value("\${BIDRAG_TILGANGSKONTROLL_URL}") val url: URI,
@Qualifier("azure") private val restTemplate: RestOperations,
) : AbstractRestClient(restTemplate, "bidrag-tilgangskontroll") {
-
- private fun createUri(path: String?) = UriComponentsBuilder.fromUri(url)
- .path(path ?: "").build().toUri()
+ private fun createUri(path: String?) =
+ UriComponentsBuilder.fromUri(url)
+ .path(path ?: "").build().toUri()
// TODO: Bruk dette for å sjekke om saksbehandler har tilgang til behandling (sak)
@Retryable(value = [Exception::class], maxAttempts = 3, backoff = Backoff(delay = 200, maxDelay = 1000, multiplier = 2.0))
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt
index 4547b0417..fd9ecdada 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt
@@ -2,18 +2,17 @@ package no.nav.bidrag.behandling.controller
import arrow.core.mapOrAccumulate
import arrow.core.raise.either
-import com.fasterxml.jackson.databind.ObjectMapper
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.security.SecurityRequirement
import mu.KotlinLogging
import no.nav.bidrag.behandling.beregning.ForskuddBeregning
import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer
+import no.nav.bidrag.behandling.consumer.BidragPersonConsumer
import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningPerBarn
import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons
import no.nav.bidrag.behandling.service.BehandlingService
-import no.nav.bidrag.domain.enums.Rolletype
-import no.nav.bidrag.transport.beregning.forskudd.rest.request.BeregnForskuddGrunnlag
-import org.springframework.http.HttpEntity
+import no.nav.bidrag.behandling.transformers.toLocalDate
+import no.nav.bidrag.behandling.transformers.toNoString
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.client.HttpClientErrorException
@@ -26,13 +25,17 @@ class BehandlingBeregnForskuddController(
private val behandlingService: BehandlingService,
private val bidragBeregnForskuddConsumer: BidragBeregnForskuddConsumer,
private val forskuddBeregning: ForskuddBeregning,
+ private val bidragPersonConsumer: BidragPersonConsumer
) {
-
- private fun isPeriodOneWithinPeriodTwo(datoFom1: LocalDate?, datoTom1: LocalDate?, datoFom2: LocalDate, datoTom2: LocalDate?) =
- (datoFom1 === null || datoFom1 > datoFom2 || datoFom1.isEqual(datoFom2)) && (
- (datoTom2 == null && datoTom1 == null) ||
- (datoTom1 != null && (datoTom2 == null || datoTom1 < datoTom2 || datoTom1.isEqual(datoTom2)))
- )
+ private fun isPeriodOneWithinPeriodTwo(
+ datoFom1: LocalDate?,
+ datoTom1: LocalDate?,
+ datoFom2: LocalDate,
+ datoTom2: LocalDate?,
+ ) = (datoFom1 === null || datoFom1 > datoFom2 || datoFom1.isEqual(datoFom2)) && (
+ (datoTom2 == null && datoTom1 == null) ||
+ (datoTom1 != null && (datoTom2 == null || datoTom1 < datoTom2 || datoTom1.isEqual(datoTom2)))
+ )
@Suppress("unused")
@PostMapping("/behandling/{behandlingId}/beregn")
@@ -40,50 +43,52 @@ class BehandlingBeregnForskuddController(
description = "Beregn forskudd",
security = [SecurityRequirement(name = "bearer-key")],
)
- fun beregnForskudd(@PathVariable behandlingId: Long): ForskuddBeregningRespons {
+ fun beregnForskudd(
+ @PathVariable behandlingId: Long,
+ ): ForskuddBeregningRespons {
val behandling = behandlingService.hentBehandlingById(behandlingId)
- val result = either {
- val behandlingModel = forskuddBeregning.toBehandlingBeregningModel(behandling).bind()
- val results = behandling
- .roller
- .filter { Rolletype.BARN == it.rolleType }
- .mapOrAccumulate {
- val payload = forskuddBeregning.toPayload(behandlingModel, it)
+ val result =
+ either {
+ val behandlingModel = forskuddBeregning.toBehandlingBeregningModel(behandling).bind()
+ val results =
+ behandling
+ .getSøknadsBarn()
+ .mapOrAccumulate {
+ val fDato = if (it.fodtDato == null) {
+ bidragPersonConsumer.hentPerson(it.ident).fødselsdato
+ } else it.fodtDato.toLocalDate().toNoString()
- if (false) printDebugPayload(payload)
+ val payload = forskuddBeregning.toPayload(behandlingModel, it, fDato)
- try {
- val respons =
- bidragBeregnForskuddConsumer.beregnForskudd(payload)
- val beregnetForskuddPeriodeListe = respons.beregnetForskuddPeriodeListe
- beregnetForskuddPeriodeListe.forEach { r ->
- r.sivilstandType = behandlingModel.sivilstand.find { sivilstand -> isPeriodOneWithinPeriodTwo(r.periode.datoFom, r.periode.datoTil, sivilstand.datoFom, sivilstand.datoTom) }?.sivilstandType
- }
- ForskuddBeregningPerBarn(
- ident = it.ident,
- beregnetForskuddPeriodeListe = beregnetForskuddPeriodeListe,
- grunnlagListe = respons.grunnlagListe,
- )
- } catch (e: HttpClientErrorException) {
- LOGGER.warn { e }
- val errors = e.responseHeaders?.get("error")?.joinToString("\r\n")
- raise(errors ?: e.message!!)
- } catch (e: Exception) {
- LOGGER.warn { e }
- raise(e.message!!)
- }
- }.bind()
+ try {
+ val respons =
+ bidragBeregnForskuddConsumer.beregnForskudd(payload)
+ val beregnetForskuddPeriodeListe = respons.beregnetForskuddPeriodeListe
+ beregnetForskuddPeriodeListe.forEach { r ->
+ r.sivilstandType =
+ behandlingModel.sivilstand.find {
+ sivilstand ->
+ isPeriodOneWithinPeriodTwo(r.periode.datoFom, r.periode.datoTil, sivilstand.datoFom, sivilstand.datoTom)
+ }?.sivilstandType
+ }
+ ForskuddBeregningPerBarn(
+ ident = it.ident,
+ beregnetForskuddPeriodeListe = beregnetForskuddPeriodeListe,
+ grunnlagListe = respons.grunnlagListe,
+ )
+ } catch (e: HttpClientErrorException) {
+ LOGGER.warn { e }
+ val errors = e.responseHeaders?.get("error")?.joinToString("\r\n")
+ raise(errors ?: e.message!!)
+ } catch (e: Exception) {
+ LOGGER.warn { e }
+ raise(e.message!!)
+ }
+ }.bind()
- return@either results
- }
+ return@either results
+ }
return ForskuddBeregningRespons(result.getOrNull(), result.leftOrNull())
}
-
- private fun printDebugPayload(payload: BeregnForskuddGrunnlag) {
- val message = HttpEntity(payload)
- val objectMapper = ObjectMapper()
-
- objectMapper.writeValue(System.out, message.body)
- }
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt
index ea91d69c5..7f5092b08 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt
@@ -7,28 +7,28 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement
import jakarta.validation.Valid
import mu.KotlinLogging
import no.nav.bidrag.behandling.database.datamodell.Behandling
-import no.nav.bidrag.behandling.database.datamodell.Rolle
import no.nav.bidrag.behandling.dto.behandling.BehandlingDto
import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingRequest
import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse
-import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType
import no.nav.bidrag.behandling.dto.behandling.RolleDto
+import no.nav.bidrag.behandling.dto.behandling.SyncRollerRequest
+import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest
import no.nav.bidrag.behandling.service.BehandlingService
import no.nav.bidrag.behandling.transformers.toHusstandsBarnDto
import no.nav.bidrag.behandling.transformers.toLocalDate
+import no.nav.bidrag.behandling.transformers.toRolle
import no.nav.bidrag.behandling.transformers.toRolleTypeDto
import no.nav.bidrag.behandling.transformers.toSivilstandDto
-import no.nav.bidrag.domain.enums.Rolletype
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.PutMapping
import org.springframework.web.bind.annotation.RequestBody
+
private val LOGGER = KotlinLogging.logger {}
@BehandlingRestController
class BehandlingController(private val behandlingService: BehandlingService) {
-
@Suppress("unused")
@PostMapping("/behandling")
@Operation(
@@ -51,37 +51,27 @@ class BehandlingController(private val behandlingService: BehandlingService) {
@RequestBody(required = true)
createBehandling: CreateBehandlingRequest,
): CreateBehandlingResponse {
- val behandling = Behandling(
- createBehandling.behandlingType,
- createBehandling.soknadType,
- createBehandling.datoFom,
- createBehandling.datoTom,
- createBehandling.mottatDato,
- createBehandling.saksnummer,
- createBehandling.soknadId,
- createBehandling.soknadRefId,
- createBehandling.behandlerEnhet,
- createBehandling.soknadFra,
- createBehandling.stonadType,
- createBehandling.engangsbelopType,
- )
- val roller = HashSet(
- createBehandling.roller.map {
- Rolle(
- behandling,
- rolleType = when (it.rolleType) {
- CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER
- CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG
- CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER
- CreateRolleRolleType.BARN -> Rolletype.BARN
- CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT
- },
- it.ident,
- it.fodtDato,
- it.opprettetDato,
- )
- },
- )
+ val behandling =
+ Behandling(
+ createBehandling.behandlingType,
+ createBehandling.soknadType,
+ createBehandling.datoFom,
+ createBehandling.datoTom,
+ createBehandling.mottatDato,
+ createBehandling.saksnummer,
+ createBehandling.soknadId,
+ createBehandling.soknadRefId,
+ createBehandling.behandlerEnhet,
+ createBehandling.soknadFra,
+ createBehandling.stonadType,
+ createBehandling.engangsbelopType,
+ )
+ val roller =
+ HashSet(
+ createBehandling.roller.map {
+ it.toRolle(behandling)
+ },
+ )
behandling.roller.addAll(roller)
@@ -95,6 +85,30 @@ class BehandlingController(private val behandlingService: BehandlingService) {
return CreateBehandlingResponse(behandlingDo.id!!)
}
+ @Suppress("unused")
+ @PutMapping("/behandling/{behandlingId}")
+ @Operation(
+ description = "Oppdatere behandling",
+ security = [SecurityRequirement(name = "bearer-key")],
+ )
+ fun updateBehandling(
+ @PathVariable behandlingId: Long,
+ @Valid @RequestBody(required = true) request: UpdateBehandlingRequest,
+ ) {
+ behandlingService.updateBehandling(behandlingId, request.grunnlagspakkeId)
+ }
+
+ @Suppress("unused")
+ @PutMapping("/behandling/{behandlingId}/roller/sync")
+ @Operation(
+ description = "Sync fra behandling",
+ security = [SecurityRequirement(name = "bearer-key")],
+ )
+ fun syncRoller(
+ @PathVariable behandlingId: Long,
+ @Valid @RequestBody(required = true) request: SyncRollerRequest,
+ ) = behandlingService.syncRoller(behandlingId, request.roller)
+
@Suppress("unused")
@PutMapping("/behandling/{behandlingId}/vedtak/{vedtakId}")
@Operation(
@@ -112,7 +126,10 @@ class BehandlingController(private val behandlingService: BehandlingService) {
),
],
)
- fun oppdaterVedtakId(@PathVariable behandlingId: Long, @PathVariable vedtakId: Long) {
+ fun oppdaterVedtakId(
+ @PathVariable behandlingId: Long,
+ @PathVariable vedtakId: Long,
+ ) {
behandlingService.oppdaterVedtakId(behandlingId, vedtakId)
}
@@ -133,7 +150,9 @@ class BehandlingController(private val behandlingService: BehandlingService) {
),
],
)
- fun hentBehandling(@PathVariable behandlingId: Long): BehandlingDto {
+ fun hentBehandling(
+ @PathVariable behandlingId: Long,
+ ): BehandlingDto {
return findBehandlingById(behandlingId)
}
@@ -142,34 +161,37 @@ class BehandlingController(private val behandlingService: BehandlingService) {
return behandlingDto(behandlingId, behandling)
}
- private fun behandlingDto(behandlingId: Long, behandling: Behandling) =
- BehandlingDto(
- behandlingId,
- behandling.behandlingType,
- behandling.soknadType,
- behandling.vedtakId != null,
- behandling.datoFom.toLocalDate(),
- behandling.datoTom.toLocalDate(),
- behandling.mottatDato.toLocalDate(),
- behandling.soknadFra,
- behandling.saksnummer,
- behandling.soknadId,
- behandling.behandlerEnhet,
- behandling.roller.map {
- RolleDto(it.id!!, it.rolleType.toRolleTypeDto(), it.ident, it.fodtDato, it.opprettetDato)
- }.toSet(),
- behandling.husstandsBarn.toHusstandsBarnDto(),
- behandling.sivilstand.toSivilstandDto(),
- behandling.virkningsDato?.toLocalDate(),
- behandling.soknadRefId,
- behandling.aarsak,
- behandling.virkningsTidspunktBegrunnelseMedIVedtakNotat,
- behandling.virkningsTidspunktBegrunnelseKunINotat,
- behandling.boforholdBegrunnelseMedIVedtakNotat,
- behandling.boforholdBegrunnelseKunINotat,
- behandling.inntektBegrunnelseMedIVedtakNotat,
- behandling.inntektBegrunnelseKunINotat,
- )
+ private fun behandlingDto(
+ behandlingId: Long,
+ behandling: Behandling,
+ ) = BehandlingDto(
+ behandlingId,
+ behandling.behandlingType,
+ behandling.soknadType,
+ behandling.vedtakId != null,
+ behandling.datoFom.toLocalDate(),
+ behandling.datoTom.toLocalDate(),
+ behandling.mottatDato.toLocalDate(),
+ behandling.soknadFra,
+ behandling.saksnummer,
+ behandling.soknadId,
+ behandling.behandlerEnhet,
+ behandling.roller.map {
+ RolleDto(it.id!!, it.rolleType.toRolleTypeDto(), it.ident, it.fodtDato, it.opprettetDato)
+ }.toSet(),
+ behandling.husstandsBarn.toHusstandsBarnDto(),
+ behandling.sivilstand.toSivilstandDto(),
+ behandling.virkningsDato?.toLocalDate(),
+ behandling.soknadRefId,
+ behandling.grunnlagspakkeId,
+ behandling.aarsak,
+ behandling.virkningsTidspunktBegrunnelseMedIVedtakNotat,
+ behandling.virkningsTidspunktBegrunnelseKunINotat,
+ behandling.boforholdBegrunnelseMedIVedtakNotat,
+ behandling.boforholdBegrunnelseKunINotat,
+ behandling.inntektBegrunnelseMedIVedtakNotat,
+ behandling.inntektBegrunnelseKunINotat,
+ )
@Suppress("unused")
@GetMapping("/behandling")
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt
index 48aa3518a..64ad5f27f 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt
@@ -16,7 +16,6 @@ import org.springframework.web.bind.annotation.RequestBody
@BehandlingRestController
class BoforholdController(private val behandlingService: BehandlingService) {
-
@Suppress("unused")
@PutMapping("/behandling/{behandlingId}/boforhold")
@Operation(
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt
index db52a7a9c..fbba0ba1a 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt
@@ -2,7 +2,6 @@ package no.nav.bidrag.behandling.controller
import com.fasterxml.jackson.databind.JsonMappingException
import com.fasterxml.jackson.databind.exc.InvalidFormatException
-import mu.KotlinLogging
import org.springframework.core.Ordered
import org.springframework.core.annotation.Order
import org.springframework.core.convert.ConversionFailedException
@@ -17,21 +16,22 @@ import org.springframework.web.bind.annotation.ResponseBody
import org.springframework.web.client.HttpStatusCodeException
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException
-private val log = KotlinLogging.logger {}
-
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
@Suppress("unused")
class ExceptionHandler {
@ResponseBody
- @ExceptionHandler(value = [MethodArgumentNotValidException::class, InvalidFormatException::class, IllegalArgumentException::class, MethodArgumentTypeMismatchException::class, ConversionFailedException::class, HttpMessageNotReadableException::class])
+ @ExceptionHandler(
+ value = [MethodArgumentNotValidException::class, InvalidFormatException::class, IllegalArgumentException::class, MethodArgumentTypeMismatchException::class, ConversionFailedException::class, HttpMessageNotReadableException::class],
+ )
fun handleInvalidValueExceptions(exception: Exception): ResponseEntity<*> {
val cause = exception.cause ?: exception
- val validationError = when (cause) {
- is JsonMappingException -> createMissingKotlinParameterViolation(cause)
- is MethodArgumentNotValidException -> parseMethodArgumentNotValidException(cause)
- else -> null
- }
+ val validationError =
+ when (cause) {
+ is JsonMappingException -> createMissingKotlinParameterViolation(cause)
+ is MethodArgumentNotValidException -> parseMethodArgumentNotValidException(cause)
+ else -> null
+ }
val errorMessage =
validationError?.fieldErrors?.joinToString(", ") { "${it.field}: ${it.message}" }
?: "ukjent feil"
@@ -55,16 +55,6 @@ class ExceptionHandler {
.build()
}
- @ResponseBody
- @ExceptionHandler(Exception::class)
- fun handleOtherExceptions(exception: Exception): ResponseEntity<*> {
- log.warn("Det skjedde en ukjent feil", exception)
- return ResponseEntity
- .status(HttpStatus.INTERNAL_SERVER_ERROR)
- .header(HttpHeaders.WARNING, "Det skjedde en ukjent feil: ${exception.message}")
- .build()
- }
-
private fun getErrorMessage(exception: HttpStatusCodeException): String {
val errorMessage = StringBuilder()
errorMessage.append("Det skjedde en feil ved kall mot ekstern tjeneste: ")
@@ -93,8 +83,16 @@ class ExceptionHandler {
return error
}
- data class Error(val status: Int, val message: String, val fieldErrors: MutableList = mutableListOf()) {
- fun addFieldError(objectName: String, field: String, message: String) {
+ data class Error(
+ val status: Int,
+ val message: String,
+ val fieldErrors: MutableList = mutableListOf(),
+ ) {
+ fun addFieldError(
+ objectName: String,
+ field: String,
+ message: String,
+ ) {
val error = CustomFieldError(objectName, field, message)
fieldErrors.add(error)
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt
index 4ce162a93..ddeb42525 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt
@@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.RequestBody
@BehandlingRestController
class ForsendelseController(private val forsendelseService: ForsendelseService) {
-
@Suppress("unused")
@PostMapping("/forsendelse/init")
@Operation(
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt
index 2e9a56180..5829990c6 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt
@@ -20,7 +20,6 @@ import org.springframework.web.bind.annotation.RequestBody
@BehandlingRestController
class InntekterController(private val behandlingService: BehandlingService) {
-
@Suppress("unused")
@PutMapping("/behandling/{behandlingId}/inntekter")
@Operation(
@@ -42,16 +41,15 @@ class InntekterController(private val behandlingService: BehandlingService) {
@PathVariable behandlingId: Long,
@RequestBody request: UpdateInntekterRequest,
): InntekterResponse {
- val behandling = behandlingService.hentBehandlingById(behandlingId)
+ var behandling = behandlingService.hentBehandlingById(behandlingId)
behandlingService.oppdaterInntekter(
behandlingId,
- request.inntekter.toInntektDomain(behandling),
+ request.inntekter.toInntektDomain(behandling!!),
request.barnetillegg.toBarnetilleggDomain(behandling),
request.utvidetbarnetrygd.toUtvidetbarnetrygdDomain(behandling),
request.inntektBegrunnelseMedIVedtakNotat,
request.inntektBegrunnelseKunINotat,
-
)
val newBehandling = behandlingService.hentBehandlingById(behandlingId)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt
index 7ca5e3a0b..5ce4aea95 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt
@@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.responses.ApiResponse
import io.swagger.v3.oas.annotations.responses.ApiResponses
import io.swagger.v3.oas.annotations.security.SecurityRequirement
-import no.nav.bidrag.behandling.`404`
+import no.nav.bidrag.behandling.behandlingNotFoundException
import no.nav.bidrag.behandling.database.datamodell.OpplysningerType
import no.nav.bidrag.behandling.dto.opplysninger.AddOpplysningerRequest
import no.nav.bidrag.behandling.dto.opplysninger.OpplysningerDto
@@ -18,7 +18,6 @@ import org.springframework.web.bind.annotation.RequestBody
@BehandlingRestController
class OpplysningerController(val opplysningerService: OpplysningerService) {
-
@Suppress("unused")
@PostMapping("/behandling/{behandlingId}/opplysninger")
@Operation(
@@ -62,7 +61,13 @@ class OpplysningerController(val opplysningerService: OpplysningerService) {
),
],
)
- fun hentAktiv(@PathVariable behandlingId: Long, @PathVariable opplysningerType: OpplysningerType): OpplysningerDto {
- return opplysningerService.hentSistAktiv(behandlingId, opplysningerType).orElseThrow { `404`(behandlingId) }.toDto()
+ fun hentAktiv(
+ @PathVariable behandlingId: Long,
+ @PathVariable opplysningerType: OpplysningerType,
+ ): OpplysningerDto {
+ return opplysningerService.hentSistAktiv(
+ behandlingId,
+ opplysningerType,
+ ).orElseThrow { behandlingNotFoundException(behandlingId) }.toDto()
}
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt
index 69878291e..b2434a38e 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt
@@ -16,7 +16,6 @@ import org.springframework.web.bind.annotation.RequestBody
@BehandlingRestController
class VirkningsTidspunktController(private val behandlingService: BehandlingService) {
-
@Suppress("unused")
@PutMapping("/behandling/{behandlingId}/virkningstidspunkt")
@Operation(
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Barnetillegg.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Barnetillegg.kt
index a74b35652..03f3f9d17 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Barnetillegg.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Barnetillegg.kt
@@ -15,12 +15,10 @@ class Barnetillegg(
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "behandling_id", nullable = false)
val behandling: Behandling,
-
val ident: String,
val barnetillegg: BigDecimal,
val datoFom: Date?,
val datoTom: Date?,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandling.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandling.kt
index 2b5778473..2b608221d 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandling.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandling.kt
@@ -11,82 +11,66 @@ import jakarta.persistence.GenerationType
import jakarta.persistence.Id
import jakarta.persistence.OneToMany
import no.nav.bidrag.domain.enums.EngangsbelopType
+import no.nav.bidrag.domain.enums.Rolletype
import no.nav.bidrag.domain.enums.StonadType
+import org.hibernate.annotations.SQLDelete
+import org.hibernate.annotations.Where
import java.util.Date
@Entity(name = "behandling")
+@SQLDelete(sql = "UPDATE behandling SET deleted = true WHERE id=?")
+@Where(clause = "deleted=false")
class Behandling(
@Enumerated(EnumType.STRING)
val behandlingType: BehandlingType,
-
@Enumerated(EnumType.STRING)
val soknadType: SoknadType, // TODO Endre til VedtakType
-
val datoFom: Date,
-
val datoTom: Date,
-
val mottatDato: Date,
-
val saksnummer: String,
val soknadId: Long,
val soknadRefId: Long? = null,
-
val behandlerEnhet: String,
-
@Enumerated(EnumType.STRING)
val soknadFra: SoknadFraType,
-
@Enumerated(EnumType.STRING)
var stonadType: StonadType?,
-
@Enumerated(EnumType.STRING)
var engangsbelopType: EngangsbelopType?,
-
var vedtakId: Long? = null,
-
var virkningsDato: Date? = null,
-
@Enumerated(EnumType.STRING)
var aarsak: ForskuddAarsakType? = null,
-
@Column(name = "VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT")
var virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null,
-
@Column(name = "VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT")
var virkningsTidspunktBegrunnelseKunINotat: String? = null,
-
@Column(name = "BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT")
var boforholdBegrunnelseMedIVedtakNotat: String? = null,
-
@Column(name = "BOFORHOLD_BEGRUNNELSE_KUN_I_NOTAT")
var boforholdBegrunnelseKunINotat: String? = null,
-
@Column(name = "INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT")
var inntektBegrunnelseMedIVedtakNotat: String? = null,
-
@Column(name = "INNTEKT_BEGRUNNELSE_KUN_I_NOTAT")
var inntektBegrunnelseKunINotat: String? = null,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
-
+ var grunnlagspakkeId: Long? = null,
@OneToMany(fetch = FetchType.EAGER, mappedBy = "behandling", cascade = [CascadeType.ALL], orphanRemoval = true)
var roller: MutableSet = mutableSetOf(),
-
@OneToMany(fetch = FetchType.EAGER, mappedBy = "behandling", cascade = [CascadeType.ALL], orphanRemoval = true)
var husstandsBarn: MutableSet = mutableSetOf(),
-
@OneToMany(fetch = FetchType.EAGER, mappedBy = "behandling", cascade = [CascadeType.ALL], orphanRemoval = true)
var inntekter: MutableSet = mutableSetOf(),
-
@OneToMany(fetch = FetchType.EAGER, mappedBy = "behandling", cascade = [CascadeType.ALL], orphanRemoval = true)
var sivilstand: MutableSet = mutableSetOf(),
-
@OneToMany(fetch = FetchType.EAGER, mappedBy = "behandling", cascade = [CascadeType.ALL], orphanRemoval = true)
var barnetillegg: MutableSet = mutableSetOf(),
-
@OneToMany(fetch = FetchType.EAGER, mappedBy = "behandling", cascade = [CascadeType.ALL], orphanRemoval = true)
var utvidetbarnetrygd: MutableSet = mutableSetOf(),
-)
+ var deleted: Boolean = false,
+) {
+ fun getSøknadsBarn() = roller.filter { it.rolleType == Rolletype.BARN }
+}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt
index 6774be632..63b264753 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt
@@ -17,10 +17,8 @@ class HusstandsBarn(
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "behandling_id", nullable = false)
val behandling: Behandling,
-
@Column(name = "med_i_saken")
val medISaken: Boolean,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt
index 4f73dae72..6e7ccb31e 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt
@@ -16,16 +16,11 @@ class HusstandsBarnPeriode(
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "barn_i_husstand_id", nullable = false)
val husstandsBarn: HusstandsBarn,
-
val datoFom: Date?,
-
val datoTom: Date?,
-
@Enumerated(EnumType.STRING)
val boStatus: BoStatusType?,
-
val kilde: String,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt
index bbb1d2151..1944608e0 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt
@@ -14,22 +14,19 @@ import java.util.Date
@Entity(name = "inntekt")
class Inntekt(
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "behandling_id", nullable = false)
- val behandling: Behandling,
-
- val taMed: Boolean,
val inntektType: String?,
val belop: BigDecimal,
val datoFom: Date?,
val datoTom: Date?,
val ident: String,
val fraGrunnlag: Boolean,
-
+ val taMed: Boolean,
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
-
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "behandling_id", nullable = false)
+ val behandling: Behandling? = null,
@OneToMany(fetch = FetchType.EAGER, mappedBy = "inntekt", cascade = [CascadeType.ALL], orphanRemoval = true)
var inntektPostListe: MutableSet = mutableSetOf(),
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt
index aedbe2af4..729b656ac 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt
@@ -12,18 +12,14 @@ import java.math.BigDecimal
@Entity(name = "inntekt_post")
class InntektPostDomain(
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "inntekt_id", nullable = false)
- val inntekt: Inntekt,
-
@Column(name = "belop")
val beløp: BigDecimal,
-
val kode: String,
-
val visningsnavn: String,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "inntekt_id", nullable = false)
+ val inntekt: Inntekt? = null,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Opplysninger.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Opplysninger.kt
index fd9b14f2f..5d4073892 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Opplysninger.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Opplysninger.kt
@@ -14,21 +14,15 @@ import java.util.Date
@Entity(name = "opplysninger")
class Opplysninger(
-
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "behandling_id", nullable = false)
val behandling: Behandling,
-
@Enumerated(EnumType.STRING)
val opplysningerType: OpplysningerType,
-
val data: String,
-
val hentetDato: Date,
-
@Column(insertable = false, updatable = false)
val ts: Date? = null,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt
index 714a59b6e..eb9bdb731 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt
@@ -10,26 +10,26 @@ import jakarta.persistence.Id
import jakarta.persistence.JoinColumn
import jakarta.persistence.ManyToOne
import no.nav.bidrag.domain.enums.Rolletype
+import org.hibernate.annotations.SQLDelete
+import org.hibernate.annotations.Where
import java.util.Date
@Entity(name = "rolle")
+@SQLDelete(sql = "UPDATE rolle SET deleted = true WHERE id=?")
+@Where(clause = "deleted=false")
class Rolle(
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "behandling_id", nullable = false)
val behandling: Behandling,
-
@Enumerated(EnumType.STRING)
val rolleType: Rolletype,
-
val ident: String,
-
val fodtDato: Date?,
val opprettetDato: Date?,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
-
+ val deleted: Boolean = false,
@Transient
val soknadsLinje: Int = 1,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt
index 0431ad104..96b9edca5 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt
@@ -16,14 +16,10 @@ class Sivilstand(
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "behandling_id", nullable = false)
val behandling: Behandling,
-
val datoFom: Date?,
-
val datoTom: Date?,
-
@Enumerated(EnumType.STRING)
val sivilstandType: SivilstandType,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SoknadType.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SoknadType.kt
index 543ccc483..8c98b2865 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SoknadType.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SoknadType.kt
@@ -4,7 +4,6 @@ import io.swagger.v3.oas.annotations.media.Schema
@Schema(enumAsRef = true)
enum class SoknadType {
-
INDEKSREGULERING,
ALDERSJUSTERING,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Utvidetbarnetrygd.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Utvidetbarnetrygd.kt
index ac77679a0..460003ba0 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Utvidetbarnetrygd.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Utvidetbarnetrygd.kt
@@ -15,13 +15,10 @@ class Utvidetbarnetrygd(
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "behandling_id", nullable = false)
val behandling: Behandling,
-
val deltBoSted: Boolean,
-
val belop: BigDecimal,
val datoFom: Date?,
val datoTom: Date?,
-
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt
index 006ac80ba..fea2d101e 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt
@@ -10,7 +10,6 @@ import java.util.Date
import java.util.Optional
interface BehandlingRepository : CrudRepository {
-
fun findBehandlingById(id: Long): Optional
@Query("select b from behandling b")
@@ -40,5 +39,8 @@ interface BehandlingRepository : CrudRepository {
"b.vedtakId = :vedtakId " +
"where b.id = :behandlingId",
)
- fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long)
+ fun oppdaterVedtakId(
+ behandlingId: Long,
+ vedtakId: Long,
+ )
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt
index b09977c53..9d5910ee4 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt
@@ -6,5 +6,8 @@ import org.springframework.data.repository.CrudRepository
import java.util.Optional
interface OpplysningerRepository : CrudRepository {
- fun findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc(behandlingId: Long, opplysningerType: OpplysningerType): Optional
+ fun findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc(
+ behandlingId: Long,
+ opplysningerType: OpplysningerType,
+ ): Optional
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/RolleRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/RolleRepository.kt
new file mode 100644
index 000000000..9c3dd0cf3
--- /dev/null
+++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/RolleRepository.kt
@@ -0,0 +1,10 @@
+package no.nav.bidrag.behandling.database.repository
+
+import no.nav.bidrag.behandling.database.datamodell.Rolle
+import org.springframework.data.jpa.repository.Query
+import org.springframework.data.repository.CrudRepository
+
+interface RolleRepository : CrudRepository {
+ @Query("select r from rolle r where r.behandling.id = :behandlingId")
+ fun findRollerByBehandlingId(behandlingId: Long): List
+}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/HentPersonRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/HentPersonRequest.kt
new file mode 100644
index 000000000..59ae8ed3e
--- /dev/null
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/HentPersonRequest.kt
@@ -0,0 +1,3 @@
+package no.nav.bidrag.behandling.dto
+
+data class HentPersonRequest(val ident: String)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/HentPersonResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/HentPersonResponse.kt
new file mode 100644
index 000000000..49bd99bd8
--- /dev/null
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/HentPersonResponse.kt
@@ -0,0 +1,6 @@
+package no.nav.bidrag.behandling.dto
+
+data class HentPersonResponse(
+ val ident: String,
+ val fødselsdato: String,
+)
\ No newline at end of file
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/IngenTilgang.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/IngenTilgang.kt
index f0a111954..dc94812a5 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/IngenTilgang.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/IngenTilgang.kt
@@ -2,4 +2,5 @@ package no.nav.bidrag.behandling.dto
import org.springframework.http.HttpStatus
import org.springframework.web.client.HttpClientErrorException
+
fun ingenTilgang(message: String): Nothing = throw HttpClientErrorException(HttpStatus.FORBIDDEN, message)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt
index 08d48c6a4..81e3254df 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt
@@ -15,19 +15,15 @@ data class BehandlingDto(
val behandlingType: BehandlingType, // Union av StonadType og EngangsbelopType
val soknadType: SoknadType, // TODO Bruk VedtakType istedenfor
val erVedtakFattet: Boolean,
-
@Schema(type = "string", format = "date", example = "01.12.2025")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoFom: LocalDate,
-
@Schema(type = "string", format = "date", example = "01.12.2025")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoTom: LocalDate,
-
@Schema(type = "string", format = "date", example = "01.12.2025")
@JsonFormat(pattern = "yyyy-MM-dd")
val mottatDato: LocalDate,
-
val soknadFraType: SoknadFraType,
val saksnummer: String,
val soknadId: Long,
@@ -35,11 +31,11 @@ data class BehandlingDto(
val roller: Set,
val husstandsBarn: Set,
val sivilstand: Set,
-
@Schema(type = "string", format = "date", example = "01.12.2025")
@JsonFormat(pattern = "yyyy-MM-dd")
val virkningsDato: LocalDate? = null,
val soknadRefId: Long? = null,
+ val grunnlagspakkeId: Long? = null,
val aarsak: ForskuddAarsakType? = null,
val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null,
val virkningsTidspunktBegrunnelseKunINotat: String? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt
index 5f7a5d994..600b8c81c 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt
@@ -14,36 +14,26 @@ import java.util.Date
data class CreateBehandlingRequest(
@Schema(required = true)
val behandlingType: BehandlingType,
-
@Schema(required = true)
val soknadType: SoknadType,
-
@Schema(required = true)
val datoFom: Date,
-
@Schema(required = true)
val datoTom: Date,
-
@Schema(required = true)
val mottatDato: Date,
-
@Schema(required = true)
val soknadFra: SoknadFraType,
-
@field:NotBlank(message = "Saksnummer kan ikke være blank")
@field:Size(max = 7, message = "Saks nummer kan ikke være lengre enn 7 tegn")
val saksnummer: String,
-
@field:NotBlank(message = "Enhet kan ikke være blank")
@field:Size(min = 4, max = 4, message = "Enhet må være 4 tegn")
val behandlerEnhet: String,
-
@field:Size(min = 2, message = "Sak må ha minst to roller involvert")
val roller: Set<@Valid CreateRolleDto>,
-
@Schema(required = true)
var stonadType: StonadType?,
-
@Schema(required = true)
var engangsbelopType: EngangsbelopType?,
@Schema(required = true)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt
index d14d63a5c..70f03f51d 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt
@@ -16,14 +16,12 @@ enum class CreateRolleRolleType {
data class CreateRolleDto(
@Schema(required = true, enumAsRef = true)
val rolleType: CreateRolleRolleType,
-
@Schema(type = "string", description = "F.eks fødselsnummer", required = true, nullable = false)
@field:NotBlank
val ident: String,
-
@Schema(type = "string", format = "date", description = "F.eks fødselsdato")
val fodtDato: Date?,
-
@Schema(type = "string", format = "date", description = "Opprettet dato")
val opprettetDato: Date?,
+ val erSlettet: Boolean = false,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt
index b736f7e7c..33a9208c8 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt
@@ -2,13 +2,14 @@ package no.nav.bidrag.behandling.dto.behandling
import io.swagger.v3.oas.annotations.media.Schema
import no.nav.bidrag.behandling.database.datamodell.SivilstandType
-import no.nav.bidrag.transport.beregning.forskudd.rest.request.Grunnlag
+import no.nav.bidrag.transport.beregning.felles.Grunnlag
import java.math.BigDecimal
import java.time.LocalDate
@Schema(description = "Beregnet forskudd")
data class ForskuddDto(
- @Schema(description = "Periodisert liste over resultat av forskuddsberegning") var beregnetForskuddPeriodeListe: List = emptyList(),
+ @Schema(description = "Periodisert liste over resultat av forskuddsberegning") var beregnetForskuddPeriodeListe: List =
+ emptyList(),
@Schema(description = "Grunnlagsliste") val grunnlagListe: List,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt
index 1b7f24ada..bb181ad9c 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt
@@ -7,14 +7,11 @@ import java.time.LocalDate
data class SivilstandDto(
val id: Long? = null,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoFom: LocalDate?,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoTom: LocalDate?,
-
val sivilstandType: SivilstandType,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SyncRollerRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SyncRollerRequest.kt
new file mode 100644
index 000000000..b1412dd02
--- /dev/null
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SyncRollerRequest.kt
@@ -0,0 +1,7 @@
+package no.nav.bidrag.behandling.dto.behandling
+
+import io.swagger.v3.oas.annotations.media.Schema
+
+data class SyncRollerRequest(
+ @Schema(required = true) val roller: List,
+)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequest.kt
new file mode 100644
index 000000000..6cf34d1f1
--- /dev/null
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequest.kt
@@ -0,0 +1,5 @@
+package no.nav.bidrag.behandling.dto.behandling
+
+data class UpdateBehandlingRequest(
+ val grunnlagspakkeId: Long? = null,
+)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequestExtended.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequestExtended.kt
deleted file mode 100644
index eeb07ca1c..000000000
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequestExtended.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package no.nav.bidrag.behandling.dto.behandling
-
-import com.fasterxml.jackson.annotation.JsonFormat
-import io.swagger.v3.oas.annotations.media.Schema
-import jakarta.persistence.EnumType
-import jakarta.persistence.Enumerated
-import no.nav.bidrag.behandling.database.datamodell.SoknadFraType
-import no.nav.bidrag.behandling.database.datamodell.SoknadType
-import java.util.Date
-
-data class UpdateBehandlingRequestExtended(
-
- @Enumerated(EnumType.STRING)
- val soknadType: SoknadType,
-
- @Enumerated(EnumType.STRING)
- val soknadFraType: SoknadFraType,
-
- @Schema(type = "string", format = "date", example = "2025-01-25")
- @JsonFormat(pattern = "yyyy-MM-dd")
- val datoFom: Date,
-
- @Schema(type = "string", format = "date", example = "2025-01-25")
- @JsonFormat(pattern = "yyyy-MM-dd")
- val mottatDato: Date,
-)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt
index 8020f5a2c..1067bd35f 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt
@@ -1,7 +1,7 @@
package no.nav.bidrag.behandling.dto.beregning
import no.nav.bidrag.behandling.dto.behandling.ResultatPeriode
-import no.nav.bidrag.transport.beregning.forskudd.rest.request.Grunnlag
+import no.nav.bidrag.transport.beregning.felles.Grunnlag
data class ForskuddBeregningRespons(
val resultat: List?,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt
index eef1c12f3..66eb5a506 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt
@@ -9,7 +9,6 @@ data class UpdateBoforholdRequest(
val husstandsBarn: Set,
@Schema(required = true)
val sivilstand: Set,
-
val boforholdBegrunnelseMedIVedtakNotat: String? = null,
val boforholdBegrunnelseKunINotat: String? = null,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt
index 7ca7c1dd0..4636b427a 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt
@@ -20,13 +20,13 @@ data class BehandlingInfoDto(
val barnIBehandling: List = emptyList(),
) {
fun erBehandlingType(stonadType: StonadType?) = this.stonadType == stonadType
- fun erBehandlingType(engangsBelopType: EngangsbelopType?) =
- this.engangsBelopType == engangsBelopType
- fun erGebyr() =
- erBehandlingType(EngangsbelopType.GEBYR_SKYLDNER) || erBehandlingType(EngangsbelopType.GEBYR_MOTTAKER)
+ fun erBehandlingType(engangsBelopType: EngangsbelopType?) = this.engangsBelopType == engangsBelopType
+
+ fun erGebyr() = erBehandlingType(EngangsbelopType.GEBYR_SKYLDNER) || erBehandlingType(EngangsbelopType.GEBYR_MOTTAKER)
fun erBehandlingType(behandlingType: String?) = this.behandlingType == behandlingType
+
fun erVedtakFattet() = erFattetBeregnet != null || vedtakId != null
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/InitalizeForsendelseRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/InitalizeForsendelseRequest.kt
index 49006f019..5b85ada98 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/InitalizeForsendelseRequest.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/InitalizeForsendelseRequest.kt
@@ -17,7 +17,7 @@ data class InitalizeForsendelseRequest(
)
data class ForsendelseRolleDto(
- val fødselsnummer: PersonIdent,
+ val fødselsnummer: PersonIdent?,
val type: Rolletype,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnDto.kt
index 5bd12fd79..4e10d309c 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnDto.kt
@@ -6,16 +6,12 @@ import java.time.LocalDate
data class HusstandsBarnDto(
val id: Long?,
-
@Schema(required = true)
val medISaken: Boolean,
-
@Schema(required = true)
val perioder: Set,
-
val ident: String? = null,
val navn: String? = null,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val foedselsDato: LocalDate? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt
index 0c4a99dea..e6a1c9347 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt
@@ -7,18 +7,14 @@ import java.time.LocalDate
data class HusstandsBarnPeriodeDto(
val id: Long?,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoFom: LocalDate?,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoTom: LocalDate?,
-
@Schema(required = true)
val boStatus: BoStatusType?,
-
@Schema(required = true)
val kilde: String,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/BarnetilleggDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/BarnetilleggDto.kt
index 9d723502a..a4c7d7903 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/BarnetilleggDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/BarnetilleggDto.kt
@@ -7,17 +7,13 @@ import java.time.LocalDate
data class BarnetilleggDto(
val id: Long? = null,
-
@Schema(required = true)
val ident: String,
-
@Schema(required = true)
val barnetillegg: BigDecimal,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoFom: LocalDate?,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoTom: LocalDate?,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntektDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntektDto.kt
index ce9e8b951..f40bea289 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntektDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntektDto.kt
@@ -8,29 +8,21 @@ import java.time.LocalDate
data class InntektDto(
val id: Long? = null,
-
@Schema(required = true)
val taMed: Boolean,
-
val inntektType: String?,
-
@Schema(required = true)
val belop: BigDecimal,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoFom: LocalDate?,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoTom: LocalDate?,
-
@Schema(required = true)
val ident: String,
-
@Schema(required = true)
val fraGrunnlag: Boolean,
-
@Schema(required = true)
val inntektPostListe: Set,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UpdateInntekterRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UpdateInntekterRequest.kt
index 7336655fe..ab3f4a1a6 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UpdateInntekterRequest.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UpdateInntekterRequest.kt
@@ -5,13 +5,10 @@ import io.swagger.v3.oas.annotations.media.Schema
data class UpdateInntekterRequest(
@Schema(required = true)
val inntekter: Set,
-
@Schema(required = true)
val barnetillegg: Set,
-
@Schema(required = true)
val utvidetbarnetrygd: Set,
-
val inntektBegrunnelseMedIVedtakNotat: String? = null,
val inntektBegrunnelseKunINotat: String? = null,
)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetbarnetrygdDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetbarnetrygdDto.kt
index db3fc749c..fbfda68f8 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetbarnetrygdDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetbarnetrygdDto.kt
@@ -7,17 +7,13 @@ import java.time.LocalDate
data class UtvidetbarnetrygdDto(
val id: Long? = null,
-
@Schema(required = true)
val deltBoSted: Boolean,
-
@Schema(required = true)
val belop: BigDecimal,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoFom: LocalDate?,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val datoTom: LocalDate?,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/opplysninger/AddOpplysningerRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/opplysninger/AddOpplysningerRequest.kt
index cce1bc194..232223dc3 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/opplysninger/AddOpplysningerRequest.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/opplysninger/AddOpplysningerRequest.kt
@@ -9,17 +9,13 @@ import java.time.LocalDate
data class AddOpplysningerRequest(
@Schema(required = true, nullable = false)
val behandlingId: Long,
-
@Schema(required = true, nullable = false)
val aktiv: Boolean,
-
@Schema(required = true, nullable = false)
val opplysningerType: OpplysningerType,
-
@Schema(type = "string", description = "data", required = true, nullable = false)
@field:NotBlank
val data: String,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val hentetDato: LocalDate,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/opplysninger/OpplysningerDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/opplysninger/OpplysningerDto.kt
index 44d644905..2bad88dc0 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/opplysninger/OpplysningerDto.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/opplysninger/OpplysningerDto.kt
@@ -10,7 +10,6 @@ data class OpplysningerDto(
val behandlingId: Long,
val opplysningerType: OpplysningerType,
val data: String,
-
@Schema(type = "string", format = "date", example = "01.12.2025")
@JsonFormat(pattern = "yyyy-MM-dd")
val hentetDato: LocalDate,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/UpdateVirkningsTidspunktRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/UpdateVirkningsTidspunktRequest.kt
index 7d070cdc5..b7b048d84 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/UpdateVirkningsTidspunktRequest.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/UpdateVirkningsTidspunktRequest.kt
@@ -8,9 +8,7 @@ import java.time.LocalDate
data class UpdateVirkningsTidspunktRequest(
val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null,
val virkningsTidspunktBegrunnelseKunINotat: String? = null,
-
val aarsak: ForskuddAarsakType? = null,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val virkningsDato: LocalDate? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningsTidspunktResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningsTidspunktResponse.kt
index 950250ff3..069ebca65 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningsTidspunktResponse.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningsTidspunktResponse.kt
@@ -8,9 +8,7 @@ import java.time.LocalDate
data class VirkningsTidspunktResponse(
val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null,
val virkningsTidspunktBegrunnelseKunINotat: String? = null,
-
val aarsak: ForskuddAarsakType? = null,
-
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
val virkningsDato: LocalDate? = null,
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt b/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt
index 20631c0f3..30325f0b6 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt
@@ -23,7 +23,6 @@ class VedtakHendelseListener(
val forsendelseService: ForsendelseService,
val behandlingService: BehandlingService,
) {
-
@KafkaListener(groupId = "bidrag-behandling", topics = ["\${TOPIC_VEDTAK}"])
fun prossesserVedtakHendelse(melding: ConsumerRecord) {
val vedtak = parseVedtakHendelse(melding)
@@ -32,7 +31,9 @@ class VedtakHendelseListener(
if (!vedtak.erFattetFraBidragBehandling()) return
val behandling = behandlingService.hentBehandlingById(vedtak.behandlingId!!)
- log.info { "Mottok hendelse for vedtak ${vedtak.id} med type ${vedtak.type}. Lagrer vedtakId på behandling og oppretter forsendelser for vedtaket" }
+ log.info {
+ "Mottok hendelse for vedtak ${vedtak.id} med type ${vedtak.type}. Lagrer vedtakId på behandling og oppretter forsendelser for vedtaket"
+ }
behandlingService.oppdaterVedtakId(
vedtak.behandlingId!!,
@@ -46,7 +47,8 @@ class VedtakHendelseListener(
InitalizeForsendelseRequest(
saksnummer = vedtak.saksnummer,
enhet = vedtak.enhetId,
- behandlingInfo = BehandlingInfoDto(
+ behandlingInfo =
+ BehandlingInfoDto(
soknadId = vedtak.soknadId ?: behandling.soknadId,
vedtakId = vedtak.id.toLong(),
soknadFra = behandling.soknadFra,
@@ -72,10 +74,19 @@ class VedtakHendelseListener(
val VedtakHendelse.stonadType get() = this.stonadsendringListe?.firstOrNull()?.type
val VedtakHendelse.engangsbelopType get() = this.engangsbelopListe?.firstOrNull()?.type
-val VedtakHendelse.soknadId get() = this.behandlingsreferanseListe?.find { it.kilde == BehandlingsrefKilde.BISYS_SOKNAD.name }?.referanse?.toLong()
-val VedtakHendelse.behandlingId get() = this.behandlingsreferanseListe?.find { it.kilde == BehandlingsrefKilde.BEHANDLING_ID.name }?.referanse?.toLong()
+val VedtakHendelse.soknadId get() =
+ this.behandlingsreferanseListe?.find {
+ it.kilde == BehandlingsrefKilde.BISYS_SOKNAD.name
+ }?.referanse?.toLong()
+val VedtakHendelse.behandlingId get() =
+ this.behandlingsreferanseListe?.find {
+ it.kilde == BehandlingsrefKilde.BEHANDLING_ID.name
+ }?.referanse?.toLong()
+
fun VedtakHendelse.erFattetFraBidragBehandling() = behandlingId != null
+
val VedtakHendelse.saksnummer
- get(): String = stonadsendringListe?.firstOrNull()?.sakId
- ?: engangsbelopListe?.firstOrNull()?.sakId
- ?: throw RuntimeException("Vedtak hendelse med id $id mangler saksnummer")
+ get(): String =
+ stonadsendringListe?.firstOrNull()?.sakId
+ ?: engangsbelopListe?.firstOrNull()?.sakId
+ ?: throw RuntimeException("Vedtak hendelse med id $id mangler saksnummer")
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt
index 27ed8e719..fcfef54d5 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt
@@ -1,6 +1,7 @@
package no.nav.bidrag.behandling.service
-import no.nav.bidrag.behandling.`404`
+import mu.KotlinLogging
+import no.nav.bidrag.behandling.behandlingNotFoundException
import no.nav.bidrag.behandling.database.datamodell.Barnetillegg
import no.nav.bidrag.behandling.database.datamodell.Behandling
import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType
@@ -9,17 +10,24 @@ import no.nav.bidrag.behandling.database.datamodell.Inntekt
import no.nav.bidrag.behandling.database.datamodell.Sivilstand
import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd
import no.nav.bidrag.behandling.database.repository.BehandlingRepository
+import no.nav.bidrag.behandling.database.repository.RolleRepository
+import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto
import no.nav.bidrag.behandling.dto.forsendelse.BehandlingInfoDto
import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest
import no.nav.bidrag.behandling.transformers.tilForsendelseRolleDto
import no.nav.bidrag.behandling.transformers.tilVedtakType
+import no.nav.bidrag.behandling.transformers.toRolle
+import no.nav.bidrag.domain.enums.Rolletype
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
-import java.util.Date
+import java.util.*
+
+private val log = KotlinLogging.logger {}
@Service
class BehandlingService(
private val behandlingRepository: BehandlingRepository,
+ private val rolleRepository: RolleRepository,
private val forsendelseService: ForsendelseService,
) {
fun createBehandling(behandling: Behandling): Behandling =
@@ -35,7 +43,8 @@ class BehandlingService(
saksnummer = behandling.saksnummer,
enhet = behandling.behandlerEnhet,
roller = behandling.tilForsendelseRolleDto(),
- behandlingInfo = BehandlingInfoDto(
+ behandlingInfo =
+ BehandlingInfoDto(
behandlingId = behandling.id,
soknadId = behandling.soknadId,
soknadFra = behandling.soknadFra,
@@ -48,6 +57,8 @@ class BehandlingService(
)
}
+ fun deleteBehandlingById(behandlingId: Long) = behandlingRepository.deleteById(behandlingId)
+
fun oppdaterBehandling(
behandlingId: Long,
virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null,
@@ -58,28 +69,29 @@ class BehandlingService(
inntektBegrunnelseKunINotat: String? = null,
aarsak: ForskuddAarsakType? = null,
virkningsDato: Date? = null,
- ): Behandling = behandlingRepository.save(
- behandlingRepository.findBehandlingById(behandlingId)
- .orElseThrow { `404`(behandlingId) }
- .let {
- it.virkningsTidspunktBegrunnelseMedIVedtakNotat =
- virkningsTidspunktBegrunnelseMedIVedtakNotat
- it.virkningsTidspunktBegrunnelseKunINotat = virkningsTidspunktBegrunnelseKunINotat
- it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat
- it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat
- it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat
- it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat
- it.aarsak = aarsak
- it.virkningsDato = virkningsDato
- it
- },
- )
+ ): Behandling =
+ behandlingRepository.save(
+ behandlingRepository.findBehandlingById(behandlingId)
+ .orElseThrow { behandlingNotFoundException(behandlingId) }
+ .let {
+ it.virkningsTidspunktBegrunnelseMedIVedtakNotat = virkningsTidspunktBegrunnelseMedIVedtakNotat
+ it.virkningsTidspunktBegrunnelseKunINotat = virkningsTidspunktBegrunnelseKunINotat
+ it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat
+ it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat
+ it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat
+ it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat
+ it.aarsak = aarsak
+ it.virkningsDato = virkningsDato
+ it
+ },
+ )
fun hentBehandlingById(behandlingId: Long): Behandling =
- behandlingRepository.findBehandlingById(behandlingId).orElseThrow { `404`(behandlingId) }
+ behandlingRepository.findBehandlingById(behandlingId).orElseThrow { behandlingNotFoundException(behandlingId) }
fun hentBehandlinger(): List = behandlingRepository.hentBehandlinger()
+ @Transactional
fun oppdaterInntekter(
behandlingId: Long,
inntekter: MutableSet,
@@ -87,26 +99,31 @@ class BehandlingService(
utvidetbarnetrygd: MutableSet,
inntektBegrunnelseMedIVedtakNotat: String?,
inntektBegrunnelseKunINotat: String?,
- ) =
- behandlingRepository.save(
- behandlingRepository.findBehandlingById(behandlingId)
- .orElseThrow { `404`(behandlingId) }
- .let {
- it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat
- it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat
-
- it.inntekter.clear()
- it.inntekter.addAll(inntekter)
-
- it.barnetillegg.clear()
- it.barnetillegg.addAll(barnetillegg)
-
- it.utvidetbarnetrygd.clear()
- it.utvidetbarnetrygd.addAll(utvidetbarnetrygd)
-
- it
- },
- )
+ ) {
+ var behandling = behandlingRepository.findBehandlingById(behandlingId)
+ .orElseThrow { behandlingNotFoundException(behandlingId) }
+
+ behandling.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat
+ behandling.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat
+
+ if (behandling.inntekter != inntekter) {
+ log.info("Oppdaterer inntekter for behandlingsid $behandlingId")
+ behandling.inntekter.clear()
+ behandling.inntekter.addAll(inntekter)
+ }
+
+ if (behandling.barnetillegg != barnetillegg) {
+ log.info("Oppdaterer barnetillegg for behandlingsid $behandlingId")
+ behandling.barnetillegg.clear()
+ behandling.barnetillegg.addAll(barnetillegg)
+ }
+
+ if (behandling.utvidetbarnetrygd != utvidetbarnetrygd) {
+ log.info("Oppdaterer utvidet barnetrygd for behandlingsid $behandlingId")
+ behandling.utvidetbarnetrygd.clear()
+ behandling.utvidetbarnetrygd.addAll(utvidetbarnetrygd)
+ }
+ }
fun updateVirkningsTidspunkt(
behandlingId: Long,
@@ -114,14 +131,13 @@ class BehandlingService(
virkningsDato: Date?,
virkningsTidspunktBegrunnelseKunINotat: String?,
virkningsTidspunktBegrunnelseMedIVedtakNotat: String?,
- ) =
- behandlingRepository.updateVirkningsTidspunkt(
- behandlingId,
- aarsak,
- virkningsDato,
- virkningsTidspunktBegrunnelseKunINotat,
- virkningsTidspunktBegrunnelseMedIVedtakNotat
- )
+ ) = behandlingRepository.updateVirkningsTidspunkt(
+ behandlingId,
+ aarsak,
+ virkningsDato,
+ virkningsTidspunktBegrunnelseKunINotat,
+ virkningsTidspunktBegrunnelseMedIVedtakNotat,
+ )
fun updateBoforhold(
behandlingId: Long,
@@ -129,25 +145,61 @@ class BehandlingService(
sivilstand: MutableSet,
boforholdBegrunnelseKunINotat: String?,
boforholdBegrunnelseMedIVedtakNotat: String?,
- ) =
- behandlingRepository.save(
- behandlingRepository.findBehandlingById(behandlingId)
- .orElseThrow { `404`(behandlingId) }
- .let {
- it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat
- it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat
+ ) = behandlingRepository.save(
+ behandlingRepository.findBehandlingById(behandlingId)
+ .orElseThrow { behandlingNotFoundException(behandlingId) }
+ .let {
+ it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat
+ it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat
- it.husstandsBarn.clear()
- it.husstandsBarn.addAll(husstandsBarn)
+ it.husstandsBarn.clear()
+ it.husstandsBarn.addAll(husstandsBarn)
- it.sivilstand.clear()
- it.sivilstand.addAll(sivilstand)
+ it.sivilstand.clear()
+ it.sivilstand.addAll(sivilstand)
- it
- },
- )
+ it
+ },
+ )
@Transactional
fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long) =
behandlingRepository.oppdaterVedtakId(behandlingId, vedtakId)
+
+ @Transactional
+ fun syncRoller(
+ behandlingId: Long,
+ roller: List,
+ ) {
+ val existingRoller = rolleRepository.findRollerByBehandlingId(behandlingId)
+
+ val behandling = behandlingRepository.findById(behandlingId).get()
+
+ val rollerSomLeggesTil =
+ roller.filter { r ->
+ // not deleted and behandling.roller doesn't contain it yet
+ !r.erSlettet && !existingRoller.any { br -> br.ident == r.ident }
+ }
+
+ behandling.roller.addAll(rollerSomLeggesTil.map { it.toRolle(behandling) })
+
+ val identsSomSkalSlettes = roller.filter { r -> r.erSlettet }.map { it.ident }
+ behandling.roller.removeIf { r -> identsSomSkalSlettes.contains(r.ident) }
+
+ behandlingRepository.save(behandling)
+
+ if (behandling.roller.none { r -> r.rolleType == Rolletype.BARN }) {
+ behandlingRepository.delete(behandling)
+ }
+ }
+
+ fun updateBehandling(
+ behandlingId: Long,
+ grunnlagspakkeId: Long?,
+ ) {
+ hentBehandlingById(behandlingId).let {
+ it.grunnlagspakkeId = grunnlagspakkeId
+ behandlingRepository.save(it)
+ }
+ }
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt
index f36d659b8..324d14a62 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt
@@ -49,8 +49,8 @@ class ForsendelseService(
behandlingInfo = request.behandlingInfo
.copy(
barnIBehandling = request.roller
- .filter { it.type == Rolletype.BARN && it.fødselsnummer.verdi.isNotEmpty() }
- .map { it.fødselsnummer.verdi },
+ .filter { it.type == Rolletype.BARN && !it.fødselsnummer?.verdi.isNullOrEmpty() }
+ .map { it.fødselsnummer!!.verdi },
),
saksnummer = request.saksnummer,
enhet = request.enhet,
@@ -68,7 +68,7 @@ class ForsendelseService(
try {
val response = bidragForsendelseConsumer.opprettForsendelse(
opprettRequestTemplate.copy(
- mottaker = MottakerDto(ident = it.fødselsnummer.verdi),
+ mottaker = MottakerDto(ident = it.fødselsnummer!!.verdi),
gjelderIdent = it.fødselsnummer.verdi,
),
)
@@ -140,7 +140,7 @@ class ForsendelseService(
class OpprettForsendelseForRollerListe : MutableList by mutableListOf() {
fun leggTil(rolle: ForsendelseRolleDto?) {
- if (rolle == null) return
+ if (rolle?.fødselsnummer == null) return
val fødselsnummer = rolle.fødselsnummer
if (fødselsnummer.verdi.isNotEmpty()) this.add(rolle)
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt
index b6f54db33..18ad8e28d 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt
@@ -1,6 +1,6 @@
package no.nav.bidrag.behandling.service
-import no.nav.bidrag.behandling.`404`
+import no.nav.bidrag.behandling.behandlingNotFoundException
import no.nav.bidrag.behandling.database.datamodell.Opplysninger
import no.nav.bidrag.behandling.database.datamodell.OpplysningerType
import no.nav.bidrag.behandling.database.repository.BehandlingRepository
@@ -15,16 +15,23 @@ class OpplysningerService(
private val opplysningerRepository: OpplysningerRepository,
private val behandlingRepository: BehandlingRepository,
) {
-
@Transactional
- fun opprett(behandlingId: Long, opplysningerType: OpplysningerType, data: String, hentetDato: Date): Opplysninger {
+ fun opprett(
+ behandlingId: Long,
+ opplysningerType: OpplysningerType,
+ data: String,
+ hentetDato: Date,
+ ): Opplysninger {
behandlingRepository
- .findBehandlingById(behandlingId).orElseThrow { `404`(behandlingId) }
+ .findBehandlingById(behandlingId).orElseThrow { behandlingNotFoundException(behandlingId) }
.let {
return opplysningerRepository.save(Opplysninger(it, opplysningerType, data, hentetDato))
}
}
- fun hentSistAktiv(behandlingId: Long, opplysningerType: OpplysningerType): Optional =
+ fun hentSistAktiv(
+ behandlingId: Long,
+ opplysningerType: OpplysningerType,
+ ): Optional =
opplysningerRepository.findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc(behandlingId, opplysningerType)
}
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DateUtils.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DateUtils.kt
index 9d8f2bf88..71cbadb2c 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DateUtils.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DateUtils.kt
@@ -18,4 +18,5 @@ fun LocalDate.toDate(): Date {
}
fun LocalDate.toNoString(): String = this.format(formatter)
+
fun LocalDate.toCompactString(): String = this.format(formatterCommpact)
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt
index f724f0bf4..520f850c4 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt
@@ -7,9 +7,12 @@ import no.nav.bidrag.behandling.database.datamodell.HusstandsBarnPeriode
import no.nav.bidrag.behandling.database.datamodell.Inntekt
import no.nav.bidrag.behandling.database.datamodell.InntektPostDomain
import no.nav.bidrag.behandling.database.datamodell.Opplysninger
+import no.nav.bidrag.behandling.database.datamodell.Rolle
import no.nav.bidrag.behandling.database.datamodell.Sivilstand
import no.nav.bidrag.behandling.database.datamodell.SoknadType
import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd
+import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto
+import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType
import no.nav.bidrag.behandling.dto.behandling.RolleTypeDto
import no.nav.bidrag.behandling.dto.behandling.SivilstandDto
import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto
@@ -24,104 +27,169 @@ import no.nav.bidrag.domain.enums.VedtakType
import no.nav.bidrag.domain.ident.PersonIdent
import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost
-fun Set.toSivilstandDto() = this.map {
- SivilstandDto(it.id, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate(), it.sivilstandType)
-}.toSet()
-
-fun Set.toSivilstandDomain(behandling: Behandling) = this.map {
- Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.id)
-}.toMutableSet()
-
-fun Set.toBarnetilleggDto() = this.map {
- BarnetilleggDto(it.id, it.ident, it.barnetillegg, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate())
-}.toSet()
-
-fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) = this.map {
- Utvidetbarnetrygd(behandling, it.deltBoSted, it.belop, it.datoFom?.toDate(), it.datoTom?.toDate())
-}.toMutableSet()
-
-fun Set.toUtvidetbarnetrygdDto() = this.map {
- UtvidetbarnetrygdDto(it.id, it.deltBoSted, it.belop, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate())
-}.toSet()
-
-fun Set.toBarnetilleggDomain(behandling: Behandling) = this.map {
- Barnetillegg(behandling, it.ident, it.barnetillegg, it.datoFom?.toDate(), it.datoTom?.toDate(), it.id)
-}.toMutableSet()
-
-fun Set.toHusstandsBarnPeriodeDto() = this.map {
- HusstandsBarnPeriodeDto(it.id, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate(), it.boStatus, it.kilde)
-}.toSet()
-
-fun Set.toDomain(husstandsBarn: HusstandsBarn) = this.map {
- HusstandsBarnPeriode(husstandsBarn, it.datoFom?.toDate(), it.datoTom?.toDate(), it.boStatus, it.kilde)
-}.toSet()
-
-fun Set.toHusstandsBarnDto() = this.map {
- HusstandsBarnDto(it.id!!, it.medISaken, it.perioder.toHusstandsBarnPeriodeDto(), it.ident, it.navn, it.foedselsDato?.toLocalDate())
-}.toSet()
-
-fun Set.toDomain(behandling: Behandling) = this.map {
- val barn = HusstandsBarn(
- behandling,
- it.medISaken,
- it.id,
- it.ident,
- it.navn,
- it.foedselsDato?.toDate(),
- )
- barn.perioder = it.perioder.toDomain(barn).toMutableSet()
- barn
-}.toMutableSet()
-
-fun Set.toInntektDomain(behandling: Behandling) = this.map {
- val inntekt = Inntekt(
- behandling, it.taMed, it.inntektType, it.belop,
- it.datoFom?.toDate(), it.datoTom?.toDate(), it.ident, it.fraGrunnlag, it.id,
- )
- inntekt.inntektPostListe = it.inntektPostListe.toInntektPostDomain(inntekt).toMutableSet()
- inntekt
-}.toMutableSet()
-
-fun Set.toInntektPostDomain(inntekt: Inntekt) = this.map {
- InntektPostDomain(inntekt, it.beløp, it.kode, it.visningsnavn)
-}.toSet()
-
-fun Set.toInntektPost() = this.map {
- InntektPost(it.kode, it.visningsnavn, it.beløp)
-}.toSet()
-
-fun Set.toInntektDto() = this.map {
- InntektDto(it.id, it.taMed, it.inntektType, it.belop, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate(), it.ident, it.fraGrunnlag, it.inntektPostListe.toInntektPost())
-}.toSet()
+fun Set.toSivilstandDto() =
+ this.map {
+ SivilstandDto(it.id, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate(), it.sivilstandType)
+ }.toSet()
+
+fun Set.toSivilstandDomain(behandling: Behandling) =
+ this.map {
+ Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.id)
+ }.toMutableSet()
+
+fun Set.toBarnetilleggDto() =
+ this.map {
+ BarnetilleggDto(it.id, it.ident, it.barnetillegg, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate())
+ }.toSet()
+
+fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) =
+ this.map {
+ Utvidetbarnetrygd(behandling, it.deltBoSted, it.belop, it.datoFom?.toDate(), it.datoTom?.toDate())
+ }.toMutableSet()
+
+fun Set.toUtvidetbarnetrygdDto() =
+ this.map {
+ UtvidetbarnetrygdDto(it.id, it.deltBoSted, it.belop, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate())
+ }.toSet()
+
+fun Set.toBarnetilleggDomain(behandling: Behandling) =
+ this.map {
+ Barnetillegg(behandling, it.ident, it.barnetillegg, it.datoFom?.toDate(), it.datoTom?.toDate(), it.id)
+ }.toMutableSet()
+
+fun Set.toHusstandsBarnPeriodeDto() =
+ this.map {
+ HusstandsBarnPeriodeDto(it.id, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate(), it.boStatus, it.kilde)
+ }.toSet()
+
+fun Set.toDomain(husstandsBarn: HusstandsBarn) =
+ this.map {
+ HusstandsBarnPeriode(husstandsBarn, it.datoFom?.toDate(), it.datoTom?.toDate(), it.boStatus, it.kilde)
+ }.toSet()
+
+fun Set.toHusstandsBarnDto() =
+ this.map {
+ HusstandsBarnDto(
+ it.id!!,
+ it.medISaken,
+ it.perioder.toHusstandsBarnPeriodeDto(),
+ it.ident,
+ it.navn,
+ it.foedselsDato?.toLocalDate(),
+ )
+ }.toSet()
+
+fun Set.toDomain(behandling: Behandling) =
+ this.map {
+ val barn =
+ HusstandsBarn(
+ behandling,
+ it.medISaken,
+ it.id,
+ it.ident,
+ it.navn,
+ it.foedselsDato?.toDate(),
+ )
+ barn.perioder = it.perioder.toDomain(barn).toMutableSet()
+ barn
+ }.toMutableSet()
+
+fun Set.toInntektDomain(behandling: Behandling) =
+ this.map {
+ val inntekt =
+ Inntekt(
+ it.inntektType,
+ it.belop,
+ it.datoFom?.toDate(),
+ it.datoTom?.toDate(),
+ it.ident,
+ it.fraGrunnlag,
+ it.taMed,
+ it.id,
+ behandling,
+ )
+ inntekt.inntektPostListe = it.inntektPostListe.toInntektPostDomain(inntekt).toMutableSet()
+ inntekt
+ }.toMutableSet()
+
+fun Set.toInntektPostDomain(inntekt: Inntekt) =
+ this.map {
+ InntektPostDomain(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt)
+ }.toSet()
+
+fun Set.toInntektPost() =
+ this.map {
+ InntektPost(it.kode, it.visningsnavn, it.beløp)
+ }.toSet()
+
+fun Set.toInntektDto() =
+ this.map {
+ InntektDto(
+ it.id,
+ it.taMed,
+ it.inntektType,
+ it.belop,
+ it.datoFom?.toLocalDate(),
+ it.datoTom?.toLocalDate(),
+ it.ident,
+ it.fraGrunnlag,
+ it.inntektPostListe.toInntektPost(),
+ )
+ }.toSet()
fun Opplysninger.toDto(): OpplysningerDto {
- return OpplysningerDto(this.id!!, this.behandling.id!!, this.opplysningerType, this.data, this.hentetDato.toLocalDate())
-}
-
-fun Behandling.tilForsendelseRolleDto() = roller.map {
- ForsendelseRolleDto(
- fødselsnummer = PersonIdent(it.ident),
- type = it.rolleType,
+ return OpplysningerDto(
+ this.id!!,
+ this.behandling.id!!,
+ this.opplysningerType,
+ this.data,
+ this.hentetDato.toLocalDate(),
)
}
-fun SoknadType.tilVedtakType(): VedtakType = when (this) {
- SoknadType.FASTSETTELSE -> VedtakType.FASTSETTELSE
- SoknadType.REVURDERING -> VedtakType.REVURDERING
- SoknadType.ALDERSJUSTERING -> VedtakType.ALDERSJUSTERING
- SoknadType.ALDERSOPPHØR -> VedtakType.ALDERSOPPHØR
- SoknadType.ENDRING -> VedtakType.ENDRING
- SoknadType.ENDRING_MOTTAKER -> VedtakType.ENDRING_MOTTAKER
- SoknadType.KLAGE -> VedtakType.KLAGE
- SoknadType.OPPHØR -> VedtakType.OPPHØR
- SoknadType.INDEKSREGULERING -> VedtakType.INDEKSREGULERING
- SoknadType.INNKREVING -> VedtakType.INNKREVING
-}
+fun Behandling.tilForsendelseRolleDto() =
+ roller.map {
+ ForsendelseRolleDto(
+ fødselsnummer = PersonIdent(it.ident),
+ type = it.rolleType,
+ )
+ }
-fun Rolletype.toRolleTypeDto(): RolleTypeDto = when (this) {
- Rolletype.BARN -> RolleTypeDto.BARN
- Rolletype.BIDRAGSMOTTAKER -> RolleTypeDto.BIDRAGSMOTTAKER
- Rolletype.BIDRAGSPLIKTIG -> RolleTypeDto.BIDRAGSPLIKTIG
- Rolletype.FEILREGISTRERT -> RolleTypeDto.FEILREGISTRERT
- Rolletype.REELMOTTAKER -> RolleTypeDto.REELMOTTAKER
-}
+fun CreateRolleDto.toRolle(behandling: Behandling): Rolle =
+ Rolle(
+ behandling,
+ rolleType =
+ when (this.rolleType) {
+ CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER
+ CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG
+ CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER
+ CreateRolleRolleType.BARN -> Rolletype.BARN
+ CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT
+ },
+ this.ident,
+ this.fodtDato,
+ this.opprettetDato,
+ )
+
+fun SoknadType.tilVedtakType(): VedtakType =
+ when (this) {
+ SoknadType.FASTSETTELSE -> VedtakType.FASTSETTELSE
+ SoknadType.REVURDERING -> VedtakType.REVURDERING
+ SoknadType.ALDERSJUSTERING -> VedtakType.ALDERSJUSTERING
+ SoknadType.ALDERSOPPHØR -> VedtakType.ALDERSOPPHØR
+ SoknadType.ENDRING -> VedtakType.ENDRING
+ SoknadType.ENDRING_MOTTAKER -> VedtakType.ENDRING_MOTTAKER
+ SoknadType.KLAGE -> VedtakType.KLAGE
+ SoknadType.OPPHØR -> VedtakType.OPPHØR
+ SoknadType.INDEKSREGULERING -> VedtakType.INDEKSREGULERING
+ SoknadType.INNKREVING -> VedtakType.INNKREVING
+ }
+
+fun Rolletype.toRolleTypeDto(): RolleTypeDto =
+ when (this) {
+ Rolletype.BARN -> RolleTypeDto.BARN
+ Rolletype.BIDRAGSMOTTAKER -> RolleTypeDto.BIDRAGSMOTTAKER
+ Rolletype.BIDRAGSPLIKTIG -> RolleTypeDto.BIDRAGSPLIKTIG
+ Rolletype.FEILREGISTRERT -> RolleTypeDto.FEILREGISTRERT
+ Rolletype.REELMOTTAKER -> RolleTypeDto.REELMOTTAKER
+ }
diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml
index c356ea3df..ed95e26b2 100644
--- a/src/main/resources/application.yaml
+++ b/src/main/resources/application.yaml
@@ -6,6 +6,8 @@ management:
springdoc:
packages-to-scan: no.nav.bidrag.behandling.controller
+ paths-to-match: "/api/**"
+
spring.main.banner-mode: off
---
spring.config.activate.on-profile: nais,lokal-nais
@@ -13,6 +15,15 @@ spring.config.activate.on-profile: nais,lokal-nais
no.nav.security.jwt:
client:
registration:
+ bidrag-person:
+ resource-url: ${BIDRAG_PERSON_URL}
+ token-endpoint-url: https://login.microsoftonline.com/${AZURE_APP_TENANT_ID}/oauth2/v2.0/token
+ grant-type: urn:ietf:params:oauth:grant-type:jwt-bearer
+ scope: api://${BIDRAG_PERSON_SCOPE}/.default
+ authentication:
+ client-id: ${AZURE_APP_CLIENT_ID}
+ client-secret: ${AZURE_APP_CLIENT_SECRET}
+ client-auth-method: client_secret_post
bidrag-beregn-forskudd-rest:
resource-url: ${BIDRAG_BEREGN_FORSKUDD_URL}
token-endpoint-url: https://login.microsoftonline.com/${AZURE_APP_TENANT_ID}/oauth2/v2.0/token
diff --git a/src/main/resources/db/migration/V1.0.28__delete_behandling.sql b/src/main/resources/db/migration/V1.0.28__delete_behandling.sql
new file mode 100644
index 000000000..db861ef27
--- /dev/null
+++ b/src/main/resources/db/migration/V1.0.28__delete_behandling.sql
@@ -0,0 +1,8 @@
+ALTER TABLE BEHANDLING
+ ADD COLUMN IF NOT EXISTS deleted BOOLEAN DEFAULT FALSE NOT NULL;
+
+ALTER TABLE ROLLE
+ ADD COLUMN IF NOT EXISTS deleted BOOLEAN DEFAULT FALSE NOT NULL;
+
+CREATE RULE BEHANDLING_PROTECT AS ON DELETE TO BEHANDLING DO INSTEAD NOTHING;
+CREATE RULE ROLLE_PROTECT AS ON DELETE TO ROLLE DO INSTEAD NOTHING;
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V1.0.29__grunnlagspakke_id.sql b/src/main/resources/db/migration/V1.0.29__grunnlagspakke_id.sql
new file mode 100644
index 000000000..f5e27de95
--- /dev/null
+++ b/src/main/resources/db/migration/V1.0.29__grunnlagspakke_id.sql
@@ -0,0 +1,2 @@
+ALTER TABLE BEHANDLING
+ ADD COLUMN GRUNNLAGSPAKKE_ID INT DEFAULT NULL;
\ No newline at end of file
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/SpringTestRunner.kt b/src/test/kotlin/no/nav/bidrag/behandling/SpringTestRunner.kt
index af0d37a77..a843d2c14 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/SpringTestRunner.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/SpringTestRunner.kt
@@ -22,7 +22,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension
@ActiveProfiles("test")
@EnableMockOAuth2Server
class SpringTestRunner {
-
@LocalServerPort
protected var port: Int = 0
@@ -55,7 +54,6 @@ class SpringTestRunner {
}
companion object {
-
private const val LOCALHOST = "http://localhost:"
}
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/TestContainerRunner.kt b/src/test/kotlin/no/nav/bidrag/behandling/TestContainerRunner.kt
index 76407c798..463861337 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/TestContainerRunner.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/TestContainerRunner.kt
@@ -12,16 +12,16 @@ import org.testcontainers.junit.jupiter.Testcontainers
@ActiveProfiles(value = ["test", "testcontainer"])
@DirtiesContext
class TestContainerRunner : SpringTestRunner() {
-
companion object {
@Container
- protected val postgreSqlDb = PostgreSQLContainer("postgres:14.5").apply {
- withDatabaseName("bidrag-behandling")
- withUsername("cloudsqliamuser")
- withPassword("admin")
- portBindings = listOf("7777:5432")
- start()
- }
+ protected val postgreSqlDb =
+ PostgreSQLContainer("postgres:14.5").apply {
+ withDatabaseName("bidrag-behandling")
+ withUsername("cloudsqliamuser")
+ withPassword("admin")
+ portBindings = listOf("7777:5432")
+ start()
+ }
@Suppress("unused")
@JvmStatic
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/TestRestTemplateConfiguration.kt b/src/test/kotlin/no/nav/bidrag/behandling/TestRestTemplateConfiguration.kt
index 4a7cddcda..6ce0b8a3d 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/TestRestTemplateConfiguration.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/TestRestTemplateConfiguration.kt
@@ -16,7 +16,6 @@ import org.springframework.http.HttpHeaders
@Configuration
@Profile("test")
class TestRestTemplateConfiguration {
-
@Autowired
private lateinit var mockOAuth2Server: MockOAuth2Server
@@ -34,18 +33,19 @@ class TestRestTemplateConfiguration {
protected fun generateBearerToken(): String {
val iss = mockOAuth2Server.issuerUrl("aad")
val newIssuer = iss.newBuilder().host("localhost").build()
- val token = mockOAuth2Server.issueToken(
- "aad",
- "aud-localhost",
- DefaultOAuth2TokenCallback(
- issuerId = "aad",
- subject = "aud-localhost",
- typeHeader = JOSEObjectType.JWT.type,
- audience = listOf("aud-localhost"),
- claims = mapOf("iss" to newIssuer.toString()),
- 3600,
- ),
- )
+ val token =
+ mockOAuth2Server.issueToken(
+ "aad",
+ "aud-localhost",
+ DefaultOAuth2TokenCallback(
+ issuerId = "aad",
+ subject = "aud-localhost",
+ typeHeader = JOSEObjectType.JWT.type,
+ audience = listOf("aud-localhost"),
+ claims = mapOf("iss" to newIssuer.toString()),
+ 3600,
+ ),
+ )
return "Bearer " + token.serialize()
}
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt
index 129d28a30..627ec37a8 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt
@@ -1,14 +1,13 @@
package no.nav.bidrag.behandling.beregning
+import io.kotest.matchers.shouldBe
import no.nav.bidrag.behandling.beregning.model.HusstandsBarnPeriodeModel
import no.nav.bidrag.behandling.database.datamodell.BoStatusType
import no.nav.bidrag.behandling.transformers.toLocalDate
-import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import java.util.Calendar
class ForskuddBeregningTest {
-
@Test
fun `split periods just one period`() {
val forskuddBeregning = ForskuddBeregning()
@@ -21,17 +20,18 @@ class ForskuddBeregningTest {
val fraDato2 = cal2.time
cal1.add(Calendar.MONTH, 1)
cal2.add(Calendar.MONTH, 1)
- val tilDao = cal1.time
- val tilDao2 = cal2.time
+ val tilDato = cal1.time
+ val tilDato2 = cal2.time
- val splitPeriods1 = forskuddBeregning.splitPeriods(
- listOf(
- HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
- HusstandsBarnPeriodeModel(fraDato2.toLocalDate(), tilDao2.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
- ),
- )
+ val splitPeriods1 =
+ forskuddBeregning.splitPeriods(
+ listOf(
+ HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
+ HusstandsBarnPeriodeModel(fraDato2.toLocalDate(), tilDato2.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
+ ),
+ )
- assertEquals(3, splitPeriods1.size)
+ splitPeriods1.size shouldBe 3
}
@Test
@@ -42,36 +42,106 @@ class ForskuddBeregningTest {
val fraDato = cal1.time
cal1.add(Calendar.MONTH, 1)
- val tilDao = cal1.time
+ val tilDato = cal1.time
- val splitPeriods = forskuddBeregning.splitPeriods(
- listOf(
- HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
- ),
- )
+ val splitPeriods =
+ forskuddBeregning.splitPeriods(
+ listOf(
+ HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
+ ),
+ )
- assertEquals(1, splitPeriods.size)
+ splitPeriods.size shouldBe 1
}
@Test
- fun `tre barn i samtidig`() {
+ fun `tre barn samtidig`() {
val forskuddBeregning = ForskuddBeregning()
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 splitPeriods = forskuddBeregning.splitPeriods(
- listOf(
- HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
- HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
- HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
- ),
- )
-
- assertEquals(1, splitPeriods.size)
- assertEquals(3.0, splitPeriods.get(0).antall)
+ val tilDato = cal1.time
+
+ val splitPeriods =
+ forskuddBeregning.splitPeriods(
+ listOf(
+ HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
+ HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
+ HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
+ ),
+ )
+
+ splitPeriods.size shouldBe 1
+ splitPeriods[0].antall shouldBe 3.0
+ }
+
+ @Test
+ fun `tre barn men bare to barn samtidig`() {
+ val forskuddBeregning = ForskuddBeregning()
+
+ val cal1 = Calendar.getInstance()
+ cal1.set(Calendar.DAY_OF_MONTH, 1)
+
+ val fraDato1 = cal1.time
+ cal1.add(Calendar.YEAR, 1)
+ val tilDato1 = cal1.time
+
+ val cal2 = Calendar.getInstance()
+ cal2.set(Calendar.DAY_OF_MONTH, 20)
+
+ val fraDato2 = cal2.time
+ cal2.add(Calendar.MONTH, 1)
+ val tilDato2 = cal2.time
+
+ cal2.add(Calendar.MONTH, 1)
+ val fraDato3 = cal2.time
+
+ cal2.add(Calendar.MONTH, 1)
+ val tilDato3 = cal2.time
+
+ val splitPeriods =
+ forskuddBeregning.splitPeriods(
+ listOf(
+ HusstandsBarnPeriodeModel(fraDato1.toLocalDate(), tilDato1.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
+ HusstandsBarnPeriodeModel(fraDato2.toLocalDate(), tilDato2.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
+ HusstandsBarnPeriodeModel(fraDato3.toLocalDate(), tilDato3.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
+ ),
+ )
+
+ splitPeriods.size shouldBe 5
+ splitPeriods[0].antall shouldBe 1.0
+ splitPeriods[1].antall shouldBe 2.0
+ splitPeriods[2].antall shouldBe 1.0
+ splitPeriods[3].antall shouldBe 2.0
+ splitPeriods[4].antall shouldBe 1.0
+ }
+
+ @Test
+ fun `to barn ikke samtidig`() {
+ val forskuddBeregning = ForskuddBeregning()
+ val cal1 = Calendar.getInstance()
+ cal1.set(Calendar.DAY_OF_MONTH, 1)
+
+ val fraDato = cal1.time
+ cal1.add(Calendar.MONTH, 1)
+ val tilDato = cal1.time
+
+ cal1.add(Calendar.MONTH, 1)
+ val fraDato1 = cal1.time
+
+ cal1.add(Calendar.MONTH, 1)
+ val tilDato1 = cal1.time
+
+ val splitPeriods =
+ forskuddBeregning.splitPeriods(
+ listOf(
+ HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
+ HusstandsBarnPeriodeModel(fraDato1.toLocalDate(), tilDato1.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
+ ),
+ )
+
+ splitPeriods.size shouldBe 2
}
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt
index 11a250805..9c6e111c5 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt
@@ -40,68 +40,77 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() {
cal.add(Calendar.MONTH, 2)
val datoTom = cal.time
- val b = Behandling(
- BehandlingType.FORSKUDD,
- SoknadType.FASTSETTELSE,
- datoFom,
- datoTom,
- datoFom,
- "1234",
- 123213L,
- 123213L,
- "ENHE",
- SoknadFraType.BIDRAGSMOTTAKER,
- null,
- null,
- null,
- datoFom,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- 1,
- )
-
- val husstandsBarn = HusstandsBarn(
- behandling = b,
- medISaken = true,
- null,
- "123",
- null,
- datoFom,
- )
- husstandsBarn.perioder = mutableSetOf(
- HusstandsBarnPeriode(
- husstandsBarn,
+ val b =
+ Behandling(
+ BehandlingType.FORSKUDD,
+ SoknadType.FASTSETTELSE,
datoFom,
datoTom,
- BoStatusType.REGISTRERT_PA_ADRESSE,
- "",
- ),
- )
+ datoFom,
+ "1234",
+ 123213L,
+ 123213L,
+ "ENHE",
+ SoknadFraType.BIDRAGSMOTTAKER,
+ null,
+ null,
+ null,
+ datoFom,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 1,
+ )
- 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(b, true, "beskrivelse", BigDecimal.TEN, datoFom, datoTom, "ident", 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),
- )
+ val husstandsBarn =
+ HusstandsBarn(
+ behandling = b,
+ medISaken = true,
+ null,
+ "123",
+ null,
+ datoFom,
+ )
+ husstandsBarn.perioder =
+ mutableSetOf(
+ HusstandsBarnPeriode(
+ husstandsBarn,
+ datoFom,
+ datoTom,
+ BoStatusType.REGISTRERT_PA_ADRESSE,
+ "",
+ ),
+ )
+
+ 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),
+ )
return b
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt
index fc43a3098..d8b0a1aea 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt
@@ -7,7 +7,9 @@ import no.nav.bidrag.behandling.database.datamodell.SoknadType
import no.nav.bidrag.behandling.dto.behandling.BehandlingDto
import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse
import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType
+import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest
import no.nav.bidrag.behandling.service.BehandlingService
+import no.nav.bidrag.behandling.service.BehandlingServiceTest
import no.nav.bidrag.domain.enums.StonadType
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
@@ -40,88 +42,121 @@ data class CreateRolleDtoTest(
@Suppress("NonAsciiCharacters")
class BehandlingControllerTest() : KontrollerTestRunner() {
-
@Autowired
lateinit var behandlingService: BehandlingService
@Test
fun `skal opprette en behandling med null opprettetDato`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "1234", null),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "1234", null),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val behandlingReq = createBehandlingRequestTest("sak123", "en12", roller)
- val behandlingRes = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(behandlingReq),
- Void::class.java,
- )
+ val behandlingRes =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(behandlingReq),
+ Void::class.java,
+ )
assertEquals(HttpStatus.OK, behandlingRes.statusCode)
}
@Test
fun `skal opprette en behandling med null opprettetDato og så hente den`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "1234", null),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "1234", null),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val behandlingReq = createBehandlingRequestTest("sak123", "en12", roller)
- val behandlingRes = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(behandlingReq),
- CreateBehandlingResponse::class.java,
- )
+ val behandlingRes =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(behandlingReq),
+ CreateBehandlingResponse::class.java,
+ )
assertEquals(HttpStatus.OK, behandlingRes.statusCode)
- val behandling = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling/${behandlingRes.body!!.id}",
- HttpMethod.GET,
- HttpEntity.EMPTY,
- BehandlingDto::class.java,
- )
+ val behandling =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${behandlingRes.body!!.id}",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ BehandlingDto::class.java,
+ )
assertNotNull(behandling.body)
assertEquals(3, behandling.body!!.roller.size)
}
+ @Test
+ fun `skal oppdatere behandling`() {
+ val b = behandlingService.createBehandling(BehandlingServiceTest.prepareBehandling())
+
+ val behandlingRes =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/" + b.id,
+ HttpMethod.PUT,
+ HttpEntity(UpdateBehandlingRequest(123L)),
+ Void::class.java,
+ )
+ assertEquals(HttpStatus.OK, behandlingRes.statusCode)
+
+ val updatedBehandling =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${b!!.id}",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ BehandlingDto::class.java,
+ )
+
+ assertNotNull(updatedBehandling.body)
+ assertEquals(123L, updatedBehandling.body!!.grunnlagspakkeId)
+ }
+
@Test
fun `skal opprette en behandling`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller)
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- Void::class.java,
- )
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ Void::class.java,
+ )
assertEquals(HttpStatus.OK, responseMedNull.statusCode)
}
@Test
fun `skal opprette en behandling og ikke opprette forsendelse for forskudd`() {
stubUtils.stubOpprettForsendelse()
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller)
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- Void::class.java,
- )
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ Void::class.java,
+ )
assertEquals(HttpStatus.OK, responseMedNull.statusCode)
stubUtils.Verify().opprettForsendelseIkkeKalt()
}
@@ -129,22 +164,25 @@ class BehandlingControllerTest() : KontrollerTestRunner() {
@Test
fun `skal opprette en behandling og forsendelse for stonadType BIDRAG`() {
stubUtils.stubOpprettForsendelse()
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
- val testBehandlingMedNull = createBehandlingRequestTest(
- "sak123",
- "en12",
- roller,
- ).copy(stonadType = StonadType.BIDRAG)
-
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- Void::class.java,
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
+ val testBehandlingMedNull =
+ createBehandlingRequestTest(
+ "sak123",
+ "en12",
+ roller,
+ ).copy(stonadType = StonadType.BIDRAG)
+
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ Void::class.java,
+ )
assertEquals(HttpStatus.OK, responseMedNull.statusCode)
stubUtils.Verify()
.opprettForsendelseKaltMed("\"gjelderIdent\":\"123\"")
@@ -155,65 +193,71 @@ class BehandlingControllerTest() : KontrollerTestRunner() {
@Test
fun `skal opprette en behandling og ignorere feil hvis opprett forsendelse feiler`() {
stubUtils.stubOpprettForsendelse(status = HttpStatus.BAD_REQUEST)
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller)
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- Void::class.java,
- )
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ Void::class.java,
+ )
assertEquals(HttpStatus.OK, responseMedNull.statusCode)
}
@Test
fun `skal opprette en behandling og oppdatere vedtak id`() {
- val behandling = behandlingService.createBehandling(
- Behandling(
- BehandlingType.FORSKUDD,
- SoknadType.FASTSETTELSE,
- Date(1),
- Date(2),
- Date(1),
- "123",
- 123213L,
- null,
- "EN123",
- SoknadFraType.VERGE,
- null,
- null,
- ),
- )
+ val behandling =
+ behandlingService.createBehandling(
+ Behandling(
+ BehandlingType.FORSKUDD,
+ SoknadType.FASTSETTELSE,
+ Date(1),
+ Date(2),
+ Date(1),
+ "123",
+ 123213L,
+ null,
+ "EN123",
+ SoknadFraType.VERGE,
+ null,
+ null,
+ ),
+ )
val VEDTAK_ID: Long = 1
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling/${behandling.id}/vedtak/$VEDTAK_ID",
- HttpMethod.PUT,
- HttpEntity.EMPTY,
- Void::class.java,
- )
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${behandling.id}/vedtak/$VEDTAK_ID",
+ HttpMethod.PUT,
+ HttpEntity.EMPTY,
+ Void::class.java,
+ )
assertEquals(HttpStatus.OK, responseMedNull.statusCode)
assertEquals(VEDTAK_ID, behandlingService.hentBehandlingById(behandling.id!!).vedtakId)
}
@Test
fun `skal ikke opprette en behandling med bare én rolle`() {
- val testBehandlingMedNull = createBehandlingRequestTest(
- "sak123",
- "en12",
- setOf(CreateRolleDtoTest(CreateRolleRolleType.BARN, "abc1s", Date(1))),
- )
-
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- Void::class.java,
- )
+ val testBehandlingMedNull =
+ createBehandlingRequestTest(
+ "sak123",
+ "en12",
+ setOf(CreateRolleDtoTest(CreateRolleRolleType.BARN, "abc1s", Date(1))),
+ )
+
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ Void::class.java,
+ )
assertEquals(HttpStatus.BAD_REQUEST, responseMedNull.statusCode)
}
@@ -221,111 +265,124 @@ class BehandlingControllerTest() : KontrollerTestRunner() {
fun `skal ikke opprette en behandling uten roller`() {
val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", setOf())
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- Void::class.java,
- )
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ Void::class.java,
+ )
assertEquals(HttpStatus.BAD_REQUEST, responseMedNull.statusCode)
}
@Test
fun `skal ikke opprette en behandling med rolle med null ident`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, null, Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, null, Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller)
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- Void::class.java,
- )
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ Void::class.java,
+ )
assertEquals(HttpStatus.BAD_REQUEST, responseMedNull.statusCode)
}
@Ignore
@Test
fun `skal ikke opprette en behandling med rolle med blank ident`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, " ", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, " ", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller)
- val responseMedNull = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- Void::class.java,
- )
+ val responseMedNull =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ Void::class.java,
+ )
assertEquals(HttpStatus.BAD_REQUEST, responseMedNull.statusCode)
}
@Test
fun `skal ikke opprette en behandling med blank sak`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedBlank = createBehandlingRequestTest(" ", "en12", roller)
- val responseMedBlank = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedBlank),
- Void::class.java,
- )
+ val responseMedBlank =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedBlank),
+ Void::class.java,
+ )
assertEquals(HttpStatus.BAD_REQUEST, responseMedBlank.statusCode)
}
@Test
fun `skal ikke opprette en behandling med blank sak1`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedBlank = createBehandlingRequestTest("", "en12", roller)
- val responseMedBlank = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedBlank),
- Void::class.java,
- )
+ val responseMedBlank =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedBlank),
+ Void::class.java,
+ )
assertEquals(HttpStatus.BAD_REQUEST, responseMedBlank.statusCode)
}
@Test
fun `skal ikke opprette en behandling med lang sak`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedBlank = createBehandlingRequestTest("123456789", "en12", roller)
- val responseMedBlank = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedBlank),
- Void::class.java,
- )
+ val responseMedBlank =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedBlank),
+ Void::class.java,
+ )
assertEquals(HttpStatus.BAD_REQUEST, responseMedBlank.statusCode)
}
@Test
fun `skal ikke opprette en behandling med ugyldig enhet`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val b = createBehandlingRequestTest(null, "12312312312", roller)
- val r = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(b),
- Void::class.java,
- )
+ val r =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(b),
+ Void::class.java,
+ )
assertEquals(HttpStatus.BAD_REQUEST, r.statusCode)
}
@@ -335,18 +392,19 @@ class BehandlingControllerTest() : KontrollerTestRunner() {
enhet: String,
roller: Set,
): CreateBehandlingRequestTest {
- val testBehandling = CreateBehandlingRequestTest(
- BehandlingType.FORSKUDD,
- StonadType.FORSKUDD,
- SoknadType.FASTSETTELSE,
- Date(1),
- Date(1),
- Date(1),
- SoknadFraType.BIDRAGSMOTTAKER,
- saksnummer,
- enhet,
- roller,
- )
+ val testBehandling =
+ CreateBehandlingRequestTest(
+ BehandlingType.FORSKUDD,
+ StonadType.FORSKUDD,
+ SoknadType.FASTSETTELSE,
+ Date(1),
+ Date(1),
+ Date(1),
+ SoknadFraType.BIDRAGSMOTTAKER,
+ saksnummer,
+ enhet,
+ roller,
+ )
return testBehandling
}
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt
index 3f18eba58..cfd7fed75 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt
@@ -16,22 +16,23 @@ import java.util.Date
import kotlin.test.assertEquals
class BoforholdControllerTest : KontrollerTestRunner() {
-
@Test
fun `skal lagre boforhold data`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller)
// 1. Create new behandling
- val behandling = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling",
- HttpMethod.POST,
- HttpEntity(testBehandlingMedNull),
- CreateBehandlingResponse::class.java,
- )
+ val behandling =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ CreateBehandlingResponse::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, behandling.statusCode)
// 2.1 Prepare husstandsBarn
@@ -41,12 +42,13 @@ class BoforholdControllerTest : KontrollerTestRunner() {
// 2.2
val boforholdData = UpdateBoforholdRequest(husstandsBarn, emptySet(), "med i vedtak", "kun i notat") //
- val boforholdResponse = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling/${behandling.body!!.id}/boforhold",
- HttpMethod.PUT,
- HttpEntity(boforholdData),
- BoforholdResponse::class.java,
- )
+ val boforholdResponse =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${behandling.body!!.id}/boforhold",
+ HttpMethod.PUT,
+ HttpEntity(boforholdData),
+ BoforholdResponse::class.java,
+ )
assertEquals(1, boforholdResponse.body!!.husstandsBarn.size)
val husstandsBarnDto = boforholdResponse.body!!.husstandsBarn.iterator().next()
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt
index 70d6b0976..61a3bbbf3 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt
@@ -23,42 +23,45 @@ import org.springframework.http.HttpStatus
import org.springframework.http.MediaType
class ForsendelseControllerTest : KontrollerTestRunner() {
-
@Test
fun `Skal opprette forsendelse`() {
val forsendelseId = "213123213123"
stubUtils.stubOpprettForsendelse(forsendelseId)
stubUtils.stubTilgangskontrollTema()
- val response = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/forsendelse/init",
- HttpMethod.POST,
- HttpEntity(
- InitalizeForsendelseRequest(
- saksnummer = SAKSNUMMER,
- enhet = BidragEnhet.ENHET_FARSKAP,
- behandlingInfo = BehandlingInfoDto(
- soknadId = SOKNAD_ID,
- stonadType = StonadType.FORSKUDD,
- ),
- roller = listOf(
- ROLLE_BM,
- ROLLE_BP,
- ROLLE_BA_1,
+ val response =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/forsendelse/init",
+ HttpMethod.POST,
+ HttpEntity(
+ InitalizeForsendelseRequest(
+ saksnummer = SAKSNUMMER,
+ enhet = BidragEnhet.ENHET_FARSKAP,
+ behandlingInfo =
+ BehandlingInfoDto(
+ soknadId = SOKNAD_ID,
+ stonadType = StonadType.FORSKUDD,
+ ),
+ roller =
+ listOf(
+ ROLLE_BM,
+ ROLLE_BP,
+ ROLLE_BA_1,
+ ),
),
),
- ),
- List::class.java,
- )
+ List::class.java,
+ )
response.statusCode shouldBe HttpStatus.OK
response.body shouldBe listOf(forsendelseId)
@Language("Json")
- val expectedRequest = """
+ val expectedRequest =
+ """
{
"mottaker": {
- "ident": "${ROLLE_BM.fødselsnummer.verdi}"
+ "ident": "${ROLLE_BM.fødselsnummer?.verdi}"
},
- "gjelderIdent": "${ROLLE_BM.fødselsnummer.verdi}",
+ "gjelderIdent": "${ROLLE_BM.fødselsnummer?.verdi}",
"saksnummer": "$SAKSNUMMER",
"enhet": "${BidragEnhet.ENHET_FARSKAP}",
"språk": "NB",
@@ -79,7 +82,7 @@ class ForsendelseControllerTest : KontrollerTestRunner() {
},
"opprettTittel": true
}
- """.trimIndent().replace("\n", "").replace(" ", "")
+ """.trimIndent().replace("\n", "").replace(" ", "")
stubUtils.Verify().opprettForsendelseKaltMed(expectedRequest)
stubUtils.Verify().forsendelseHentetForSak(SAKSNUMMER, 0)
stubUtils.Verify().forsendelseSlettet(antall = 0)
@@ -92,11 +95,13 @@ class ForsendelseControllerTest : KontrollerTestRunner() {
stubUtils.stubTilgangskontrollTema()
val header = HttpHeaders()
header.contentType = MediaType.APPLICATION_JSON
- val response = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/forsendelse/init",
- HttpMethod.POST,
- HttpEntity(
- """{
+ val response =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/forsendelse/init",
+ HttpMethod.POST,
+ HttpEntity(
+ """
+ {
"saksnummer": "$SAKSNUMMER",
"behandlingInfo": {
"vedtakId": null,
@@ -116,34 +121,35 @@ class ForsendelseControllerTest : KontrollerTestRunner() {
"tema": null,
"roller": [
{
- "fødselsnummer": "${ROLLE_BM.fødselsnummer.verdi}",
+ "fødselsnummer": "${ROLLE_BM.fødselsnummer?.verdi}",
"type": "BM"
},
{
- "fødselsnummer": "${ROLLE_BP.fødselsnummer.verdi}",
+ "fødselsnummer": "${ROLLE_BP.fødselsnummer?.verdi}",
"type": "BP"
},
{
- "fødselsnummer": "${ROLLE_BA_1.fødselsnummer.verdi}",
+ "fødselsnummer": "${ROLLE_BA_1.fødselsnummer?.verdi}",
"type": "BA"
}
]
}
- """.trimIndent(),
- header,
- ),
- List::class.java,
- )
+ """.trimIndent(),
+ header,
+ ),
+ List::class.java,
+ )
response.statusCode shouldBe HttpStatus.OK
response.body shouldBe listOf(forsendelseId)
@Language("Json")
- val expectedRequest = """
+ val expectedRequest =
+ """
{
"mottaker": {
- "ident": "${ROLLE_BM.fødselsnummer.verdi}"
+ "ident": "${ROLLE_BM.fødselsnummer?.verdi}"
},
- "gjelderIdent": "${ROLLE_BM.fødselsnummer.verdi}",
+ "gjelderIdent": "${ROLLE_BM.fødselsnummer?.verdi}",
"saksnummer": "$SAKSNUMMER",
"enhet": "${BidragEnhet.ENHET_FARSKAP}",
"språk": "NB",
@@ -164,7 +170,7 @@ class ForsendelseControllerTest : KontrollerTestRunner() {
},
"opprettTittel": true
}
- """.trimIndent().replace("\n", "").replace(" ", "")
+ """.trimIndent().replace("\n", "").replace(" ", "")
stubUtils.Verify().opprettForsendelseKaltMed(expectedRequest)
stubUtils.Verify().forsendelseHentetForSak(SAKSNUMMER, 0)
stubUtils.Verify().forsendelseSlettet(antall = 0)
@@ -185,27 +191,30 @@ class ForsendelseControllerTest : KontrollerTestRunner() {
),
)
stubUtils.stubTilgangskontrollTema()
- val response = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/forsendelse/init",
- HttpMethod.POST,
- HttpEntity(
- InitalizeForsendelseRequest(
- saksnummer = SAKSNUMMER,
- enhet = BidragEnhet.ENHET_FARSKAP,
- behandlingInfo = BehandlingInfoDto(
- soknadId = SOKNAD_ID,
- stonadType = StonadType.FORSKUDD,
- vedtakId = 1,
- ),
- roller = listOf(
- ROLLE_BM,
- ROLLE_BP,
- ROLLE_BA_1,
+ val response =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/forsendelse/init",
+ HttpMethod.POST,
+ HttpEntity(
+ InitalizeForsendelseRequest(
+ saksnummer = SAKSNUMMER,
+ enhet = BidragEnhet.ENHET_FARSKAP,
+ behandlingInfo =
+ BehandlingInfoDto(
+ soknadId = SOKNAD_ID,
+ stonadType = StonadType.FORSKUDD,
+ vedtakId = 1,
+ ),
+ roller =
+ listOf(
+ ROLLE_BM,
+ ROLLE_BP,
+ ROLLE_BA_1,
+ ),
),
),
- ),
- List::class.java,
- )
+ List::class.java,
+ )
response.statusCode shouldBe HttpStatus.OK
response.body shouldBe listOf(forsendelseId)
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt
index 4061a3f48..b6ae8056b 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt
@@ -1,21 +1,37 @@
package no.nav.bidrag.behandling.controller
+import io.kotest.assertions.assertSoftly
+import io.kotest.matchers.ints.shouldBeExactly
+import io.kotest.matchers.shouldBe
+import io.kotest.matchers.shouldNotBe
+import jakarta.persistence.EntityManager
import no.nav.bidrag.behandling.database.datamodell.Behandling
import no.nav.bidrag.behandling.database.datamodell.BehandlingType
+import no.nav.bidrag.behandling.database.datamodell.Inntekt
+import no.nav.bidrag.behandling.database.datamodell.InntektPostDomain
import no.nav.bidrag.behandling.database.datamodell.SoknadFraType
import no.nav.bidrag.behandling.database.datamodell.SoknadType
import no.nav.bidrag.behandling.database.repository.BehandlingRepository
import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto
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.transport.behandling.inntekt.response.InntektPost
+import org.hibernate.engine.spi.SessionImplementor
+import org.hibernate.resource.transaction.spi.TransactionStatus
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.DisplayName
+import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpEntity
import org.springframework.http.HttpMethod
import org.springframework.http.HttpStatus
+import org.springframework.transaction.annotation.Transactional
import java.math.BigDecimal
-import java.util.Date
+import java.time.LocalDate
+import java.util.*
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
@@ -40,9 +56,215 @@ class InntekterControllerTest : KontrollerTestRunner() {
@Autowired
lateinit var behandlingRepository: BehandlingRepository
- @Test
- fun `skal opprette og oppdatere inntekter`() {
- // 1. Create new behandling
+ @Autowired
+ lateinit var behandlingService: BehandlingService
+
+ @Autowired
+ lateinit var entityManager: EntityManager
+
+ @BeforeEach
+ fun oppsett() {
+ behandlingRepository.deleteAll()
+ }
+
+ @Nested
+ @DisplayName("Tester endepunkt for henting av inntekter")
+ open inner class HenteInntekter {
+
+ @Test
+ fun `skal hente inntekter for behandling`() {
+ // given
+ var behandling = behandling()
+
+ var inntekt = inntekt(behandling)
+ inntekt.inntektPostListe = inntektsposter(inntekt)
+ behandling.inntekter = setOf(inntekt).toMutableSet()
+ behandlingRepository.save(behandling)
+
+ var lagretBehandlingMedInntekter = behandlingRepository.findAll().iterator().next()
+
+ // when
+ val r1 = httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ InntekterResponse::class.java,
+ )
+
+ // then
+ assertSoftly {
+ r1 shouldNotBe null
+ r1.statusCode shouldBe HttpStatus.OK
+ r1.body shouldNotBe null
+ r1.body!!.inntekter.size shouldBeExactly 1
+ }
+ }
+
+ @Test
+ fun `skal returnere tom liste av inntekter for behandling som mangler inntekter`() {
+ // given
+ var behandling = behandling()
+
+ behandlingRepository.save(behandling)
+
+ var lagretBehandlingUtenInntekter = behandlingRepository.findAll().iterator().next()
+
+ // when
+ val r1 = httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ InntekterResponse::class.java,
+ )
+
+ // then
+ assertSoftly {
+ r1 shouldNotBe null
+ r1.statusCode shouldBe HttpStatus.OK
+ r1.body shouldNotBe null
+ r1.body!!.inntekter.size shouldBeExactly 0
+ }
+ }
+ }
+
+ @Nested
+ @DisplayName("Tester endepunkt for oppdatering av inntekter")
+ open inner class OppdatereInntekter {
+
+ @Test
+ @Transactional
+ open fun `skal opprette inntekter`() {
+ // given
+ lagreBehandlingIEgenTransaksjon(false)
+ var lagretBehandlingUtenInntekter = behandlingRepository.findAll().iterator().next()
+
+ assert(lagretBehandlingUtenInntekter.inntekter.size == 0)
+
+ val inn = testInntektDto()
+
+ // when
+ val r = httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter",
+ HttpMethod.PUT,
+ HttpEntity(TestInntektRequest(setOf(inn), emptySet(), emptySet())),
+ InntekterResponse::class.java,
+ )
+
+ // then
+ assertEquals(HttpStatus.OK, r.statusCode)
+ assertEquals(1, r.body!!.inntekter.size)
+ }
+
+ @Test
+ @Transactional
+ open fun `skal oppdatere eksisterende inntekter`() {
+ // given
+ lagreBehandlingIEgenTransaksjon(true)
+ var lagretBehandlingMedInntekter = behandlingRepository.findAll().iterator().next()
+
+ assert(lagretBehandlingMedInntekter.inntekter.size > 0)
+
+ // when
+ val inntekt1 = testInntektDto().copy(
+ id = null,
+ inntektPostListe = setOf(
+ InntektPost("ABC1", "ABC1", BigDecimal.TEN),
+ InntektPost("ABC2", "ABC2", BigDecimal.TEN),
+ ),
+ )
+
+ val inntekt2 = testInntektDto().copy(datoFom = null, inntektType = "null")
+
+ val r1 = httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter",
+ HttpMethod.PUT,
+ HttpEntity(TestInntektRequest(setOf(inntekt1, inntekt2), setOf(), setOf())),
+ InntekterResponse::class.java,
+ )
+
+ // then
+ assertEquals(HttpStatus.OK, r1.statusCode)
+ assertEquals(2, r1.body!!.inntekter.size)
+ assertNotNull(r1.body!!.inntekter.find { it.inntektType == "some0" && it.inntektPostListe.size == 2 })
+ assertNotNull(r1.body!!.inntekter.find { it.inntektType == "null" && it.inntektPostListe.size == 1 })
+ }
+
+ @Test
+ @Transactional
+ open fun `skal slette inntekter`() {
+ // given
+ lagreBehandlingIEgenTransaksjon(true)
+ var lagretBehandlingMedInntekter = behandlingRepository.findAll().iterator().next()
+
+ assert(lagretBehandlingMedInntekter.inntekter.size > 0)
+
+ // when
+ val r = httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter",
+ HttpMethod.PUT,
+ HttpEntity(TestInntektRequest(emptySet(), emptySet(), emptySet())),
+ InntekterResponse::class.java,
+ )
+
+ // then
+ assertEquals(HttpStatus.OK, r.statusCode)
+ assertEquals(0, r.body!!.inntekter.size)
+ }
+ }
+
+ private fun lagreBehandlingIEgenTransaksjon(inkludereInntekter: Boolean) {
+ val sessionImplementor = entityManager.delegate as SessionImplementor
+ var transaction = sessionImplementor.transaction
+
+ var transactionStatus = transaction.status
+ if (TransactionStatus.NOT_ACTIVE == transactionStatus) {
+ transaction.begin()
+ }
+
+ var behandling = behandling()
+
+ if (inkludereInntekter) {
+ var inntekt = inntekt(behandling)
+ inntekt.inntektPostListe = inntektsposter(inntekt)
+ behandling.inntekter = setOf(inntekt).toMutableSet()
+ }
+
+ entityManager?.persist(behandling)
+ transaction.commit()
+ }
+
+ private fun inntekt(behandling: Behandling) = Inntekt(
+ "INNTEKTSOPPLYSNINGER_ARBEIDSGIVER",
+ BigDecimal.valueOf(45000),
+ LocalDate.now().minusYears(1).withDayOfYear(1).toDate(),
+ LocalDate.now().minusYears(1).withMonth(12).withDayOfMonth(31).toDate(),
+ "1234",
+ true,
+ true,
+ behandling = behandling,
+ )
+
+ private fun inntektsposter(inntekt: Inntekt): MutableSet = setOf(
+ InntektPostDomain(
+ BigDecimal.valueOf(400000),
+ "lønnFraFluefiske",
+ "Lønn fra fluefiske",
+ inntekt = inntekt,
+ ),
+ ).toMutableSet()
+
+ private fun testInntektDto() = TestInntektDto(
+ null,
+ true,
+ "some0",
+ "1.123",
+ "2022-10-10",
+ "2022-10-10",
+ "blablabla",
+ setOf(InntektPost("ABC", "ABC", BigDecimal.TEN)),
+ )
+
+ private fun behandling(): Behandling {
val behandling: Behandling = behandlingRepository.save(
Behandling(
BehandlingType.FORSKUDD,
@@ -59,46 +281,8 @@ class InntekterControllerTest : KontrollerTestRunner() {
null,
),
)
-
- val inn = TestInntektDto(null, true, "some0", "1.123", "2022-10-10", "2022-10-10", "blablabla", setOf(InntektPost("ABC", "ABC", BigDecimal.TEN)))
-// val inn1 = TestInntektDto(null, true, "some1", "1.123", "2022-10-10", "2022-10-10", "blablabla", setOf(InntektPost("ABC1", "ABC1", BigDecimal.TEN), InntektPost("ABC2", "ABC2", BigDecimal.TEN)))
-
- // 2. Add inntekter
- val r = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling/${behandling.id}/inntekter",
- HttpMethod.PUT,
- HttpEntity(TestInntektRequest(setOf(inn), emptySet(), emptySet())),
- InntekterResponse::class.java,
- )
-
- assertEquals(HttpStatus.OK, r.statusCode)
- assertEquals(1, r.body!!.inntekter.size)
-
- // 3. Add some more inntekter
- val inntekt1 = inn.copy(id = r.body!!.inntekter.iterator().next().id, inntektPostListe = setOf(InntektPost("ABC1", "ABC1", BigDecimal.TEN), InntektPost("ABC2", "ABC2", BigDecimal.TEN)))
- val inntekt2 = inn.copy(datoFom = null, inntektType = "null")
-
- val r1 = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling/${behandling.id}/inntekter",
- HttpMethod.PUT,
- HttpEntity(TestInntektRequest(setOf(inntekt1, inntekt2), setOf(), setOf())),
- InntekterResponse::class.java,
- )
-
- assertEquals(HttpStatus.OK, r.statusCode)
- assertEquals(2, r1.body!!.inntekter.size)
- assertNotNull(r1.body!!.inntekter.find { it.inntektType == "some0" && it.inntektPostListe.size == 2 })
- assertNotNull(r1.body!!.inntekter.find { it.inntektType == "null" && it.inntektPostListe.size == 1 })
-
- // 4. Remove inntekter
- val r2 = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling/${behandling.id}/inntekter",
- HttpMethod.PUT,
- HttpEntity(TestInntektRequest(emptySet(), emptySet(), emptySet())),
- InntekterResponse::class.java,
- )
-
- assertEquals(HttpStatus.OK, r.statusCode)
- assertEquals(0, r2.body!!.inntekter.size)
+ return behandling
}
+
+ fun createBehandling(): Behandling = behandlingService.createBehandling(behandling())
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt
index 39e334429..60c314ca6 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt
@@ -16,6 +16,7 @@ abstract class KontrollerTestRunner : CommonTestRunner() {
lateinit var httpHeaderTestRestTemplate: HttpHeaderTestRestTemplate
val stubUtils: StubUtils = StubUtils()
+
protected fun rootUri(): String {
return "http://localhost:$port/api/"
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt
index 2d6dcb385..0744a08bc 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt
@@ -21,17 +21,23 @@ data class AddOpplysningerRequest(
)
class OpplysningerControllerTest : KontrollerTestRunner() {
-
@Test
fun `skal opprette og oppdatere opplysninger`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller)
// 1. Create new behandling
- val behandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling", HttpMethod.POST, HttpEntity(testBehandlingMedNull), CreateBehandlingResponse::class.java)
+ val behandling =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ CreateBehandlingResponse::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, behandling.statusCode)
val behandlingId = behandling.body!!.id
@@ -41,7 +47,13 @@ class OpplysningerControllerTest : KontrollerTestRunner() {
skalOppretteOpplysninger(behandlingId, "opp1", true, OpplysningerType.BOFORHOLD)
// 3. Assert that opp1 is active
- val oppAktivResult1 = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/$behandlingId/opplysninger/BOFORHOLD/aktiv", HttpMethod.GET, HttpEntity.EMPTY, OpplysningerDto::class.java)
+ val oppAktivResult1 =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/$behandlingId/opplysninger/BOFORHOLD/aktiv",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ OpplysningerDto::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, oppAktivResult1.statusCode)
Assertions.assertEquals(behandlingId, oppAktivResult1.body!!.behandlingId)
Assertions.assertEquals("opp1", oppAktivResult1.body!!.data)
@@ -49,14 +61,21 @@ class OpplysningerControllerTest : KontrollerTestRunner() {
@Test
fun `skal ikke være mulig å opprette flere aktive opplysninger`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller)
// 1. Create new behandling
- val behandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling", HttpMethod.POST, HttpEntity(testBehandlingMedNull), CreateBehandlingResponse::class.java)
+ val behandling =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ CreateBehandlingResponse::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, behandling.statusCode)
val behandlingId = behandling.body!!.id
@@ -66,7 +85,13 @@ class OpplysningerControllerTest : KontrollerTestRunner() {
skalOppretteOpplysninger(behandlingId, "opp1", true, OpplysningerType.BOFORHOLD)
// 3. Assert that opp1 is active
- val oppAktivResult1 = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/$behandlingId/opplysninger/BOFORHOLD/aktiv", HttpMethod.GET, HttpEntity.EMPTY, OpplysningerDto::class.java)
+ val oppAktivResult1 =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/$behandlingId/opplysninger/BOFORHOLD/aktiv",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ OpplysningerDto::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, oppAktivResult1.statusCode)
Assertions.assertEquals(behandlingId, oppAktivResult1.body!!.behandlingId)
Assertions.assertEquals("opp1", oppAktivResult1.body!!.data)
@@ -74,44 +99,76 @@ class OpplysningerControllerTest : KontrollerTestRunner() {
@Test
fun `skal returnere 404 ved ugyldig behandling id`() {
- val r = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/1232132/opplysninger/${OpplysningerType.BOFORHOLD.name}/aktiv", HttpMethod.GET, HttpEntity.EMPTY, OpplysningerDto::class.java)
+ val r =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/1232132/opplysninger/${OpplysningerType.BOFORHOLD.name}/aktiv",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ OpplysningerDto::class.java,
+ )
Assertions.assertEquals(HttpStatus.NOT_FOUND, r.statusCode)
}
@Test
fun `skal returnere 404 hvis opplysninger ikke eksisterer for en gitt behandling`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller)
// 1. Create new behandling
- val behandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling", HttpMethod.POST, HttpEntity(testBehandlingMedNull), CreateBehandlingResponse::class.java)
+ val behandling =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ CreateBehandlingResponse::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, behandling.statusCode)
// 2. Check
- val r = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/${behandling.body!!.id}/opplysninger/${OpplysningerType.BOFORHOLD.name}/aktiv", HttpMethod.GET, HttpEntity.EMPTY, OpplysningerDto::class.java)
+ val r =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${behandling.body!!.id}/opplysninger/${OpplysningerType.BOFORHOLD.name}/aktiv",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ OpplysningerDto::class.java,
+ )
Assertions.assertEquals(HttpStatus.NOT_FOUND, r.statusCode)
}
@Test
@Ignore // Må fikses i validerings logikken
fun `skal returnere 400 ved ugyldig type`() {
- val r = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/1232132/opplysninger/ERROR/aktiv", HttpMethod.GET, HttpEntity.EMPTY, OpplysningerDto::class.java)
+ val r =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/1232132/opplysninger/ERROR/aktiv",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ OpplysningerDto::class.java,
+ )
Assertions.assertEquals(HttpStatus.BAD_REQUEST, r.statusCode)
}
@Test
fun `skal opprette og oppdatere opplysninger1`() {
- val roller = setOf(
- CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
- CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
- )
+ val roller =
+ setOf(
+ CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)),
+ CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)),
+ )
val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller)
// 1. Create new behandling
- val behandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling", HttpMethod.POST, HttpEntity(testBehandlingMedNull), CreateBehandlingResponse::class.java)
+ val behandling =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling",
+ HttpMethod.POST,
+ HttpEntity(testBehandlingMedNull),
+ CreateBehandlingResponse::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, behandling.statusCode)
val behandlingId = behandling.body!!.id
@@ -123,13 +180,25 @@ class OpplysningerControllerTest : KontrollerTestRunner() {
skalOppretteOpplysninger(behandlingId, "inn1", false, OpplysningerType.INNTEKTSOPPLYSNINGER)
// 3. Assert that opp1 is active
- val oppAktivResult1 = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/$behandlingId/opplysninger/${OpplysningerType.BOFORHOLD.name}/aktiv", HttpMethod.GET, HttpEntity.EMPTY, OpplysningerDto::class.java)
+ val oppAktivResult1 =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/$behandlingId/opplysninger/${OpplysningerType.BOFORHOLD.name}/aktiv",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ OpplysningerDto::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, oppAktivResult1.statusCode)
Assertions.assertEquals(behandlingId, oppAktivResult1.body!!.behandlingId)
Assertions.assertEquals("opp1", oppAktivResult1.body!!.data)
// 4. Assert that inn1 is active
- val oppAktivResult2 = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/$behandlingId/opplysninger/${OpplysningerType.INNTEKTSOPPLYSNINGER.name}/aktiv", HttpMethod.GET, HttpEntity.EMPTY, OpplysningerDto::class.java)
+ val oppAktivResult2 =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/$behandlingId/opplysninger/${OpplysningerType.INNTEKTSOPPLYSNINGER.name}/aktiv",
+ HttpMethod.GET,
+ HttpEntity.EMPTY,
+ OpplysningerDto::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, oppAktivResult2.statusCode)
Assertions.assertEquals(behandlingId, oppAktivResult2.body!!.behandlingId)
Assertions.assertEquals("inn1", oppAktivResult2.body!!.data)
@@ -143,12 +212,13 @@ class OpplysningerControllerTest : KontrollerTestRunner() {
): OpplysningerDto {
val opplysninger = createOpplysninger(behandlingId, data, aktiv, opplysningerType)
- val opp = httpHeaderTestRestTemplate.exchange(
- "${rootUri()}/behandling/$behandlingId/opplysninger",
- HttpMethod.POST,
- HttpEntity(opplysninger),
- OpplysningerDto::class.java,
- )
+ val opp =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/$behandlingId/opplysninger",
+ HttpMethod.POST,
+ HttpEntity(opplysninger),
+ OpplysningerDto::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, opp.statusCode)
val body = opp.body!!
@@ -157,7 +227,12 @@ class OpplysningerControllerTest : KontrollerTestRunner() {
return body
}
- private fun createOpplysninger(behandlingId: Long, data: String, aktiv: Boolean, opplysningerType: OpplysningerType): AddOpplysningerRequest {
+ private fun createOpplysninger(
+ behandlingId: Long,
+ data: String,
+ aktiv: Boolean,
+ opplysningerType: OpplysningerType,
+ ): AddOpplysningerRequest {
val opplysninger =
AddOpplysningerRequest(behandlingId, aktiv, opplysningerType, data, "2025-02-01")
return opplysninger
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktControllerTest.kt
index ade240e25..01af8f376 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktControllerTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktControllerTest.kt
@@ -19,14 +19,21 @@ class VirkningsTidspunktControllerTest : KontrollerTestRunner() {
fun `skal oppdatere virknings tidspunkt data`() {
val behandling = behandlingService.createBehandling(BehandlingServiceTest.prepareBehandling())
- val req = UpdateVirkningsTidspunktRequestTest(
- "MED I VEDTAK",
- "KUN I NOTAT",
- ForskuddAarsakType.KF,
- "2025-12-27",
- )
+ val req =
+ UpdateVirkningsTidspunktRequestTest(
+ "MED I VEDTAK",
+ "KUN I NOTAT",
+ ForskuddAarsakType.KF,
+ "2025-12-27",
+ )
- val virknsRes = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/${behandling.id}/virkningstidspunkt", HttpMethod.PUT, HttpEntity(req), VirkningsTidspunktResponse::class.java)
+ val virknsRes =
+ httpHeaderTestRestTemplate.exchange(
+ "${rootUri()}/behandling/${behandling.id}/virkningstidspunkt",
+ HttpMethod.PUT,
+ HttpEntity(req),
+ VirkningsTidspunktResponse::class.java,
+ )
Assertions.assertEquals(HttpStatus.OK, virknsRes.statusCode)
val body = virknsRes.body!!
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt
index a4d782fec..9b66c8d2e 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt
@@ -56,16 +56,23 @@ class VedtakHendelseTest : CommonTestRunner() {
val behandlingRequest = opprettBehandling()
behandlingRequest.roller = opprettBehandlingRoller(behandlingRequest)
val behandling = behandlingRepository.save(behandlingRequest)
- vedtakHendelseListener.prossesserVedtakHendelse(opprettHendelseRecord(opprettVedtakhendelse(vedtakId, behandling.id!!)))
+ vedtakHendelseListener.prossesserVedtakHendelse(
+ opprettHendelseRecord(
+ opprettVedtakhendelse(
+ vedtakId,
+ behandling.id!!,
+ ),
+ ),
+ )
val oppdatertBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get()
oppdatertBehandling.vedtakId shouldBe vedtakId
stubUtils.Verify().opprettForsendelseKaltAntallGanger(3)
stubUtils.Verify()
- .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BM.fødselsnummer.verdi}\"")
+ .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BM.fødselsnummer?.verdi}\"")
stubUtils.Verify()
- .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BP.fødselsnummer.verdi}\"")
+ .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BP.fødselsnummer?.verdi}\"")
stubUtils.Verify()
- .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BA_1.fødselsnummer.verdi}\"")
+ .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BA_1.fødselsnummer?.verdi}\"")
stubUtils.Verify().forsendelseHentetForSak(SAKSNUMMER)
stubUtils.Verify().forsendelseSlettet("1")
stubUtils.Verify().forsendelseSlettet("2")
@@ -78,7 +85,8 @@ class VedtakHendelseTest : CommonTestRunner() {
val behandlingRequest = opprettBehandling()
behandlingRequest.roller = opprettBehandlingRoller(behandlingRequest)
val behandling = behandlingRepository.save(behandlingRequest)
- val vedtakHendelse = opprettVedtakhendelse(vedtakId, behandling.id!!, stonadType = StonadType.FORSKUDD)
+ val vedtakHendelse =
+ opprettVedtakhendelse(vedtakId, behandling.id!!, stonadType = StonadType.FORSKUDD)
vedtakHendelseListener.prossesserVedtakHendelse(opprettHendelseRecord(vedtakHendelse))
val oppdatertBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get()
oppdatertBehandling.vedtakId shouldBe vedtakId
@@ -94,6 +102,7 @@ class VedtakHendelseTest : CommonTestRunner() {
"",
stubUtils.toJsonString(vedtakHendelse),
)
+
private fun opprettBehandling() = Behandling(
datoFom = Date(),
datoTom = Date(),
@@ -132,7 +141,11 @@ class VedtakHendelseTest : CommonTestRunner() {
),
)
- private fun opprettVedtakhendelse(vedtakId: Int, behandlingId: Long, stonadType: StonadType = StonadType.BIDRAG18AAR): VedtakHendelse {
+ private fun opprettVedtakhendelse(
+ vedtakId: Int,
+ behandlingId: Long,
+ stonadType: StonadType = StonadType.BIDRAG18AAR,
+ ): VedtakHendelse {
return VedtakHendelse(
type = VedtakType.FASTSETTELSE,
stonadsendringListe = listOf(
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt
index c0f32922d..85bd37e7f 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt
@@ -1,5 +1,7 @@
package no.nav.bidrag.behandling.service
+import jakarta.persistence.EntityManager
+import jakarta.persistence.PersistenceContext
import no.nav.bidrag.behandling.TestContainerRunner
import no.nav.bidrag.behandling.database.datamodell.Barnetillegg
import no.nav.bidrag.behandling.database.datamodell.Behandling
@@ -11,6 +13,9 @@ import no.nav.bidrag.behandling.database.datamodell.SivilstandType
import no.nav.bidrag.behandling.database.datamodell.SoknadFraType
import no.nav.bidrag.behandling.database.datamodell.SoknadType
import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd
+import no.nav.bidrag.behandling.database.repository.BehandlingRepository
+import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto
+import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType
import no.nav.bidrag.behandling.dto.behandling.SivilstandDto
import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnDto
import no.nav.bidrag.behandling.transformers.toDomain
@@ -21,319 +26,449 @@ import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Assertions.assertNull
+import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.transaction.annotation.Transactional
import org.springframework.web.client.HttpClientErrorException
import java.math.BigDecimal
import java.util.Calendar
+import java.util.Date
class BehandlingServiceTest : TestContainerRunner() {
@Autowired
lateinit var behandlingService: BehandlingService
- @Test
- fun `skal opprette en behandling`() {
- val actualBehandling = createBehandling()
+ @Autowired
+ lateinit var behandlingRepository: BehandlingRepository
+
+ @PersistenceContext
+ lateinit var entityManager: EntityManager
+
+ @Nested
+ open inner class HenteBehandling {
+ @Test
+ fun `skal caste 404 exception hvis behandlingen ikke er der`() {
+ Assertions.assertThrows(HttpClientErrorException::class.java) {
+ behandlingService.hentBehandlingById(1234)
+ }
+ }
+ }
- assertNotNull(actualBehandling.id)
- assertEquals(BehandlingType.FORSKUDD, actualBehandling.behandlingType)
- assertEquals(3, actualBehandling.roller.size)
+ @Nested
+ open inner class OppretteBehandling {
+ @Test
+ fun `skal opprette en forskuddsbehandling`() {
+ val actualBehandling = createBehandling()
- val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!)
+ assertNotNull(actualBehandling.id)
+ assertEquals(BehandlingType.FORSKUDD, actualBehandling.behandlingType)
+ assertEquals(3, actualBehandling.roller.size)
- assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType)
- assertEquals(3, actualBehandlingFetched.roller.size)
- assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato)
- }
+ val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!)
- @Test
- fun `skal opprette en behandling med inntekter`() {
- val behandling = prepareBehandling()
+ assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType)
+ assertEquals(3, actualBehandlingFetched.roller.size)
+ assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato)
+ }
- behandling.inntekter = mutableSetOf(Inntekt(behandling, true, "", BigDecimal.valueOf(555.55), null, null, "ident", true))
+ @Test
+ fun `skal opprette en behandling med inntekter`() {
+ val behandling = prepareBehandling()
- val actualBehandling = behandlingService.createBehandling(behandling)
+ behandling.inntekter = mutableSetOf(Inntekt("", BigDecimal.valueOf(555.55), null, null, "ident", true, true, behandling = behandling))
- assertNotNull(actualBehandling.id)
+ val actualBehandling = behandlingService.createBehandling(behandling)
- val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!)
+ assertNotNull(actualBehandling.id)
- assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType)
- assertEquals(1, actualBehandlingFetched.inntekter.size)
- assertEquals(BigDecimal.valueOf(555.55), actualBehandlingFetched.inntekter.iterator().next().belop)
- }
+ val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!)
- companion object {
- fun prepareBehandling(): Behandling {
- val behandling = Behandling(
- BehandlingType.FORSKUDD,
- SoknadType.FASTSETTELSE,
- Calendar.getInstance().time,
- Calendar.getInstance().time,
- Calendar.getInstance().time,
- "1234",
- 123213L,
- null,
- "1234",
- SoknadFraType.BIDRAGSMOTTAKER,
- null,
- null,
- )
- val createRoller = prepareRoles(behandling)
- val roller = HashSet(
- createRoller.map {
- Rolle(
- behandling,
- it.rolleType,
- it.ident,
- it.fodtDato,
- it.opprettetDato,
- )
- },
+ assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType)
+ assertEquals(1, actualBehandlingFetched.inntekter.size)
+ assertEquals(BigDecimal.valueOf(555.55), actualBehandlingFetched.inntekter.iterator().next().belop)
+ }
+
+ @Test
+ fun `skal oppdatere boforhold data`() {
+ val behandling = prepareBehandling()
+
+ val NOTAT = "New Notat"
+ val MED_I_VEDTAK = "med i vedtak"
+
+ val createdBehandling = behandlingService.createBehandling(behandling)
+
+ assertNotNull(createdBehandling.id)
+ assertNull(createdBehandling.aarsak)
+ assertEquals(0, createdBehandling.husstandsBarn.size)
+ assertEquals(0, createdBehandling.sivilstand.size)
+
+ val husstandsBarn = setOf(HusstandsBarnDto(null, true, emptySet(), "Manuelt", "ident!"))
+ val sivilstand =
+ setOf(
+ SivilstandDto(
+ null,
+ Calendar.getInstance().time.toLocalDate(),
+ Calendar.getInstance().time.toLocalDate(),
+ SivilstandType.ENKE_ELLER_ENKEMANN,
+ ),
+ )
+
+ behandlingService.updateBoforhold(
+ createdBehandling.id!!,
+ husstandsBarn.toDomain(createdBehandling),
+ sivilstand.toSivilstandDomain(createdBehandling),
+ NOTAT,
+ MED_I_VEDTAK,
)
- behandling.roller.addAll(roller)
- return behandling
+ val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!)
+
+ assertEquals(1, updatedBehandling.husstandsBarn.size)
+ assertEquals(1, updatedBehandling.sivilstand.size)
+ assertEquals(NOTAT, updatedBehandling.boforholdBegrunnelseKunINotat)
+ assertEquals(MED_I_VEDTAK, updatedBehandling.boforholdBegrunnelseMedIVedtakNotat)
}
- fun prepareRoles(behandling: Behandling): Set {
- val someDate = Calendar.getInstance().time
- return setOf(
- Rolle(behandling, Rolletype.BIDRAGSMOTTAKER, "123344", someDate, someDate),
- Rolle(behandling, Rolletype.BIDRAGSPLIKTIG, "44332211", someDate, someDate),
- Rolle(behandling, Rolletype.BARN, "1111", someDate, someDate),
+ @Test
+ fun `skal oppdatere virkningstidspunkt data`() {
+ val behandling = prepareBehandling()
+
+ val NOTAT = "New Notat"
+ val MED_I_VEDTAK = "med i vedtak"
+
+ val createdBehandling = behandlingService.createBehandling(behandling)
+
+ assertNotNull(createdBehandling.id)
+ assertNull(createdBehandling.aarsak)
+
+ behandlingService.updateVirkningsTidspunkt(
+ createdBehandling.id!!,
+ ForskuddAarsakType.BF,
+ null,
+ NOTAT,
+ MED_I_VEDTAK,
)
+
+ val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!)
+
+ assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak)
+ assertEquals(NOTAT, updatedBehandling.virkningsTidspunktBegrunnelseKunINotat)
+ assertEquals(MED_I_VEDTAK, updatedBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat)
}
}
- @Test
- fun `skal legge til inntekter`() {
- val actualBehandling = createBehandling()
-
- assertNotNull(actualBehandling.id)
-
- assertEquals(0, actualBehandling.inntekter.size)
- assertEquals(0, actualBehandling.barnetillegg.size)
- assertEquals(0, actualBehandling.utvidetbarnetrygd.size)
- assertNull(actualBehandling.inntektBegrunnelseMedIVedtakNotat)
- assertNull(actualBehandling.inntektBegrunnelseKunINotat)
-
- behandlingService.oppdaterInntekter(
- actualBehandling.id!!,
- mutableSetOf(
- Inntekt(
- actualBehandling,
- true,
- "",
- BigDecimal.valueOf(1.111),
- Calendar.getInstance().time,
- Calendar.getInstance().time,
- "ident",
- true,
+ @Nested
+ open inner class SletteBehandling {
+ @Test
+ fun `delete behandling`() {
+ val behandling = createBehandling()
+ behandlingService.deleteBehandlingById(behandling.id!!)
+
+ Assertions.assertThrows(HttpClientErrorException::class.java) {
+ behandlingService.hentBehandlingById(behandling.id!!)
+ }
+ }
+ }
+
+ @Nested
+ open inner class SynkronisereRoller {
+ @Test
+ fun `legge til flere roller`() {
+ val b = createBehandling()
+
+ behandlingService.syncRoller(
+ b.id!!,
+ listOf(
+ CreateRolleDto(
+ CreateRolleRolleType.BARN,
+ "newident",
+ Date(1),
+ Date(2),
+ ),
),
- ),
- mutableSetOf(
- Barnetillegg(
- actualBehandling,
- "ident",
- BigDecimal.ONE,
- Calendar.getInstance().time,
- Calendar.getInstance().time,
+ )
+
+ assertEquals(4, behandlingService.hentBehandlingById(b.id!!).roller.size)
+ }
+
+ @Test
+ fun `behandling må synce roller og slette behandling`() {
+ val b = createBehandling()
+ behandlingService.syncRoller(
+ b.id!!,
+ listOf(
+ CreateRolleDto(CreateRolleRolleType.BARN, "1111", Date(1), Date(2), true),
),
- ),
- mutableSetOf(
- Utvidetbarnetrygd(
- actualBehandling,
- true,
- BigDecimal.TEN,
- Calendar.getInstance().time,
- Calendar.getInstance().time,
+ )
+
+ Assertions.assertThrows(HttpClientErrorException::class.java) {
+ behandlingService.hentBehandlingById(b.id!!)
+ }
+ }
+
+ @Test
+ fun `behandling må synce roller`() {
+ val b = createBehandling()
+ behandlingService.syncRoller(
+ b.id!!,
+ listOf(
+ CreateRolleDto(CreateRolleRolleType.BARN, "1111", Date(1), Date(2), true),
+ CreateRolleDto(CreateRolleRolleType.BARN, "111123", Date(1), Date(2)),
+ CreateRolleDto(CreateRolleRolleType.BARN, "1111234", Date(1), Date(2)),
),
- ),
- "Med i Vedtaket",
- "Kun i Notat",
- )
-
- val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!)
-
- assertEquals(1, expectedBehandling.inntekter.size)
- assertEquals(1, expectedBehandling.barnetillegg.size)
- assertEquals(1, expectedBehandling.utvidetbarnetrygd.size)
- assertEquals("Med i Vedtaket", expectedBehandling.inntektBegrunnelseMedIVedtakNotat)
- assertEquals("Kun i Notat", expectedBehandling.inntektBegrunnelseKunINotat)
+ )
+
+ assertEquals(2, behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolleType == Rolletype.BARN }.size)
+ }
}
- @Test
- fun `skal slette inntekter`() {
- val actualBehandling = createBehandling()
-
- assertNotNull(actualBehandling.id)
-
- assertEquals(0, actualBehandling.inntekter.size)
- assertEquals(0, actualBehandling.barnetillegg.size)
- assertEquals(0, actualBehandling.utvidetbarnetrygd.size)
-
- behandlingService.oppdaterInntekter(
- actualBehandling.id!!,
- mutableSetOf(
- Inntekt(
- actualBehandling,
- true,
- "",
- BigDecimal.valueOf(1.111),
- Calendar.getInstance().time,
- Calendar.getInstance().time,
- "ident",
- true,
- ),
- ),
- mutableSetOf(
- Barnetillegg(
- actualBehandling,
- "ident",
- BigDecimal.ONE,
- Calendar.getInstance().time,
- Calendar.getInstance().time,
- ),
- ),
- mutableSetOf(),
- "null",
- "null",
- )
+ @Nested
+ open inner class OppdatereBehandling {
+ @Test
+ fun `skal caste 404 exception hvis behandlingen ikke er der - oppdater`() {
+ Assertions.assertThrows(HttpClientErrorException::class.java) {
+ behandlingService.oppdaterBehandling(1234, "New Notat", "Med i Vedtak")
+ }
+ }
- val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!)
+ @Test
+ fun `skal oppdatere en behandling`() {
+ val behandling = prepareBehandling()
- assertEquals(1, expectedBehandling.inntekter.size)
- assertEquals(1, expectedBehandling.barnetillegg.size)
- assertNotNull(expectedBehandling.inntektBegrunnelseMedIVedtakNotat)
- assertNotNull(expectedBehandling.inntektBegrunnelseKunINotat)
+ val NOTAT = "New Notat"
+ val MED_I_VEDTAK = "med i vedtak"
- behandlingService.oppdaterInntekter(actualBehandling.id!!, mutableSetOf(), expectedBehandling.barnetillegg, mutableSetOf(), null, null)
+ val createdBehandling = behandlingService.createBehandling(behandling)
- val expectedBehandlingWithoutInntekter = behandlingService.hentBehandlingById(actualBehandling.id!!)
+ assertNotNull(createdBehandling.id)
+ assertNull(createdBehandling.aarsak)
- assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size)
- assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size)
- assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseMedIVedtakNotat)
- assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseKunINotat)
- }
+ val oppdatertBehandling =
+ behandlingService.oppdaterBehandling(
+ createdBehandling.id!!,
+ MED_I_VEDTAK,
+ NOTAT,
+ MED_I_VEDTAK,
+ NOTAT,
+ MED_I_VEDTAK,
+ NOTAT,
+ )
- @Test
- fun `skal caste 404 exception hvis behandlingen ikke er der`() {
- Assertions.assertThrows(HttpClientErrorException::class.java) {
- behandlingService.hentBehandlingById(1234)
+ val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!)
+
+ assertEquals(3, hentBehandlingById.roller.size)
+ assertEquals(NOTAT, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat)
+ assertEquals(MED_I_VEDTAK, oppdatertBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat)
}
- }
- @Test
- fun `skal caste 404 exception hvis behandlingen ikke er der - oppdater`() {
- Assertions.assertThrows(HttpClientErrorException::class.java) {
- behandlingService.oppdaterBehandling(1234, "New Notat", "Med i Vedtak")
+ @Test
+ fun `skal opprette en behandling med grunnlagspakkeId`() {
+ val b = createBehandling()
+
+ behandlingService.updateBehandling(b.id!!, 123L)
+
+ assertEquals(123L, behandlingService.hentBehandlingById(b.id!!).grunnlagspakkeId)
}
}
- @Test
- fun `skal oppdatere en behandling`() {
- val behandling = prepareBehandling()
+ @Nested
+ open inner class OppdatereInntekter {
+ @Test
+ fun `skal legge til inntekter`() {
+ val actualBehandling = createBehandling()
+
+ assertNotNull(actualBehandling.id)
+
+ assertEquals(0, actualBehandling.inntekter.size)
+ assertEquals(0, actualBehandling.barnetillegg.size)
+ assertEquals(0, actualBehandling.utvidetbarnetrygd.size)
+ assertNull(actualBehandling.inntektBegrunnelseMedIVedtakNotat)
+ assertNull(actualBehandling.inntektBegrunnelseKunINotat)
+
+ behandlingService.oppdaterInntekter(
+ actualBehandling.id!!,
+ mutableSetOf(
+ Inntekt(
+ "",
+ BigDecimal.valueOf(1.111),
+ Calendar.getInstance().time,
+ Calendar.getInstance().time,
+ "ident",
+ true,
+ true,
+ behandling = actualBehandling,
+ ),
+ ),
+ mutableSetOf(
+ Barnetillegg(
+ actualBehandling,
+ "ident",
+ BigDecimal.ONE,
+ Calendar.getInstance().time,
+ Calendar.getInstance().time,
+ ),
+ ),
+ mutableSetOf(
+ Utvidetbarnetrygd(
+ actualBehandling,
+ true,
+ BigDecimal.TEN,
+ Calendar.getInstance().time,
+ Calendar.getInstance().time,
+ ),
+ ),
+ "Med i Vedtaket",
+ "Kun i Notat",
+ )
+
+ val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!)
- val NOTAT = "New Notat"
- val MED_I_VEDTAK = "med i vedtak"
+ assertEquals(1, expectedBehandling.inntekter.size)
+ assertEquals(1, expectedBehandling.barnetillegg.size)
+ assertEquals(1, expectedBehandling.utvidetbarnetrygd.size)
+ assertEquals("Med i Vedtaket", expectedBehandling.inntektBegrunnelseMedIVedtakNotat)
+ assertEquals("Kun i Notat", expectedBehandling.inntektBegrunnelseKunINotat)
+ }
- val createdBehandling = behandlingService.createBehandling(behandling)
+ @Test
+ @Transactional
+ open fun `skal slette inntekter`() {
+ stubUtils.stubOpprettForsendelse()
+
+ val actualBehandling = createBehandling()
+
+ assertNotNull(actualBehandling.id)
+
+ assertEquals(0, actualBehandling.inntekter.size)
+ assertEquals(0, actualBehandling.barnetillegg.size)
+ assertEquals(0, actualBehandling.utvidetbarnetrygd.size)
+
+ behandlingService.oppdaterInntekter(
+ actualBehandling.id!!,
+ mutableSetOf(
+ Inntekt(
+ "",
+ BigDecimal.valueOf(1.111),
+ Calendar.getInstance().time,
+ Calendar.getInstance().time,
+ "ident",
+ true,
+ true,
+ behandling = actualBehandling,
+ ),
+ ),
+ mutableSetOf(
+ Barnetillegg(
+ actualBehandling,
+ "ident",
+ BigDecimal.ONE,
+ Calendar.getInstance().time,
+ Calendar.getInstance().time,
+ ),
+ ),
+ mutableSetOf(),
+ "null",
+ "null",
+ )
- assertNotNull(createdBehandling.id)
- assertNull(createdBehandling.aarsak)
+ val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!)
- val oppdatertBehandling = behandlingService.oppdaterBehandling(
- createdBehandling.id!!,
- MED_I_VEDTAK,
- NOTAT,
- MED_I_VEDTAK,
- NOTAT,
- MED_I_VEDTAK,
- NOTAT,
- )
+ assertEquals(1, expectedBehandling.inntekter.size)
+ assertEquals(1, expectedBehandling.barnetillegg.size)
+ assertNotNull(expectedBehandling.inntektBegrunnelseMedIVedtakNotat)
+ assertNotNull(expectedBehandling.inntektBegrunnelseKunINotat)
- val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!)
+ behandlingService.oppdaterInntekter(
+ actualBehandling.id!!,
+ mutableSetOf(),
+ expectedBehandling.barnetillegg,
+ mutableSetOf(),
+ null,
+ null,
+ )
- assertEquals(3, hentBehandlingById.roller.size)
-// assertEquals(AvslagType.MANGL_DOK, hentBehandlingById.avslag)
+ val expectedBehandlingWithoutInntekter = behandlingService.hentBehandlingById(actualBehandling.id!!)
- assertEquals(NOTAT, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat)
- assertEquals(MED_I_VEDTAK, oppdatertBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat)
+ assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size)
+ assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size)
+ assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseMedIVedtakNotat)
+ assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseKunINotat)
+ }
}
@Test
- fun `skal oppdatere virkningstidspunkt data`() {
- val behandling = prepareBehandling()
+ fun `delete behandling rolle`() {
+ val behandling = createBehandling()
- val NOTAT = "New Notat"
- val MED_I_VEDTAK = "med i vedtak"
+ assertEquals(3, behandling.roller.size)
+ behandling.roller.removeIf { it.rolleType == Rolletype.BARN }
- val createdBehandling = behandlingService.createBehandling(behandling)
+ behandlingRepository.save(behandling)
- assertNotNull(createdBehandling.id)
- assertNull(createdBehandling.aarsak)
+ val updatedBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get()
+ assertEquals(2, updatedBehandling.roller.size)
- behandlingService.updateVirkningsTidspunkt(
- createdBehandling.id!!,
- ForskuddAarsakType.BF,
- null,
- NOTAT,
- MED_I_VEDTAK,
- )
+ val realCount =
+ entityManager.createNativeQuery("select count(*) from rolle r where r.behandling_id = " + behandling.id!!).getSingleResult()
- val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!)
+ val deletedCount =
+ entityManager.createNativeQuery(
+ "select count(*) from rolle r where r.behandling_id = " + behandling.id!! + " and r.deleted = true",
+ ).getSingleResult()
- assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak)
- assertEquals(NOTAT, updatedBehandling.virkningsTidspunktBegrunnelseKunINotat)
- assertEquals(MED_I_VEDTAK, updatedBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat)
+ assertEquals(3L, realCount)
+ assertEquals(1L, deletedCount)
}
- @Test
- fun `skal oppdatere boforhold data`() {
- val behandling = prepareBehandling()
-
- val NOTAT = "New Notat"
- val MED_I_VEDTAK = "med i vedtak"
-
- val createdBehandling = behandlingService.createBehandling(behandling)
+ companion object {
+ fun prepareBehandling(): Behandling {
+ val behandling =
+ Behandling(
+ BehandlingType.FORSKUDD,
+ SoknadType.FASTSETTELSE,
+ Calendar.getInstance().time,
+ Calendar.getInstance().time,
+ Calendar.getInstance().time,
+ "1234",
+ 123213L,
+ null,
+ "1234",
+ SoknadFraType.BIDRAGSMOTTAKER,
+ null,
+ null,
+ )
+ val createRoller = prepareRoles(behandling)
+ val roller =
+ HashSet(
+ createRoller.map {
+ Rolle(
+ behandling,
+ it.rolleType,
+ it.ident,
+ it.fodtDato,
+ it.opprettetDato,
+ )
+ },
+ )
- assertNotNull(createdBehandling.id)
- assertNull(createdBehandling.aarsak)
- assertEquals(0, createdBehandling.husstandsBarn.size)
- assertEquals(0, createdBehandling.sivilstand.size)
+ behandling.roller.addAll(roller)
+ return behandling
+ }
- val husstandsBarn = setOf(HusstandsBarnDto(null, true, emptySet(), "Manuelt", "ident!"))
- val sivilstand = setOf(
- SivilstandDto(
- null,
- Calendar.getInstance().time.toLocalDate(),
- Calendar.getInstance().time.toLocalDate(),
- SivilstandType.ENKE_ELLER_ENKEMANN,
- ),
- )
-
- behandlingService.updateBoforhold(
- createdBehandling.id!!,
- husstandsBarn.toDomain(createdBehandling),
- sivilstand.toSivilstandDomain(createdBehandling),
- NOTAT,
- MED_I_VEDTAK,
- )
-
- val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!)
-
- assertEquals(1, updatedBehandling.husstandsBarn.size)
- assertEquals(1, updatedBehandling.sivilstand.size)
- assertEquals(NOTAT, updatedBehandling.boforholdBegrunnelseKunINotat)
- assertEquals(MED_I_VEDTAK, updatedBehandling.boforholdBegrunnelseMedIVedtakNotat)
+ fun prepareRoles(behandling: Behandling): Set {
+ val someDate = Calendar.getInstance().time
+ return setOf(
+ Rolle(behandling, Rolletype.BIDRAGSMOTTAKER, "123344", someDate, someDate),
+ Rolle(behandling, Rolletype.BIDRAGSPLIKTIG, "44332211", someDate, someDate),
+ Rolle(behandling, Rolletype.BARN, "1111", someDate, someDate),
+ )
+ }
}
fun createBehandling(): Behandling {
val behandling = prepareBehandling()
- val actualBehandling = behandlingService.createBehandling(behandling)
- return actualBehandling
+ return behandlingService.createBehandling(behandling)
}
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt
index 91d3187a4..e8ebcda9c 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt
@@ -33,7 +33,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension
@ExtendWith(SpringExtension::class)
class ForsendelseServiceTest {
-
@MockkBean
lateinit var bidragForsendelseConsumer: BidragForsendelseConsumer
@@ -45,9 +44,10 @@ class ForsendelseServiceTest {
fun initMocks() {
forsendelseService =
ForsendelseService(bidragForsendelseConsumer, bidragTIlgangskontrollConsumer)
- every { bidragForsendelseConsumer.opprettForsendelse(any()) } returns OpprettForsendelseRespons(
- "2313",
- )
+ every { bidragForsendelseConsumer.opprettForsendelse(any()) } returns
+ OpprettForsendelseRespons(
+ "2313",
+ )
every { bidragForsendelseConsumer.slettForsendelse(any()) } returns Unit
every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true
}
@@ -75,7 +75,7 @@ class ForsendelseServiceTest {
withArg {
it.tema shouldBe "FAR"
it.behandlingInfo!!.barnIBehandling shouldHaveSize 1
- it.behandlingInfo!!.barnIBehandling shouldContain ROLLE_BA_1.fødselsnummer.verdi
+ it.behandlingInfo!!.barnIBehandling shouldContain ROLLE_BA_1.fødselsnummer?.verdi
},
)
}
@@ -102,7 +102,7 @@ class ForsendelseServiceTest {
verify(exactly = 1) {
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer?.verdi
},
)
}
@@ -129,7 +129,7 @@ class ForsendelseServiceTest {
verify(exactly = 1) {
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BP.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BP.fødselsnummer?.verdi
},
)
}
@@ -191,8 +191,8 @@ class ForsendelseServiceTest {
it.behandlingInfo!!.soknadId shouldBe SOKNAD_ID
it.behandlingInfo!!.stonadType shouldBe StonadType.FORSKUDD
- it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer.verdi
- it.mottaker?.ident shouldBe ROLLE_BM.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer?.verdi
+ it.mottaker?.ident shouldBe ROLLE_BM.fødselsnummer?.verdi
},
)
}
@@ -233,14 +233,14 @@ class ForsendelseServiceTest {
verify(ordering = Ordering.SEQUENCE) {
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer.verdi
- it.mottaker?.ident shouldBe ROLLE_BM.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer?.verdi
+ it.mottaker?.ident shouldBe ROLLE_BM.fødselsnummer?.verdi
},
)
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BP.fødselsnummer.verdi
- it.mottaker?.ident shouldBe ROLLE_BP.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BP.fødselsnummer?.verdi
+ it.mottaker?.ident shouldBe ROLLE_BP.fødselsnummer?.verdi
},
)
}
@@ -248,6 +248,7 @@ class ForsendelseServiceTest {
@Test
fun `Skal opprette forsendelse for behandling med type BIDRAG 18 år`() {
+
val request = InitalizeForsendelseRequest(
saksnummer = SAKSNUMMER,
enhet = "4806",
@@ -263,6 +264,7 @@ class ForsendelseServiceTest {
),
)
forsendelseService.slettEllerOpprettForsendelse(request)
+
verify(exactly = 3) {
bidragForsendelseConsumer.opprettForsendelse(
withArg {
@@ -281,20 +283,20 @@ class ForsendelseServiceTest {
verify(ordering = Ordering.SEQUENCE) {
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer.verdi
- it.mottaker?.ident shouldBe ROLLE_BM.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer?.verdi
+ it.mottaker?.ident shouldBe ROLLE_BM.fødselsnummer?.verdi
},
)
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BP.fødselsnummer.verdi
- it.mottaker?.ident shouldBe ROLLE_BP.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BP.fødselsnummer?.verdi
+ it.mottaker?.ident shouldBe ROLLE_BP.fødselsnummer?.verdi
},
)
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BA_1.fødselsnummer.verdi
- it.mottaker?.ident shouldBe ROLLE_BA_1.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BA_1.fødselsnummer?.verdi
+ it.mottaker?.ident shouldBe ROLLE_BA_1.fødselsnummer?.verdi
},
)
}
@@ -303,6 +305,7 @@ class ForsendelseServiceTest {
@Test
fun `Skal ikke opprette forsendelse for behandling med type forskudd fastsettelse hvis vedtak ikke er fattet`() {
every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true
+
val request = InitalizeForsendelseRequest(
saksnummer = SAKSNUMMER,
enhet = ENHET_FARSKAP,
@@ -318,6 +321,7 @@ class ForsendelseServiceTest {
),
)
forsendelseService.slettEllerOpprettForsendelse(request)
+
verify(exactly = 0) {
bidragForsendelseConsumer.opprettForsendelse(any())
}
@@ -326,6 +330,7 @@ class ForsendelseServiceTest {
@Test
fun `Skal ikke opprette forsendelse for behandling med type forskudd endring hvis vedtak ikke er fattet`() {
every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true
+
val request = InitalizeForsendelseRequest(
saksnummer = SAKSNUMMER,
enhet = ENHET_FARSKAP,
@@ -341,6 +346,7 @@ class ForsendelseServiceTest {
),
)
forsendelseService.slettEllerOpprettForsendelse(request)
+
verify(exactly = 0) {
bidragForsendelseConsumer.opprettForsendelse(any())
}
@@ -348,6 +354,7 @@ class ForsendelseServiceTest {
@Test
fun `Skal opprette forsendelse for behandling med type BIDRAG som er fattet og slette forsendelser for varsel under opprettelse`() {
+
every { bidragForsendelseConsumer.hentForsendelserISak(any()) } returns listOf(
opprettForsendelseResponsUnderOpprettelse(1),
opprettForsendelseResponsUnderOpprettelse(2),
@@ -370,6 +377,7 @@ class ForsendelseServiceTest {
),
)
forsendelseService.slettEllerOpprettForsendelse(request)
+
verify(exactly = 2) {
bidragForsendelseConsumer.opprettForsendelse(
withArg {
@@ -388,14 +396,14 @@ class ForsendelseServiceTest {
verify {
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer.verdi
- it.mottaker?.ident shouldBe ROLLE_BM.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BM.fødselsnummer?.verdi
+ it.mottaker?.ident shouldBe ROLLE_BM.fødselsnummer?.verdi
},
)
bidragForsendelseConsumer.opprettForsendelse(
withArg {
- it.gjelderIdent shouldBe ROLLE_BP.fødselsnummer.verdi
- it.mottaker?.ident shouldBe ROLLE_BP.fødselsnummer.verdi
+ it.gjelderIdent shouldBe ROLLE_BP.fødselsnummer?.verdi
+ it.mottaker?.ident shouldBe ROLLE_BP.fødselsnummer?.verdi
},
)
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt
index a3ee86d76..534c9ca3a 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt
@@ -29,22 +29,23 @@ class OpplysningerServiceTest : TestContainerRunner() {
@Test
fun `skal være bare en rad med aktive opplysninger`() {
- val b = behandlingService.createBehandling(
- Behandling(
- BehandlingType.FORSKUDD,
- SoknadType.FASTSETTELSE,
- Date(1),
- Date(2),
- Date(2),
- "123",
- 123L,
- null,
- "ENH1",
- SoknadFraType.VERGE,
- engangsbelopType = EngangsbelopType.ETTERGIVELSE,
- stonadType = null,
- ),
- )
+ val b =
+ behandlingService.createBehandling(
+ Behandling(
+ BehandlingType.FORSKUDD,
+ SoknadType.FASTSETTELSE,
+ Date(1),
+ Date(2),
+ Date(2),
+ "123",
+ 123L,
+ null,
+ "ENH1",
+ SoknadFraType.VERGE,
+ engangsbelopType = EngangsbelopType.ETTERGIVELSE,
+ stonadType = null,
+ ),
+ )
val opp1 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1))
val opp2 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1))
val opp4 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1))
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt
index 0f63ab2f2..9b3482ce6 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt
@@ -15,7 +15,6 @@ import org.springframework.http.HttpStatus
import java.util.*
class StubUtils {
-
companion object {
fun aClosedJsonResponse(): ResponseDefinitionBuilder {
return aResponse()
@@ -24,7 +23,10 @@ class StubUtils {
}
}
- fun stubResponse(url: String, personResponse: R) {
+ fun stubResponse(
+ url: String,
+ personResponse: R,
+ ) {
try {
WireMock.stubFor(
WireMock.post(url).willReturn(
@@ -52,10 +54,11 @@ class StubUtils {
}
fun stubHentForsendelserForSak(
- response: List = listOf(
- opprettForsendelseResponsUnderOpprettelse(1),
- opprettForsendelseResponsUnderOpprettelse(2),
- ),
+ response: List =
+ listOf(
+ opprettForsendelseResponsUnderOpprettelse(1),
+ opprettForsendelseResponsUnderOpprettelse(2),
+ ),
status: HttpStatus = HttpStatus.OK,
) {
WireMock.stubFor(
@@ -78,7 +81,10 @@ class StubUtils {
)
}
- fun stubTilgangskontrollTema(result: Boolean = true, status: HttpStatus = HttpStatus.OK) {
+ fun stubTilgangskontrollTema(
+ result: Boolean = true,
+ status: HttpStatus = HttpStatus.OK,
+ ) {
WireMock.stubFor(
WireMock.post(WireMock.urlMatching("/tilgangskontroll/api/tilgang/tema")).willReturn(
aClosedJsonResponse()
@@ -90,16 +96,21 @@ class StubUtils {
inner class Verify {
fun opprettForsendelseKaltMed(vararg contains: String) {
- val verify = WireMock.postRequestedFor(
- WireMock.urlMatching("/forsendelse/api/forsendelse"),
- )
+ val verify =
+ WireMock.postRequestedFor(
+ WireMock.urlMatching("/forsendelse/api/forsendelse"),
+ )
verifyContains(verify, *contains)
}
- fun forsendelseHentetForSak(saksnummer: String, antall: Int = -1) {
- val verify = WireMock.getRequestedFor(
- WireMock.urlMatching("/forsendelse/api/forsendelse/sak/$saksnummer/forsendelser"),
- )
+ fun forsendelseHentetForSak(
+ saksnummer: String,
+ antall: Int = -1,
+ ) {
+ val verify =
+ WireMock.getRequestedFor(
+ WireMock.urlMatching("/forsendelse/api/forsendelse/sak/$saksnummer/forsendelser"),
+ )
WireMock.verify(
if (antall == -1) {
CountMatchingStrategy(
@@ -113,10 +124,14 @@ class StubUtils {
)
}
- fun forsendelseSlettet(forsendelseId: String = "(.*)", antall: Int = -1) {
- val verify = WireMock.postRequestedFor(
- WireMock.urlMatching("/forsendelse/api/forsendelse/journal/$forsendelseId/avvik"),
- )
+ fun forsendelseSlettet(
+ forsendelseId: String = "(.*)",
+ antall: Int = -1,
+ ) {
+ val verify =
+ WireMock.postRequestedFor(
+ WireMock.urlMatching("/forsendelse/api/forsendelse/journal/$forsendelseId/avvik"),
+ )
WireMock.verify(
if (antall == -1) {
CountMatchingStrategy(
@@ -131,9 +146,10 @@ class StubUtils {
}
fun opprettForsendelseKaltAntallGanger(antall: Int) {
- val verify = WireMock.postRequestedFor(
- WireMock.urlMatching("/forsendelse/api/forsendelse"),
- )
+ val verify =
+ WireMock.postRequestedFor(
+ WireMock.urlMatching("/forsendelse/api/forsendelse"),
+ )
WireMock.verify(antall, verify)
}
@@ -141,7 +157,10 @@ class StubUtils {
opprettForsendelseKaltAntallGanger(0)
}
- private fun verifyContains(verify: RequestPatternBuilder, vararg contains: String) {
+ private fun verifyContains(
+ verify: RequestPatternBuilder,
+ vararg contains: String,
+ ) {
Arrays.stream(contains).forEach { verify.withRequestBody(ContainsPattern(it)) }
WireMock.verify(verify)
}
diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt
index bf6a6db0a..83f54f783 100644
--- a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt
+++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt
@@ -15,13 +15,15 @@ val ROLLE_BA_1 = ForsendelseRolleDto(PersonIdent("1344124"), type = Rolletype.BA
val ROLLE_BA_2 = ForsendelseRolleDto(PersonIdent("12344424214"), type = Rolletype.BARN)
val ROLLE_BP = ForsendelseRolleDto(PersonIdent("213244124"), type = Rolletype.BIDRAGSPLIKTIG)
-fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = ForsendelseResponsTo(
- forsendelseId = forsendelseId,
- saksnummer = SAKSNUMMER,
- behandlingInfo = BehandlingInfoResponseDto(
- soknadId = SOKNAD_ID.toString(),
- erFattet = false,
- ),
- forsendelseType = ForsendelseTypeTo.UTGÅENDE,
- status = ForsendelseStatusTo.UNDER_OPPRETTELSE,
-)
+fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) =
+ ForsendelseResponsTo(
+ forsendelseId = forsendelseId,
+ saksnummer = SAKSNUMMER,
+ behandlingInfo =
+ BehandlingInfoResponseDto(
+ soknadId = SOKNAD_ID.toString(),
+ erFattet = false,
+ ),
+ forsendelseType = ForsendelseTypeTo.UTGÅENDE,
+ status = ForsendelseStatusTo.UNDER_OPPRETTELSE,
+ )
diff --git a/src/test/resources/application-test.yaml b/src/test/resources/application-test.yaml
index 7d9cea2d5..e85e4b07e 100644
--- a/src/test/resources/application-test.yaml
+++ b/src/test/resources/application-test.yaml
@@ -1,3 +1,4 @@
+BIDRAG_PERSON_URL: http://localhost:${wiremock.server.port}/bidrag-person
BIDRAG_BEREGN_FORSKUDD_URL: http://localhost:${wiremock.server.port}/beregn-forskudd
BIDRAG_FORSENDELSE_URL: http://localhost:${wiremock.server.port}/forsendelse
BIDRAG_TILGANGSKONTROLL_URL: http://localhost:${wiremock.server.port}/tilgangskontroll