From 6c508c492c019541b4339cfddfde4918a74a38c9 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Tue, 19 Sep 2023 10:41:11 +0200 Subject: [PATCH 01/28] Legger til dependabot-sjekk i github workflow (#38) --- .github/workflows/pr.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 346a8e5a6..a8bd19a62 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -9,6 +9,7 @@ env: jobs: build: + if: github.event.pull_request.draft == false && github.actor != 'dependabot[bot]' permissions: contents: "read" id-token: "write" @@ -40,7 +41,7 @@ jobs: run-tests: runs-on: ubuntu-latest name: Run tests - needs: build +# needs: build steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 @@ -59,6 +60,7 @@ jobs: runs-on: ubuntu-latest name: Deploy main needs: build + if: github.actor!= 'dependabot[bot]' steps: - uses: actions/checkout@v3 with: From c57511b03590f7460ba8f253cf23b3c56e24691e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 10:50:25 +0200 Subject: [PATCH 02/28] [github-actions] Bump actions/checkout from 3 to 4 (#30) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/deploy_feature.yaml | 6 +++--- .github/workflows/pr.yaml | 6 +++--- .github/workflows/release.yaml | 6 +++--- .github/workflows/rollback_prod.yaml | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/deploy_feature.yaml b/.github/workflows/deploy_feature.yaml index cd09a1f28..e1402d8d1 100644 --- a/.github/workflows/deploy_feature.yaml +++ b/.github/workflows/deploy_feature.yaml @@ -17,7 +17,7 @@ jobs: name: Build with maven and docker runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' @@ -44,7 +44,7 @@ jobs: name: Run tests needs: build steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' @@ -63,7 +63,7 @@ jobs: needs: build steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: path: deploy - name: Deploy to dev-gcp for feature.yaml diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index a8bd19a62..bb73e5829 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -16,7 +16,7 @@ jobs: name: Build with maven and docker runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' @@ -43,7 +43,7 @@ jobs: name: Run tests # needs: build steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' @@ -62,7 +62,7 @@ jobs: needs: build if: github.actor!= 'dependabot[bot]' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: path: deploy - name: Deploy main branch to dev-gcp diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a0ae95e5f..a4496cd63 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -15,7 +15,7 @@ jobs: name: Build with maven and docker runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' @@ -43,7 +43,7 @@ jobs: needs: build steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: path: deploy - uses: nais/deploy/actions/deploy@v1 @@ -64,7 +64,7 @@ jobs: contents: write needs: deploy steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Push latest image tag as github tag id: tag_version uses: mathieudutour/github-tag-action@v6.1 diff --git a/.github/workflows/rollback_prod.yaml b/.github/workflows/rollback_prod.yaml index e14b14d62..911e9c763 100644 --- a/.github/workflows/rollback_prod.yaml +++ b/.github/workflows/rollback_prod.yaml @@ -19,7 +19,7 @@ jobs: name: Find tag to deploy steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: NAIS login uses: nais/login@v0 id: login @@ -50,7 +50,7 @@ jobs: needs: prepare_deploy steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: nais/deploy/actions/deploy@v1 env: APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }} From 1bb9ef72e2a4ffa5c767d6d1c97b2ef347af6d4c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 12:28:17 +0200 Subject: [PATCH 03/28] [dependency] Bump com.h2database:h2 from 2.2.220 to 2.2.224 (#37) Bumps [com.h2database:h2](https://github.com/h2database/h2database) from 2.2.220 to 2.2.224. - [Release notes](https://github.com/h2database/h2database/releases) - [Commits](https://github.com/h2database/h2database/compare/version-2.2.220...version-2.2.224) --- updated-dependencies: - dependency-name: com.h2database:h2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: andrii <25188+unorsk@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5397aa251..994238ed1 100644 --- a/pom.xml +++ b/pom.xml @@ -130,7 +130,7 @@ com.h2database h2 test - 2.2.220 + 2.2.224 org.flywaydb From 8d91b9d8ede73bc4fe63a56a4f92c732ed8e33b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 13:02:15 +0200 Subject: [PATCH 04/28] [dependency] Bump org.flywaydb:flyway-core from 9.22.0 to 9.22.1 (#33) Bumps [org.flywaydb:flyway-core](https://github.com/flyway/flyway) from 9.22.0 to 9.22.1. - [Release notes](https://github.com/flyway/flyway/releases) - [Commits](https://github.com/flyway/flyway/compare/flyway-9.22.0...flyway-9.22.1) --- updated-dependencies: - dependency-name: org.flywaydb:flyway-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 994238ed1..e33e364e2 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 5.6.2 4.0.2 3.0.5 - 9.22.0 + 9.22.1 1.19.0 From 4cb63fde3e54c9291844f8c2e682adfd3714be25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 13:20:21 +0200 Subject: [PATCH 05/28] [dependency] Bump com.pinterest:ktlint from 0.48.2 to 0.50.0 (#32) Bumps [com.pinterest:ktlint](https://github.com/pinterest/ktlint) from 0.48.2 to 0.50.0. - [Release notes](https://github.com/pinterest/ktlint/releases) - [Changelog](https://github.com/pinterest/ktlint/blob/master/CHANGELOG.md) - [Commits](https://github.com/pinterest/ktlint/compare/0.48.2...0.50.0) --- updated-dependencies: - dependency-name: com.pinterest:ktlint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: andrii <25188+unorsk@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e33e364e2..4314c674e 100644 --- a/pom.xml +++ b/pom.xml @@ -423,7 +423,7 @@ com.pinterest ktlint - 0.48.2 + 0.50.0 From 60ccf9f18ed8fff56b901dfbb86d07dd9771cd5a Mon Sep 17 00:00:00 2001 From: Ugur Alpay Cenar Date: Thu, 21 Sep 2023 11:46:33 +0200 Subject: [PATCH 06/28] Opprett forsendelse tillat input med null fnr (#39) --- .github/workflows/deploy_feature.yaml | 1 + .github/workflows/pr.yaml | 5 +-- .github/workflows/rollback_prod.yaml | 20 +++++----- .../InitalizeForsendelseRequest.kt | 2 +- .../behandling/service/ForsendelseService.kt | 16 ++++---- .../controller/ForsendelseControllerTest.kt | 14 +++---- .../behandling/hendelse/VedtakHendelseTest.kt | 25 +++++++++--- .../service/ForsendelseServiceTest.kt | 38 +++++++++---------- 8 files changed, 67 insertions(+), 54 deletions(-) diff --git a/.github/workflows/deploy_feature.yaml b/.github/workflows/deploy_feature.yaml index e1402d8d1..57e4cf1c6 100644 --- a/.github/workflows/deploy_feature.yaml +++ b/.github/workflows/deploy_feature.yaml @@ -4,6 +4,7 @@ on: branches: - '**' - '!main' + - '!dependabot/**' env: GITHUB_USERNAME: x-access-token diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index bb73e5829..bf6c24c00 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -9,7 +9,7 @@ env: jobs: build: - if: github.event.pull_request.draft == false && github.actor != 'dependabot[bot]' + if: github.event.pull_request.draft == false && ${{ github.actor != 'dependabot[bot]' }} permissions: contents: "read" id-token: "write" @@ -41,7 +41,7 @@ jobs: run-tests: runs-on: ubuntu-latest name: Run tests -# needs: build + needs: build steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v3 @@ -60,7 +60,6 @@ jobs: runs-on: ubuntu-latest name: Deploy main needs: build - if: github.actor!= 'dependabot[bot]' steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/rollback_prod.yaml b/.github/workflows/rollback_prod.yaml index 911e9c763..e68cef058 100644 --- a/.github/workflows/rollback_prod.yaml +++ b/.github/workflows/rollback_prod.yaml @@ -30,16 +30,16 @@ jobs: - id: deploy_version name: Find deploy version run: | - git fetch --all --tags - echo ${GITHUB_EVENT_NAME} - REPO_NAME=${GITHUB_REPOSITORY/$GITHUB_REPOSITORY_OWNER\//} - DEPLOY_TAG=${{ github.event.inputs.deploy_tag }} - if [ -z "$INPUT_TAG" ]; then - echo "NULL"; - DEPLOY_TAG=$(git tag -l | sort -V | tail -2 | head -1) - fi - echo "IMAGE=${{ steps.login.outputs.registry }}/$REPO_NAME:$DEPLOY_TAG" >> $GITHUB_OUTPUT - echo "DEPLOY_TAG=$DEPLOY_TAG" >> $GITHUB_OUTPUT + git fetch --all --tags + echo ${GITHUB_EVENT_NAME} + REPO_NAME=${GITHUB_REPOSITORY/$GITHUB_REPOSITORY_OWNER\//} + DEPLOY_TAG=${{ github.event.inputs.deploy_tag }} + if [ -z "$INPUT_TAG" ]; then + echo "NULL"; + DEPLOY_TAG=$(git tag -l | sort -V | tail -2 | head -1) + fi + echo "IMAGE=${{ steps.login.outputs.registry }}/$REPO_NAME:$DEPLOY_TAG" >> $GITHUB_OUTPUT + echo "DEPLOY_TAG=$DEPLOY_TAG" >> $GITHUB_OUTPUT outputs: image: ${{ steps.deploy_version.outputs.IMAGE }} version: ${{ steps.deploy_version.outputs.DEPLOY_TAG }} 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 6a7fa76ce..ce35e4162 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 @@ -16,6 +16,6 @@ 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/service/ForsendelseService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt index 4a7f7bf9d..633bea9bc 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt @@ -33,8 +33,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, @@ -45,14 +45,14 @@ class ForsendelseService( val opprettForRoller = opprettForRoller(request.roller, request.behandlingInfo) log.info { "Oppretter forsendelse ${request.behandlingInfo.typeForsendelse()}brev " + - "for ${opprettForRoller.size} roller (${opprettForRoller.joinToString(",")}) og behandling ${request.behandlingInfo}" + "for ${opprettForRoller.size} roller (${opprettForRoller.joinToString(",")}) og behandling ${request.behandlingInfo}" } val opprettetForsendelser = mutableListOf() opprettForRoller.forEach { 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, ), ) @@ -86,9 +86,9 @@ class ForsendelseService( val erFattet = behandlingInfo.erFattetBeregnet != null if (erFattet) return true return !( - behandlingInfo.stonadType == StonadType.FORSKUDD && - ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType) - ) + behandlingInfo.stonadType == StonadType.FORSKUDD && + ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType) + ) } private fun opprettForRoller( @@ -123,7 +123,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/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt index 553767067..d8b492c41 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt @@ -55,9 +55,9 @@ class ForsendelseControllerTest : KontrollerTestRunner() { 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", @@ -115,15 +115,15 @@ 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" } ] @@ -140,9 +140,9 @@ class ForsendelseControllerTest : KontrollerTestRunner() { 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", 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..e89225c37 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/ForsendelseServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt index c2247c09f..178f2bb6b 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt @@ -74,7 +74,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 }, ) } @@ -101,7 +101,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 }, ) } @@ -128,7 +128,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 }, ) } @@ -190,8 +190,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 }, ) } @@ -232,14 +232,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 }, ) } @@ -280,20 +280,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 }, ) } @@ -387,14 +387,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 }, ) } From d63971c33f38aa5824798ff26f9fdc06c87f8b92 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:21:06 +0200 Subject: [PATCH 07/28] Feature/sync roller i bisys med behandling api (#40) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Legger til `deleted` felt til roller og behandlinger slik at vi kan slette dem uten å egentlig slette * Legger til endepunkter for å slette/legge til roller * Legget til sync-endepunkt ktlint fix --- .../no/nav/bidrag/behandling/Exceptions.kt | 10 +- .../aop/DefaultRestControllerAdvice.kt | 13 +- .../aop/HendelseCorrelationAspect.kt | 6 +- .../model/BehandlingBeregningModel.kt | 156 +++---- .../bidrag/behandling/config/CacheConfig.kt | 5 +- .../bidrag/behandling/config/RestConfig.kt | 1 - .../consumer/BidragBeregnForskuddConsumer.kt | 4 +- .../consumer/BidragForsendelseConsumer.kt | 7 +- .../BidragTilgangskontrollConsumer.kt | 6 +- .../BehandlingBeregnForskuddController.kt | 87 ++-- .../controller/BehandlingController.kt | 137 +++--- .../controller/BoforholdController.kt | 1 - .../behandling/controller/ExceptionHandler.kt | 21 +- .../controller/ForsendelseController.kt | 1 - .../controller/InntekterController.kt | 2 - .../controller/OpplysningerController.kt | 13 +- .../VirkningsTidspunktController.kt | 1 - .../database/datamodell/Barnetillegg.kt | 2 - .../database/datamodell/Behandling.kt | 30 +- .../database/datamodell/HusstandsBarn.kt | 2 - .../datamodell/HusstandsBarnPeriode.kt | 5 - .../behandling/database/datamodell/Inntekt.kt | 3 - .../database/datamodell/InntektPostDomain.kt | 4 - .../database/datamodell/Opplysninger.kt | 6 - .../behandling/database/datamodell/Rolle.kt | 10 +- .../database/datamodell/Sivilstand.kt | 4 - .../database/datamodell/SoknadType.kt | 1 - .../database/datamodell/Utvidetbarnetrygd.kt | 3 - .../repository/BehandlingRepository.kt | 6 +- .../repository/OpplysningerRepository.kt | 5 +- .../database/repository/RolleRepository.kt | 10 + .../nav/bidrag/behandling/dto/IngenTilgang.kt | 1 + .../dto/behandling/BehandlingDto.kt | 5 - .../dto/behandling/CreateBehandlingRequest.kt | 10 - .../dto/behandling/CreateRolleDto.kt | 4 +- .../behandling/dto/behandling/ForskuddDto.kt | 3 +- .../dto/behandling/SivilstandDto.kt | 3 - .../dto/behandling/SyncRollerRequest.kt | 7 + .../UpdateBehandlingRequestExtended.kt | 4 - .../dto/boforhold/UpdateBoforholdRequest.kt | 1 - .../dto/forsendelse/ForsendelseTyper.kt | 8 +- .../dto/husstandsbarn/HusstandsBarnDto.kt | 4 - .../husstandsbarn/HusstandsBarnPeriodeDto.kt | 4 - .../behandling/dto/inntekt/BarnetilleggDto.kt | 4 - .../behandling/dto/inntekt/InntektDto.kt | 8 - .../dto/inntekt/UpdateInntekterRequest.kt | 3 - .../dto/inntekt/UtvidetbarnetrygdDto.kt | 4 - .../opplysninger/AddOpplysningerRequest.kt | 4 - .../dto/opplysninger/OpplysningerDto.kt | 1 - .../UpdateVirkningsTidspunktRequest.kt | 2 - .../VirkningsTidspunktResponse.kt | 2 - .../kafka/VedtakHendelseListener.kt | 32 +- .../behandling/service/BehandlingService.kt | 145 ++++--- .../behandling/service/OpplysningerService.kt | 17 +- .../behandling/transformers/DateUtils.kt | 1 + .../behandling/transformers/DtoExtensions.kt | 226 ++++++---- .../migration/V1.0.28__delete_behandling.sql | 8 + .../nav/bidrag/behandling/SpringTestRunner.kt | 2 - .../bidrag/behandling/TestContainerRunner.kt | 16 +- .../TestRestTemplateConfiguration.kt | 26 +- .../beregning/ForskuddBeregningTest.kt | 40 +- .../BehandlingBeregnForskuddControllerTest.kt | 127 +++--- .../controller/BehandlingControllerTest.kt | 405 ++++++++++-------- .../controller/BoforholdControllerTest.kt | 36 +- .../controller/ForsendelseControllerTest.kt | 113 ++--- .../controller/InntekterControllerTest.kt | 90 ++-- .../controller/KontrollerTestRunner.kt | 1 + .../controller/OpplysningerControllerTest.kt | 145 +++++-- .../VirkningsTidspunktControllerTest.kt | 21 +- .../service/BehandlingServiceTest.kt | 195 +++++++-- .../service/ForsendelseServiceTest.kt | 333 +++++++------- .../service/OpplysningerServiceTest.kt | 33 +- .../nav/bidrag/behandling/utils/StubUtils.kt | 63 ++- .../nav/bidrag/behandling/utils/Testdata.kt | 22 +- 74 files changed, 1558 insertions(+), 1183 deletions(-) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/repository/RolleRepository.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SyncRollerRequest.kt create mode 100644 src/main/resources/db/migration/V1.0.28__delete_behandling.sql 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..7f5cdca02 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" - } + 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" } } 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/model/BehandlingBeregningModel.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt index adf36fe7d..9ebff4052 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,86 @@ 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 + ): 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, - ) + 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, + ) + } } - } } } 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..83927f54c 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt @@ -29,7 +29,10 @@ class CacheConfig { 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/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..a010c893b 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt @@ -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: BeregnForskuddGrunnlag): 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/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..2808405e3 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -27,12 +27,15 @@ class BehandlingBeregnForskuddController( private val bidragBeregnForskuddConsumer: BidragBeregnForskuddConsumer, private val forskuddBeregning: ForskuddBeregning, ) { - - 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,42 +43,50 @@ 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 + .roller + .filter { Rolletype.BARN == it.rolleType } + .mapOrAccumulate { + val payload = forskuddBeregning.toPayload(behandlingModel, it) - if (false) printDebugPayload(payload) + if (false) printDebugPayload(payload) - 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()) } 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..f5717a965 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,27 @@ 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.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 +50,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 +84,17 @@ class BehandlingController(private val behandlingService: BehandlingService) { return CreateBehandlingResponse(behandlingDo.id!!) } + @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 +112,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 +136,9 @@ class BehandlingController(private val behandlingService: BehandlingService) { ), ], ) - fun hentBehandling(@PathVariable behandlingId: Long): BehandlingDto { + fun hentBehandling( + @PathVariable behandlingId: Long, + ): BehandlingDto { return findBehandlingById(behandlingId) } @@ -142,34 +147,36 @@ 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.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..e8ede2785 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt @@ -24,14 +24,17 @@ private val log = KotlinLogging.logger {} @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" @@ -94,7 +97,11 @@ class ExceptionHandler { } data class Error(val status: Int, val message: String, val fieldErrors: MutableList = mutableListOf()) { - fun addFieldError(objectName: String, field: String, message: String) { + 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 ed92be416..d3b964ee9 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..021cfd54a 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( @@ -51,7 +50,6 @@ class InntekterController(private val behandlingService: BehandlingService) { 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..fc6b79da6 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 @@ -12,81 +12,61 @@ import jakarta.persistence.Id import jakarta.persistence.OneToMany import no.nav.bidrag.domain.enums.EngangsbelopType 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, - @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, ) 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..2f0edd950 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 @@ -17,7 +17,6 @@ class Inntekt( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling, - val taMed: Boolean, val inntektType: String?, val belop: BigDecimal, @@ -25,11 +24,9 @@ class Inntekt( val datoTom: Date?, val ident: String, val fraGrunnlag: Boolean, - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = 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..0637697fa 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 @@ -15,14 +15,10 @@ 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, 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/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..a06e3e61a 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,7 +31,6 @@ 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, 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..6328f1c8a 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 @@ -8,7 +8,8 @@ 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/UpdateBehandlingRequestExtended.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequestExtended.kt index eeb07ca1c..e317420b2 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequestExtended.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequestExtended.kt @@ -9,17 +9,13 @@ 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/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 265171bb2..4255741b6 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 @@ -28,13 +28,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/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 1283854ca..bd4ab6d63 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!!, @@ -41,12 +42,16 @@ class VedtakHendelseListener( opprettForsendelse(vedtak, behandling) } - private fun opprettForsendelse(vedtak: VedtakHendelse, behandling: Behandling) { + private fun opprettForsendelse( + vedtak: VedtakHendelse, + behandling: Behandling, + ) { forsendelseService.opprettForsendelse( 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 +77,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 c053daa05..bccc6c421 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,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.Barnetillegg import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType @@ -9,10 +9,14 @@ 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 @@ -20,6 +24,7 @@ import java.util.Date @Service class BehandlingService( private val behandlingRepository: BehandlingRepository, + private val rolleRepository: RolleRepository, private val forsendelseService: ForsendelseService, ) { fun createBehandling(behandling: Behandling): Behandling = @@ -35,7 +40,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, @@ -47,6 +53,9 @@ class BehandlingService( ), ) } + + fun deleteBehandlingById(behandlingId: Long) = behandlingRepository.deleteById(behandlingId) + fun oppdaterBehandling( behandlingId: Long, virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, @@ -57,24 +66,25 @@ 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() @@ -85,26 +95,25 @@ class BehandlingService( utvidetbarnetrygd: MutableSet, inntektBegrunnelseMedIVedtakNotat: String?, inntektBegrunnelseKunINotat: String?, - ) = - behandlingRepository.save( - behandlingRepository.findBehandlingById(behandlingId) - .orElseThrow { `404`(behandlingId) } - .let { - it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat - it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat + ) = behandlingRepository.save( + behandlingRepository.findBehandlingById(behandlingId) + .orElseThrow { behandlingNotFoundException(behandlingId) } + .let { + it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat + it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat - it.inntekter.clear() - it.inntekter.addAll(inntekter) + it.inntekter.clear() + it.inntekter.addAll(inntekter) - it.barnetillegg.clear() - it.barnetillegg.addAll(barnetillegg) + it.barnetillegg.clear() + it.barnetillegg.addAll(barnetillegg) - it.utvidetbarnetrygd.clear() - it.utvidetbarnetrygd.addAll(utvidetbarnetrygd) + it.utvidetbarnetrygd.clear() + it.utvidetbarnetrygd.addAll(utvidetbarnetrygd) - it - }, - ) + it + }, + ) fun updateVirkningsTidspunkt( behandlingId: Long, @@ -112,8 +121,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, @@ -121,24 +135,53 @@ 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 oppdaterVedtakId(behandlingId: Long, vedtakId: Long) = behandlingRepository.oppdaterVedtakId(behandlingId, vedtakId) + 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) + } + } } 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..d94716684 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,139 @@ 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( + 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 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, - ) -} +fun Behandling.tilForsendelseRolleDto() = + roller.map { + ForsendelseRolleDto( + fødselsnummer = PersonIdent(it.ident), + type = it.rolleType, + ) + } -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 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 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 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/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/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..8fdb38c11 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt @@ -8,7 +8,6 @@ import org.junit.jupiter.api.Test import java.util.Calendar class ForskuddBeregningTest { - @Test fun `split periods just one period`() { val forskuddBeregning = ForskuddBeregning() @@ -24,12 +23,13 @@ class ForskuddBeregningTest { val tilDao = cal1.time val tilDao2 = 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(), tilDao.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE), + HusstandsBarnPeriodeModel(fraDato2.toLocalDate(), tilDao2.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE), + ), + ) assertEquals(3, splitPeriods1.size) } @@ -44,11 +44,12 @@ class ForskuddBeregningTest { cal1.add(Calendar.MONTH, 1) val tilDao = 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(), tilDao.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE), + ), + ) assertEquals(1, splitPeriods.size) } @@ -63,13 +64,14 @@ class ForskuddBeregningTest { 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), - ), - ) + 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) 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..f7d798adf 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(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), + ) 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..2ea46eb43 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt @@ -40,51 +40,55 @@ 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) @@ -92,36 +96,40 @@ class BehandlingControllerTest() : KontrollerTestRunner() { @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 +137,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 +166,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 +238,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 +365,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 d8b492c41..f32a0ad5b 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt @@ -22,37 +22,40 @@ 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}" @@ -78,7 +81,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) @@ -91,11 +94,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, @@ -128,16 +133,17 @@ class ForsendelseControllerTest : KontrollerTestRunner() { } ] } - """.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}" @@ -163,7 +169,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) @@ -184,27 +190,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..b759da635 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt @@ -43,47 +43,64 @@ class InntekterControllerTest : KontrollerTestRunner() { @Test fun `skal opprette og oppdatere inntekter`() { // 1. Create new behandling - val behandling: Behandling = behandlingRepository.save( - Behandling( - BehandlingType.FORSKUDD, - SoknadType.FASTSETTELSE, - Date(1), - Date(1), - Date(1), - "123", - 123, - null, - "ENH", - SoknadFraType.BIDRAGSMOTTAKER, - null, - null, - ), - ) + val behandling: Behandling = + behandlingRepository.save( + Behandling( + BehandlingType.FORSKUDD, + SoknadType.FASTSETTELSE, + Date(1), + Date(1), + Date(1), + "123", + 123, + null, + "ENH", + SoknadFraType.BIDRAGSMOTTAKER, + null, + null, + ), + ) - val inn = TestInntektDto(null, true, "some0", "1.123", "2022-10-10", "2022-10-10", "blablabla", setOf(InntektPost("ABC", "ABC", BigDecimal.TEN))) + 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, - ) + 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 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, - ) + 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) @@ -91,12 +108,13 @@ class InntekterControllerTest : KontrollerTestRunner() { 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, - ) + 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) 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/service/BehandlingServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt index c0f32922d..e6f186900 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 @@ -26,11 +31,18 @@ import org.springframework.beans.factory.annotation.Autowired 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 + @Autowired + lateinit var behandlingRepository: BehandlingRepository + + @PersistenceContext + lateinit var entityManager: EntityManager + @Test fun `skal opprette en behandling`() { val actualBehandling = createBehandling() @@ -46,6 +58,89 @@ class BehandlingServiceTest : TestContainerRunner() { assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato) } + @Test + fun `delete behandling`() { + val behandling = createBehandling() + behandlingService.deleteBehandlingById(behandling.id!!) + + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(behandling.id!!) + } + } + + @Test + fun `legge til flere roller`() { + val b = createBehandling() + + behandlingService.syncRoller( + b.id!!, + listOf( + CreateRolleDto( + CreateRolleRolleType.BARN, + "newident", + Date(1), + Date(2), + ), + ), + ) + + 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), + ), + ) + + 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)), + ), + ) + + assertEquals(2, behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolleType == Rolletype.BARN }.size) + } + + @Test + fun `delete behandling rolle`() { + val behandling = createBehandling() + + assertEquals(3, behandling.roller.size) + behandling.roller.removeIf { it.rolleType == Rolletype.BARN } + + behandlingRepository.save(behandling) + + val updatedBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get() + assertEquals(2, updatedBehandling.roller.size) + + val realCount = + entityManager.createNativeQuery("select count(*) from rolle r where r.behandling_id = " + behandling.id!!).getSingleResult() + + val deletedCount = + entityManager.createNativeQuery( + "select count(*) from rolle r where r.behandling_id = " + behandling.id!! + " and r.deleted = true", + ).getSingleResult() + + assertEquals(3L, realCount) + assertEquals(1L, deletedCount) + } + @Test fun `skal opprette en behandling med inntekter`() { val behandling = prepareBehandling() @@ -65,32 +160,34 @@ class BehandlingServiceTest : TestContainerRunner() { 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 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, - ) - }, - ) + val roller = + HashSet( + createRoller.map { + Rolle( + behandling, + it.rolleType, + it.ident, + it.fodtDato, + it.opprettetDato, + ) + }, + ) behandling.roller.addAll(roller) return behandling @@ -208,7 +305,14 @@ class BehandlingServiceTest : TestContainerRunner() { assertNotNull(expectedBehandling.inntektBegrunnelseMedIVedtakNotat) assertNotNull(expectedBehandling.inntektBegrunnelseKunINotat) - behandlingService.oppdaterInntekter(actualBehandling.id!!, mutableSetOf(), expectedBehandling.barnetillegg, mutableSetOf(), null, null) + behandlingService.oppdaterInntekter( + actualBehandling.id!!, + mutableSetOf(), + expectedBehandling.barnetillegg, + mutableSetOf(), + null, + null, + ) val expectedBehandlingWithoutInntekter = behandlingService.hentBehandlingById(actualBehandling.id!!) @@ -244,15 +348,16 @@ class BehandlingServiceTest : TestContainerRunner() { assertNotNull(createdBehandling.id) assertNull(createdBehandling.aarsak) - val oppdatertBehandling = behandlingService.oppdaterBehandling( - createdBehandling.id!!, - MED_I_VEDTAK, - NOTAT, - MED_I_VEDTAK, - NOTAT, - MED_I_VEDTAK, - NOTAT, - ) + val oppdatertBehandling = + behandlingService.oppdaterBehandling( + createdBehandling.id!!, + MED_I_VEDTAK, + NOTAT, + MED_I_VEDTAK, + NOTAT, + MED_I_VEDTAK, + NOTAT, + ) val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) @@ -305,14 +410,15 @@ class BehandlingServiceTest : TestContainerRunner() { 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, - ), - ) + val sivilstand = + setOf( + SivilstandDto( + null, + Calendar.getInstance().time.toLocalDate(), + Calendar.getInstance().time.toLocalDate(), + SivilstandType.ENKE_ELLER_ENKEMANN, + ), + ) behandlingService.updateBoforhold( createdBehandling.id!!, @@ -333,7 +439,6 @@ class BehandlingServiceTest : TestContainerRunner() { 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 178f2bb6b..794f8e16f 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt @@ -32,7 +32,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension @ExtendWith(SpringExtension::class) class ForsendelseServiceTest { - @MockkBean lateinit var bidragForsendelseConsumer: BidragForsendelseConsumer @@ -44,9 +43,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 } @@ -54,20 +54,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med tema FAR når enhet er farskap`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = StonadType.FORSKUDD, - vedtakType = VedtakType.KLAGE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = StonadType.FORSKUDD, + vedtakType = VedtakType.KLAGE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 1) { bidragForsendelseConsumer.opprettForsendelse( @@ -83,20 +86,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for gebyr behandling for bidragsmottaker`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - engangsBelopType = EngangsbelopType.GEBYR_MOTTAKER, - vedtakType = VedtakType.ENDRING, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + engangsBelopType = EngangsbelopType.GEBYR_MOTTAKER, + vedtakType = VedtakType.ENDRING, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 1) { bidragForsendelseConsumer.opprettForsendelse( @@ -110,20 +116,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for gebyr behandling for bidragspliktig`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - engangsBelopType = EngangsbelopType.GEBYR_SKYLDNER, - vedtakType = VedtakType.ENDRING, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + engangsBelopType = EngangsbelopType.GEBYR_SKYLDNER, + vedtakType = VedtakType.ENDRING, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 1) { bidragForsendelseConsumer.opprettForsendelse( @@ -137,20 +146,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med tema BID når enhet er farskap men person ikke har tilgang`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns false - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = StonadType.BIDRAG, - vedtakType = VedtakType.FASTSETTELSE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = StonadType.BIDRAG, + vedtakType = VedtakType.FASTSETTELSE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 2) { bidragForsendelseConsumer.opprettForsendelse( @@ -163,20 +175,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med type FORSKUDD og vedtakType KLAGE`() { - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = StonadType.FORSKUDD, - vedtakType = VedtakType.KLAGE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = StonadType.FORSKUDD, + vedtakType = VedtakType.KLAGE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 1) { bidragForsendelseConsumer.opprettForsendelse( @@ -199,20 +214,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med type BIDRAG`() { - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = StonadType.BIDRAG, - vedtakType = VedtakType.FASTSETTELSE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = StonadType.BIDRAG, + vedtakType = VedtakType.FASTSETTELSE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 2) { bidragForsendelseConsumer.opprettForsendelse( @@ -247,20 +265,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med type BIDRAG 18 år`() { - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = StonadType.BIDRAG18AAR, - vedtakType = VedtakType.FASTSETTELSE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = StonadType.BIDRAG18AAR, + vedtakType = VedtakType.FASTSETTELSE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 3) { bidragForsendelseConsumer.opprettForsendelse( @@ -302,20 +323,23 @@ 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, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = StonadType.FORSKUDD, - vedtakType = VedtakType.FASTSETTELSE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = StonadType.FORSKUDD, + vedtakType = VedtakType.FASTSETTELSE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 0) { bidragForsendelseConsumer.opprettForsendelse(any()) @@ -325,20 +349,23 @@ 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, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = StonadType.FORSKUDD, - vedtakType = VedtakType.ENDRING, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = StonadType.FORSKUDD, + vedtakType = VedtakType.ENDRING, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 0) { bidragForsendelseConsumer.opprettForsendelse(any()) @@ -347,27 +374,31 @@ 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), - opprettForsendelseResponsUnderOpprettelse(3).copy(status = ForsendelseStatusTo.DISTRIBUERT), - opprettForsendelseResponsUnderOpprettelse(4).copy(forsendelseType = ForsendelseTypeTo.NOTAT), - ) - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = StonadType.BIDRAG, - vedtakType = VedtakType.FASTSETTELSE, - erFattetBeregnet = true, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + every { bidragForsendelseConsumer.hentForsendelserISak(any()) } returns + listOf( + opprettForsendelseResponsUnderOpprettelse(1), + opprettForsendelseResponsUnderOpprettelse(2), + opprettForsendelseResponsUnderOpprettelse(3).copy(status = ForsendelseStatusTo.DISTRIBUERT), + opprettForsendelseResponsUnderOpprettelse(4).copy(forsendelseType = ForsendelseTypeTo.NOTAT), + ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = StonadType.BIDRAG, + vedtakType = VedtakType.FASTSETTELSE, + erFattetBeregnet = true, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.opprettForsendelse(request) verify(exactly = 2) { bidragForsendelseConsumer.opprettForsendelse( 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, + ) From 38098ff9e5a01ebc29bd51716e036bc3231bf95a Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Tue, 26 Sep 2023 10:45:36 +0200 Subject: [PATCH 08/28] Feature/dependabot gh actions (#45) * legger til en separat jobb for dependabot PRs * build + test -> Deploy --- .github/workflows/dependabot.yaml | 28 +++++++++++++++++++++++++++ .github/workflows/deploy_feature.yaml | 5 +++-- .github/workflows/pr.yaml | 12 ++++++++---- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/dependabot.yaml diff --git a/.github/workflows/dependabot.yaml b/.github/workflows/dependabot.yaml new file mode 100644 index 000000000..2b3579e47 --- /dev/null +++ b/.github/workflows/dependabot.yaml @@ -0,0 +1,28 @@ +name: Run tests for dependabot PRs +on: + 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 install diff --git a/.github/workflows/deploy_feature.yaml b/.github/workflows/deploy_feature.yaml index 57e4cf1c6..dd46fee00 100644 --- a/.github/workflows/deploy_feature.yaml +++ b/.github/workflows/deploy_feature.yaml @@ -61,8 +61,9 @@ jobs: deploy-feature: runs-on: ubuntu-latest name: Deploy feature - needs: build - + needs: + - run-tests + - build steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index bf6c24c00..8ddb4b797 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -2,6 +2,8 @@ name: Deploy to dev on: pull_request: types: [ ready_for_review, opened, synchronize ] + branches: + - '!dependabot/**' env: GITHUB_USERNAME: x-access-token @@ -9,7 +11,7 @@ env: jobs: build: - if: github.event.pull_request.draft == false && ${{ github.actor != 'dependabot[bot]' }} + if: github.event.pull_request.draft == false permissions: contents: "read" id-token: "write" @@ -56,10 +58,12 @@ jobs: ${{ runner.os }}-maven- - run: mvn -B -e --settings .m2/maven-settings.xml clean install - deploy-main: + deploy-dev: runs-on: ubuntu-latest - name: Deploy main - needs: build + name: Deploy dev + needs: + - run-tests + - build steps: - uses: actions/checkout@v4 with: From 3ae4e5bb4d8b50cc1c37f44168575a5a6f88b751 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Tue, 26 Sep 2023 10:45:51 +0200 Subject: [PATCH 09/28] Legger til grunnlagspakkeId til behandling (#41) --- .../controller/BehandlingController.kt | 15 ++++++++++ .../database/datamodell/Behandling.kt | 1 + .../dto/behandling/BehandlingDto.kt | 1 + .../dto/behandling/UpdateBehandlingRequest.kt | 5 ++++ .../UpdateBehandlingRequestExtended.kt | 22 --------------- .../behandling/service/BehandlingService.kt | 28 +++++++++++++------ .../migration/V1.0.29__grunnlagspakke_id.sql | 2 ++ .../controller/BehandlingControllerTest.kt | 27 ++++++++++++++++++ .../service/BehandlingServiceTest.kt | 9 ++++++ 9 files changed, 79 insertions(+), 31 deletions(-) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequest.kt delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequestExtended.kt create mode 100644 src/main/resources/db/migration/V1.0.29__grunnlagspakke_id.sql 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 f5717a965..7f5092b08 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt @@ -12,6 +12,7 @@ import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingRequest import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse 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 @@ -84,6 +85,19 @@ 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( @@ -169,6 +183,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { behandling.sivilstand.toSivilstandDto(), behandling.virkningsDato?.toLocalDate(), behandling.soknadRefId, + behandling.grunnlagspakkeId, behandling.aarsak, behandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, behandling.virkningsTidspunktBegrunnelseKunINotat, 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 fc6b79da6..070f7ace9 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 @@ -56,6 +56,7 @@ class Behandling( @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) 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 a06e3e61a..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 @@ -35,6 +35,7 @@ data class BehandlingDto( @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/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 e317420b2..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/UpdateBehandlingRequestExtended.kt +++ /dev/null @@ -1,22 +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/service/BehandlingService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt index bccc6c421..e2dc63e0d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -41,15 +41,15 @@ class BehandlingService( enhet = behandling.behandlerEnhet, roller = behandling.tilForsendelseRolleDto(), behandlingInfo = - BehandlingInfoDto( - behandlingId = behandling.id, - soknadId = behandling.soknadId, - soknadFra = behandling.soknadFra, - behandlingType = behandling.behandlingType.name, - stonadType = behandling.stonadType, - engangsBelopType = behandling.engangsbelopType, - vedtakType = behandling.soknadType.tilVedtakType(), - ), + BehandlingInfoDto( + behandlingId = behandling.id, + soknadId = behandling.soknadId, + soknadFra = behandling.soknadFra, + behandlingType = behandling.behandlingType.name, + stonadType = behandling.stonadType, + engangsBelopType = behandling.engangsbelopType, + vedtakType = behandling.soknadType.tilVedtakType(), + ), ), ) } @@ -184,4 +184,14 @@ class BehandlingService( behandlingRepository.delete(behandling) } } + + fun updateBehandling( + behandlingId: Long, + grunnlagspakkeId: Long?, + ) { + hentBehandlingById(behandlingId).let { + it.grunnlagspakkeId = grunnlagspakkeId + behandlingRepository.save(it) + } + } } 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/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt index 2ea46eb43..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 @@ -94,6 +96,31 @@ class BehandlingControllerTest() : KontrollerTestRunner() { 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 = 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 e6f186900..a75eaa25d 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -141,6 +141,15 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(1L, deletedCount) } + @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 opprette en behandling med inntekter`() { val behandling = prepareBehandling() From cd8103975db93d944bc8de55de14b1c2b7de17e9 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:25:22 +0200 Subject: [PATCH 10/28] Feature/maven/org.flywaydb flyway core 9.22.2 (#47) * [dependency] Bump org.flywaydb:flyway-core from 9.22.1 to 9.22.2 Bumps [org.flywaydb:flyway-core](https://github.com/flyway/flyway) from 9.22.1 to 9.22.2. - [Release notes](https://github.com/flyway/flyway/releases) - [Commits](https://github.com/flyway/flyway/compare/flyway-9.22.1...flyway-9.22.2) --- updated-dependencies: - dependency-name: org.flywaydb:flyway-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * deploy branch to feature --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/deploy_feature.yaml | 1 + pom.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy_feature.yaml b/.github/workflows/deploy_feature.yaml index dd46fee00..c5b8abdb0 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: - '**' diff --git a/pom.xml b/pom.xml index 4314c674e..638491bf1 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 5.6.2 4.0.2 3.0.5 - 9.22.1 + 9.22.2 1.19.0 From 6fe068e7f8d7fde85222c82fb872723a5ba5d246 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:41:15 +0200 Subject: [PATCH 11/28] [dependency] Bump org.springframework.boot:spring-boot-maven-plugin (#43) Bumps [org.springframework.boot:spring-boot-maven-plugin](https://github.com/spring-projects/spring-boot) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.1.3...v3.1.4) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: andrii <25188+unorsk@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 638491bf1..11e43a060 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 From 102a57cb1d117609055ae81e182cc1692fc1dfad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:41:37 +0200 Subject: [PATCH 12/28] [dependency] Bump org.xerial.snappy:snappy-java (#42) Bumps [org.xerial.snappy:snappy-java](https://github.com/xerial/snappy-java) from 1.1.10.3 to 1.1.10.4. - [Release notes](https://github.com/xerial/snappy-java/releases) - [Commits](https://github.com/xerial/snappy-java/compare/v1.1.10.3...v1.1.10.4) --- updated-dependencies: - dependency-name: org.xerial.snappy:snappy-java dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 11e43a060..b3c1c93e3 100644 --- a/pom.xml +++ b/pom.xml @@ -46,7 +46,7 @@ org.xerial.snappy snappy-java - 1.1.10.3 + 1.1.10.4 org.springframework.kafka From 4dc01ca1372c1b63c1b99ad9df673b1be7e443ca Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Tue, 26 Sep 2023 15:44:48 +0200 Subject: [PATCH 13/28] [dependency] Bump io.kotest:kotest-assertions-core-jvm (#48) Bumps [io.kotest:kotest-assertions-core-jvm](https://github.com/kotest/kotest) from 5.6.2 to 5.7.2. - [Release notes](https://github.com/kotest/kotest/releases) - [Commits](https://github.com/kotest/kotest/commits) --- updated-dependencies: - dependency-name: io.kotest:kotest-assertions-core-jvm dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b3c1c93e3..2b81a4c45 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ 2.2.0 4.0.4 LATEST - 5.6.2 + 5.7.2 4.0.2 3.0.5 9.22.2 From e8d3f2994611affc2ea837a0166108d8bc8e84a8 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Thu, 28 Sep 2023 13:16:59 +0200 Subject: [PATCH 14/28] Oppgraderer til ny bidrag-transport (#49) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Legger til flere tests Fikser én bug --- pom.xml | 2 +- .../behandling/beregning/ForskuddBeregning.kt | 25 +++-- .../consumer/BidragBeregnForskuddConsumer.kt | 4 +- .../BehandlingBeregnForskuddController.kt | 11 -- .../behandling/dto/behandling/ForskuddDto.kt | 2 +- .../dto/beregning/ForskuddBeregningRespons.kt | 2 +- .../behandling/service/BehandlingService.kt | 18 +-- .../behandling/service/ForsendelseService.kt | 8 +- .../beregning/ForskuddBeregningTest.kt | 103 +++++++++++++++--- .../behandling/hendelse/VedtakHendelseTest.kt | 8 +- 10 files changed, 122 insertions(+), 61 deletions(-) diff --git a/pom.xml b/pom.xml index 2b81a4c45..5a1d0bc4f 100644 --- a/pom.xml +++ b/pom.xml @@ -198,7 +198,7 @@ no.nav.bidrag bidrag-transport - 20230821134807_d0642b9 + 20230918144946_1e1bc33 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..62444cac1 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt @@ -20,11 +20,12 @@ 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 { @@ -32,7 +33,7 @@ class ForskuddBeregning { listOf( Grunnlag( referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, - type = GrunnlagType.SOKNADSBARN_INFO.toString(), + type = GrunnlagType.SOKNADSBARN_INFO, innhold = POJONode( SoknadsBarnNode( soknadsbarnId = soknadBarn.id!!.toInt(), @@ -57,7 +58,7 @@ class ForskuddBeregning { .map { Grunnlag( referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(), - type = GrunnlagType.BOSTATUS.toString(), + type = GrunnlagType.BOSTATUS, innhold = POJONode( BostatusNode( datoFom = it.datoFom.toNoString(), @@ -75,7 +76,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 +90,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 +105,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 +120,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 +145,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 +195,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,8 +211,8 @@ class ForskuddBeregning { roller = behandling.roller, ) - fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle): BeregnForskuddGrunnlag = - BeregnForskuddGrunnlag( + fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle): BeregnGrunnlag = + BeregnGrunnlag( beregnDatoFra = b.virkningsDato, beregnDatoTil = b.datoTom, grunnlagListe = prepareSoknadsBarn(soknadsBarn) + 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 a010c893b..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 @@ -18,5 +18,5 @@ class BidragBeregnForskuddConsumer( 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/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index 2808405e3..0ee0d18d3 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -2,7 +2,6 @@ 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 @@ -12,8 +11,6 @@ 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 org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.client.HttpClientErrorException @@ -57,8 +54,6 @@ class BehandlingBeregnForskuddController( .mapOrAccumulate { val payload = forskuddBeregning.toPayload(behandlingModel, it) - if (false) printDebugPayload(payload) - try { val respons = bidragBeregnForskuddConsumer.beregnForskudd(payload) @@ -91,10 +86,4 @@ class BehandlingBeregnForskuddController( 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/dto/behandling/ForskuddDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt index 6328f1c8a..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,7 +2,7 @@ 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 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/service/BehandlingService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt index e2dc63e0d..e042a9274 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -41,15 +41,15 @@ class BehandlingService( enhet = behandling.behandlerEnhet, roller = behandling.tilForsendelseRolleDto(), behandlingInfo = - BehandlingInfoDto( - behandlingId = behandling.id, - soknadId = behandling.soknadId, - soknadFra = behandling.soknadFra, - behandlingType = behandling.behandlingType.name, - stonadType = behandling.stonadType, - engangsBelopType = behandling.engangsbelopType, - vedtakType = behandling.soknadType.tilVedtakType(), - ), + BehandlingInfoDto( + behandlingId = behandling.id, + soknadId = behandling.soknadId, + soknadFra = behandling.soknadFra, + behandlingType = behandling.behandlingType.name, + stonadType = behandling.stonadType, + engangsBelopType = behandling.engangsbelopType, + vedtakType = behandling.soknadType.tilVedtakType(), + ), ), ) } 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 633bea9bc..d4824027c 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt @@ -45,7 +45,7 @@ class ForsendelseService( val opprettForRoller = opprettForRoller(request.roller, request.behandlingInfo) log.info { "Oppretter forsendelse ${request.behandlingInfo.typeForsendelse()}brev " + - "for ${opprettForRoller.size} roller (${opprettForRoller.joinToString(",")}) og behandling ${request.behandlingInfo}" + "for ${opprettForRoller.size} roller (${opprettForRoller.joinToString(",")}) og behandling ${request.behandlingInfo}" } val opprettetForsendelser = mutableListOf() opprettForRoller.forEach { @@ -86,9 +86,9 @@ class ForsendelseService( val erFattet = behandlingInfo.erFattetBeregnet != null if (erFattet) return true return !( - behandlingInfo.stonadType == StonadType.FORSKUDD && - ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType) - ) + behandlingInfo.stonadType == StonadType.FORSKUDD && + ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType) + ) } private fun opprettForRoller( 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 8fdb38c11..aa484c75e 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt @@ -1,9 +1,9 @@ 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 @@ -20,18 +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), + 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,38 +42,109 @@ 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), + 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 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(), 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), + HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE), + HusstandsBarnPeriodeModel(fraDato1.toLocalDate(), tilDato1.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE), ), ) - assertEquals(1, splitPeriods.size) - assertEquals(3.0, splitPeriods.get(0).antall) + splitPeriods.size shouldBe 2 } } 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 e89225c37..9b66c8d2e 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt @@ -60,9 +60,9 @@ class VedtakHendelseTest : CommonTestRunner() { opprettHendelseRecord( opprettVedtakhendelse( vedtakId, - behandling.id!! - ) - ) + behandling.id!!, + ), + ), ) val oppdatertBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get() oppdatertBehandling.vedtakId shouldBe vedtakId @@ -144,7 +144,7 @@ class VedtakHendelseTest : CommonTestRunner() { private fun opprettVedtakhendelse( vedtakId: Int, behandlingId: Long, - stonadType: StonadType = StonadType.BIDRAG18AAR + stonadType: StonadType = StonadType.BIDRAG18AAR, ): VedtakHendelse { return VedtakHendelse( type = VedtakType.FASTSETTELSE, From 26490f1529aafcf6c0172369827ca26f6464586e Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:28:24 +0200 Subject: [PATCH 15/28] Oppgraderer til ny bidrag-transport (#50) Faster gh-actions --- .github/workflows/deploy_feature.yaml | 38 +++++++++++++-------------- .github/workflows/pr.yaml | 38 +++++++++++++-------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/workflows/deploy_feature.yaml b/.github/workflows/deploy_feature.yaml index c5b8abdb0..649d2f7cd 100644 --- a/.github/workflows/deploy_feature.yaml +++ b/.github/workflows/deploy_feature.yaml @@ -30,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: @@ -41,29 +41,29 @@ jobs: image: ${{ steps.docker-push.outputs.image }} tag: ${{ steps.docker-push.outputs.tag }} - run-tests: - runs-on: ubuntu-latest - name: Run tests - needs: build - 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 install +# run-tests: +# runs-on: ubuntu-latest +# name: Run tests +# needs: build +# 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 install deploy-feature: runs-on: ubuntu-latest name: Deploy feature needs: - - run-tests +# - run-tests - build steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 8ddb4b797..80823a5bb 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -29,7 +29,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: @@ -40,29 +40,29 @@ jobs: image: ${{ steps.docker-push.outputs.image }} tag: ${{ steps.docker-push.outputs.tag }} - run-tests: - runs-on: ubuntu-latest - name: Run tests - needs: build - 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 install +# run-tests: +# runs-on: ubuntu-latest +# name: Run tests +# needs: build +# 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 install deploy-dev: runs-on: ubuntu-latest name: Deploy dev needs: - - run-tests +# - run-tests - build steps: - uses: actions/checkout@v4 From b95ead3a1bd0525d526c6f0154a09c208ad134b3 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Tue, 3 Oct 2023 14:27:46 +0200 Subject: [PATCH 16/28] Oppgraderer til ny bidrag-transport (#54) Faster gh-actions --- .github/workflows/dependabot.yaml | 3 ++- .github/workflows/deploy_feature.yaml | 19 ------------------- .github/workflows/pr.yaml | 19 ------------------- 3 files changed, 2 insertions(+), 39 deletions(-) diff --git a/.github/workflows/dependabot.yaml b/.github/workflows/dependabot.yaml index 2b3579e47..eb3310140 100644 --- a/.github/workflows/dependabot.yaml +++ b/.github/workflows/dependabot.yaml @@ -1,5 +1,6 @@ name: Run tests for dependabot PRs on: + workflow_dispatch: pull_request: types: [ ready_for_review, opened, synchronize ] branches: @@ -25,4 +26,4 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - - run: mvn -B -e --settings .m2/maven-settings.xml clean install + - 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 649d2f7cd..24ff1b89a 100644 --- a/.github/workflows/deploy_feature.yaml +++ b/.github/workflows/deploy_feature.yaml @@ -41,29 +41,10 @@ jobs: image: ${{ steps.docker-push.outputs.image }} tag: ${{ steps.docker-push.outputs.tag }} -# run-tests: -# runs-on: ubuntu-latest -# name: Run tests -# needs: build -# 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 install - deploy-feature: runs-on: ubuntu-latest name: Deploy feature needs: -# - run-tests - build steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 80823a5bb..99619b3dc 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -40,29 +40,10 @@ jobs: image: ${{ steps.docker-push.outputs.image }} tag: ${{ steps.docker-push.outputs.tag }} -# run-tests: -# runs-on: ubuntu-latest -# name: Run tests -# needs: build -# 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 install - deploy-dev: runs-on: ubuntu-latest name: Deploy dev needs: -# - run-tests - build steps: - uses: actions/checkout@v4 From 13db75314f442e27118b7f3f971e6b7eefa2aca5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Oct 2023 14:28:35 +0200 Subject: [PATCH 17/28] [dependency] Bump testcontainers.version from 1.19.0 to 1.19.1 (#51) Bumps `testcontainers.version` from 1.19.0 to 1.19.1. Updates `org.testcontainers:postgresql` from 1.19.0 to 1.19.1 - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.19.0...1.19.1) Updates `org.testcontainers:junit-jupiter` from 1.19.0 to 1.19.1 - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.19.0...1.19.1) --- updated-dependencies: - dependency-name: org.testcontainers:postgresql dependency-type: direct:development update-type: version-update:semver-patch - dependency-name: org.testcontainers:junit-jupiter dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5a1d0bc4f..42992043b 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ 4.0.2 3.0.5 9.22.2 - 1.19.0 + 1.19.1 From 41bb94eafc28701abb18df2f236bf75e1921a926 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Oct 2023 14:38:32 +0200 Subject: [PATCH 18/28] [dependency] Bump org.xerial.snappy:snappy-java (#53) Bumps [org.xerial.snappy:snappy-java](https://github.com/xerial/snappy-java) from 1.1.10.4 to 1.1.10.5. - [Release notes](https://github.com/xerial/snappy-java/releases) - [Commits](https://github.com/xerial/snappy-java/compare/v1.1.10.4...v1.1.10.5) --- updated-dependencies: - dependency-name: org.xerial.snappy:snappy-java dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 42992043b..f797fc63e 100644 --- a/pom.xml +++ b/pom.xml @@ -46,7 +46,7 @@ org.xerial.snappy snappy-java - 1.1.10.4 + 1.1.10.5 org.springframework.kafka From 619bbe255bcde4d127a5e1c6a8356c09e2a1877d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Oct 2023 14:43:50 +0200 Subject: [PATCH 19/28] [dependency] Bump token-support.version from 3.1.5 to 3.1.7 (#52) Bumps `token-support.version` from 3.1.5 to 3.1.7. Updates `no.nav.security:token-validation-spring` from 3.1.5 to 3.1.7 - [Release notes](https://github.com/navikt/token-support/releases) - [Commits](https://github.com/navikt/token-support/compare/3.1.5...3.1.7) Updates `no.nav.security:token-client-spring` from 3.1.5 to 3.1.7 - [Release notes](https://github.com/navikt/token-support/releases) - [Commits](https://github.com/navikt/token-support/compare/3.1.5...3.1.7) Updates `no.nav.security:token-validation-spring-test` from 3.1.5 to 3.1.7 - [Release notes](https://github.com/navikt/token-support/releases) - [Commits](https://github.com/navikt/token-support/compare/3.1.5...3.1.7) --- updated-dependencies: - dependency-name: no.nav.security:token-validation-spring dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: no.nav.security:token-client-spring dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: no.nav.security:token-validation-spring-test dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f797fc63e..4e79a35ae 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ 20230510130746_8b93e85 20230824131636_7aef062 7.4 - 3.1.5 + 3.1.7 2.2.0 4.0.4 LATEST From 0719396586e73836c68bb9be4cae1bab8e03b9de Mon Sep 17 00:00:00 2001 From: s148719 Date: Tue, 10 Oct 2023 08:14:13 +0200 Subject: [PATCH 20/28] =?UTF-8?q?Legge=20til=20milj=C3=B8variabel=20JAVA?= =?UTF-8?q?=5FTOOL=5FOPTIONS=20for=20remote=20JVM=20debug=20i=20dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .nais/feature.yaml | 1 + .nais/main.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/.nais/feature.yaml b/.nais/feature.yaml index 5fc817094..8e6f3c609 100644 --- a/.nais/feature.yaml +++ b/.nais/feature.yaml @@ -11,6 +11,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: diff --git a/.nais/main.yaml b/.nais/main.yaml index 5d65b0803..42f1f80b7 100644 --- a/.nais/main.yaml +++ b/.nais/main.yaml @@ -11,6 +11,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: From bf117da7b996e3155028c1bd55dfd8282179f607 Mon Sep 17 00:00:00 2001 From: s148719 Date: Tue, 10 Oct 2023 13:47:04 +0200 Subject: [PATCH 21/28] =?UTF-8?q?Fikse=20riktig=20httpstatus=20(401)=20for?= =?UTF-8?q?=20manglende=20autentisering=20ved=20=C3=A5=20fjerne=20overordn?= =?UTF-8?q?et=20h=C3=A5ndtering=20av=20Exception.class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../behandling/controller/ExceptionHandler.kt | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) 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 e8ede2785..b0166cbb1 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,8 +16,6 @@ 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") @@ -58,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: ") @@ -96,7 +83,11 @@ class ExceptionHandler { return error } - data class Error(val status: Int, val message: String, val fieldErrors: MutableList = mutableListOf()) { + data class Error( + val status: Int, + val message: String, + val fieldErrors: MutableList = mutableListOf() + ) { fun addFieldError( objectName: String, field: String, From 1ed625e1dc2e793cd50c4ed2c4d8821bfee8ebc4 Mon Sep 17 00:00:00 2001 From: s148719 Date: Tue, 10 Oct 2023 15:25:46 +0200 Subject: [PATCH 22/28] Fjerne Springs autogenererte kontrollere med "paths-to-match: /api/**" i application.yml --- src/main/resources/application.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index c356ea3df..fca7df377 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 From ff43b6462e3bbd9a5206f74ab8e924852a98dd74 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Wed, 11 Oct 2023 10:17:15 +0200 Subject: [PATCH 23/28] =?UTF-8?q?Bedre=20feil=20h=C3=A5ndtering=20for=20fo?= =?UTF-8?q?rskudd=20beregning=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bedre feil håndtering for forskudd beregning * Henter person fødselsdato når vi ikke har den i systemet --- .nais/feature.yaml | 3 ++ .nais/main.yaml | 3 ++ .nais/prod.yaml | 3 ++ .../aop/DefaultRestControllerAdvice.kt | 2 +- .../behandling/beregning/ForskuddBeregning.kt | 35 ++++++++++--------- .../model/BehandlingBeregningModel.kt | 17 +++++---- .../bidrag/behandling/config/CacheConfig.kt | 2 ++ .../consumer/BidragPersonConsumer.kt | 28 +++++++++++++++ .../BehandlingBeregnForskuddController.kt | 14 +++++--- .../database/datamodell/Behandling.kt | 5 ++- .../behandling/dto/HentPersonRequest.kt | 3 ++ .../behandling/dto/HentPersonResponse.kt | 6 ++++ .../service/BehandlingServiceTest.kt | 2 +- src/test/resources/application-test.yaml | 1 + 14 files changed, 91 insertions(+), 33 deletions(-) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragPersonConsumer.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/HentPersonRequest.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/HentPersonResponse.kt diff --git a/.nais/feature.yaml b/.nais/feature.yaml index 8e6f3c609..ffddcc5e3 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 + 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 @@ -32,6 +34,7 @@ database: autoResize: false tier: db-f1-micro outbound-access-apps: + - bidrag-person - bidrag-beregn-forskudd-rest-feature - bidrag-grunnlag-feature - bidrag-dokument-forsendelse-feature diff --git a/.nais/main.yaml b/.nais/main.yaml index 42f1f80b7..eaaab7e4e 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 + 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 @@ -32,6 +34,7 @@ database: autoResize: false tier: db-f1-micro outbound-access-apps: + - bidrag-person - bidrag-beregn-forskudd-rest - bidrag-grunnlag - bidrag-dokument-forsendelse diff --git a/.nais/prod.yaml b/.nais/prod.yaml index a9c3a9b7e..e7cacfbec 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 + 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 @@ -31,6 +33,7 @@ database: autoResize: false tier: db-custom-1-3840 outbound-access-apps: + - bidrag-person - bidrag-beregn-forskudd-rest - bidrag-grunnlag - bidrag-dokument-forsendelse 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 7f5cdca02..e9a6e057e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt @@ -98,6 +98,6 @@ class DefaultRestControllerAdvice { val (objectName, field) = it.destructured "$objectName.$field" } - return "${paths.joinToString("->")} kan ikke være null" + return "${paths.joinToString("->")} må fylles ut" } } 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 62444cac1..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,7 +15,6 @@ 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 @@ -28,8 +27,7 @@ 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, @@ -37,7 +35,7 @@ class ForskuddBeregning { innhold = POJONode( SoknadsBarnNode( soknadsbarnId = soknadBarn.id!!.toInt(), - fodselsdato = soknadBarn.fodtDato?.toLocalDate()?.toNoString(), + fodselsdato = fDato, ), ), ), @@ -52,7 +50,11 @@ 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 { @@ -211,20 +213,19 @@ class ForskuddBeregning { roller = behandling.roller, ) - fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle): BeregnGrunnlag = + 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), ) } @@ -254,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 9ebff4052..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 @@ -57,17 +57,17 @@ data class BehandlingBeregningModel private constructor( behandlingId }, { - ensure(virkningsDato != null) { raise("Behandling virkningsDato kan ikke være null") } + ensure(virkningsDato != null) { raise("Behandling virkningsDato må fylles ut") } virkningsDato.toLocalDate() }, { - ensure(datoTom != null) { raise("Behandling datoTom kan ikke være null") } + ensure(datoTom != null) { raise("Behandling Dato Til må fylles ut") } datoTom.toLocalDate() }, { mapOrAccumulate(sivilstand) { SivilstandModel( - it.datoFom?.toLocalDate() ?: raise("Sivilstands datoFom kan ikke være null"), + it.datoFom?.toLocalDate() ?: raise("Sivilstand Dato Fra må fylles ut"), it.datoTom?.toLocalDate(), it.sivilstandType, ) @@ -76,11 +76,10 @@ data class BehandlingBeregningModel private constructor( { 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"), + 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"), + datoFom = it.datoFom?.toLocalDate() ?: raise("Inntekts Dato Fra må fylles ut"), datoTom = it.datoTom?.toLocalDate(), ) } @@ -88,7 +87,7 @@ data class BehandlingBeregningModel private constructor( { mapOrAccumulate(barnetillegg) { BarnetilleggModel( - datoFom = it.datoFom?.toLocalDate() ?: raise("Barnetillegg datoFom kan ikke være null"), + datoFom = it.datoFom?.toLocalDate() ?: raise("Barnetillegg Dato Fra må fylles ut"), datoTom = it.datoTom?.toLocalDate(), belop = it.barnetillegg, ) @@ -97,7 +96,7 @@ data class BehandlingBeregningModel private constructor( { mapOrAccumulate(utvidetbarnetrygd) { UtvidetbarnetrygdModel( - datoFom = it.datoFom?.toLocalDate() ?: raise("Utvidetbarnetrygd datoFom kan ikke være null"), + datoFom = it.datoFom?.toLocalDate() ?: raise("Utvidetbarnetrygd Dato Fra må fylles ut"), datoTom = it.datoTom?.toLocalDate(), belop = it.belop, ) @@ -109,7 +108,7 @@ data class BehandlingBeregningModel private constructor( .flatMap { it.perioder }, ) { HusstandsBarnPeriodeModel( - datoFom = it.datoFom?.toLocalDate() ?: raise("HusstandsBarnPeriode datoFom kan ikke være null"), + datoFom = it.datoFom?.toLocalDate() ?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"), datoTom = it.datoTom?.toLocalDate(), ident = it.husstandsBarn.ident, boStatus = it.boStatus, 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 83927f54c..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,6 +27,7 @@ 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()) 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/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index 0ee0d18d3..71957c387 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -7,10 +7,12 @@ 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.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 @@ -23,6 +25,7 @@ class BehandlingBeregnForskuddController( private val behandlingService: BehandlingService, private val bidragBeregnForskuddConsumer: BidragBeregnForskuddConsumer, private val forskuddBeregning: ForskuddBeregning, + private val bidragPersonConsumer: BidragPersonConsumer ) { private fun isPeriodOneWithinPeriodTwo( datoFom1: LocalDate?, @@ -49,10 +52,13 @@ class BehandlingBeregnForskuddController( val behandlingModel = forskuddBeregning.toBehandlingBeregningModel(behandling).bind() val results = behandling - .roller - .filter { Rolletype.BARN == it.rolleType } + .getSøknadsBarn() .mapOrAccumulate { - val payload = forskuddBeregning.toPayload(behandlingModel, it) + val fDato = if (it.fodtDato == null) { + bidragPersonConsumer.hentPerson(it.ident).fødselsdato + } else it.fodtDato.toLocalDate().toNoString() + + val payload = forskuddBeregning.toPayload(behandlingModel, it, fDato) try { val respons = 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 070f7ace9..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,6 +11,7 @@ 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 @@ -70,4 +71,6 @@ class Behandling( @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/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/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt index a75eaa25d..8e72c5259 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -114,7 +114,7 @@ class BehandlingServiceTest : TestContainerRunner() { ), ) - assertEquals(2, behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolleType == Rolletype.BARN }.size) + assertEquals(2, behandlingService.hentBehandlingById(b.id!!).getSøknadsBarn().size) } @Test 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 From ba940525ae1e8ef09a9aa560351d66acae859dc5 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Thu, 12 Oct 2023 13:46:07 +0200 Subject: [PATCH 24/28] Legger til deploy-to-dev action (#58) --- .github/workflows/pr.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 99619b3dc..d5c1f6d5b 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -1,8 +1,10 @@ name: Deploy to dev on: + workflow_dispatch: pull_request: types: [ ready_for_review, opened, synchronize ] branches: + - '**' - '!dependabot/**' env: From 57f450d3d5702a0d7aa6b7b9ff6af1b9f165c702 Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Fri, 13 Oct 2023 09:47:47 +0200 Subject: [PATCH 25/28] Oppdaterer README.md (#59) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9bf9b5189..660b566b5 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Legg til Github secret `NAIS_DEPLOY_APIKEY` hvor secret hentes fra [Api key](htt ## Kjøre applikasjonen lokalt -Start opp applikasjonen ved å kjøre [BidragTemplateLocal.kt](src/test/kotlin/no/nav/bidrag/behandling/BidragSpringAppLocal.kt). +Start opp applikasjonen ved å kjøre [BidragBehandlingLocal.kt](src/test/kotlin/no/nav/bidrag/behandling/BidragBehandlingLocal.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).
From b1a76bbca514115a5492cbcaab193af7d1b90adf Mon Sep 17 00:00:00 2001 From: andrii <25188+unorsk@users.noreply.github.com> Date: Fri, 13 Oct 2023 10:17:58 +0200 Subject: [PATCH 26/28] Fikser tilgang til bidrag-person (#60) * Fikser tilgang til bidrag-person --- .nais/feature.yaml | 7 ++++--- .nais/main.yaml | 7 ++++--- .nais/prod.yaml | 7 ++++--- src/main/resources/application.yaml | 9 +++++++++ 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/.nais/feature.yaml b/.nais/feature.yaml index ffddcc5e3..c38b26335 100644 --- a/.nais/feature.yaml +++ b/.nais/feature.yaml @@ -2,7 +2,7 @@ name: bidrag-behandling-feature ingresses: - https://bidrag-behandling-feature.intern.dev.nav.no env: - BIDRAG_PERSON_URL: https://bidrag-person + 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 @@ -34,8 +34,9 @@ database: autoResize: false tier: db-f1-micro outbound-access-apps: - - bidrag-person - 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 eaaab7e4e..3f9cbb996 100644 --- a/.nais/main.yaml +++ b/.nais/main.yaml @@ -2,7 +2,7 @@ name: bidrag-behandling ingresses: - https://bidrag-behandling.intern.dev.nav.no env: - BIDRAG_PERSON_URL: https://bidrag-person + 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 @@ -34,8 +34,9 @@ database: autoResize: false tier: db-f1-micro outbound-access-apps: - - bidrag-person - 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 e7cacfbec..773b1874e 100644 --- a/.nais/prod.yaml +++ b/.nais/prod.yaml @@ -2,7 +2,7 @@ name: bidrag-behandling ingresses: - https://bidrag-behandling.intern.nav.no env: - BIDRAG_PERSON_URL: https://bidrag-person + 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 @@ -33,8 +33,9 @@ database: autoResize: false tier: db-custom-1-3840 outbound-access-apps: - - bidrag-person - 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/src/main/resources/application.yaml b/src/main/resources/application.yaml index fca7df377..ed95e26b2 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -15,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 From 67d36d207f370244011540fd61df73fbb3f7c949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kjetil=20Sk=C3=A5r?= <43172034+s148719@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:04:56 +0200 Subject: [PATCH 27/28] =?UTF-8?q?Endre=20transaksjonsh=C3=A5ndtering=20og?= =?UTF-8?q?=20oppdatere=20tester=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Endre transaksjonshåndtering og oppdatere tester * Oppdatere Readme for lokal kjøring --- .gitignore | 3 +- README.md | 32 +- docker-compose.yaml | 6 + .../behandling/config/DefaultConfiguration.kt | 5 +- .../BehandlingBeregnForskuddController.kt | 1 - .../behandling/controller/ExceptionHandler.kt | 2 +- .../controller/InntekterController.kt | 4 +- .../behandling/database/datamodell/Inntekt.kt | 8 +- .../database/datamodell/InntektPostDomain.kt | 6 +- .../behandling/service/BehandlingService.kt | 40 +- .../behandling/transformers/DtoExtensions.kt | 42 +- .../beregning/ForskuddBeregningTest.kt | 11 +- .../BehandlingBeregnForskuddControllerTest.kt | 2 +- .../controller/InntekterControllerTest.kt | 278 ++++++-- .../service/BehandlingServiceTest.kt | 651 +++++++++--------- 15 files changed, 670 insertions(+), 421 deletions(-) 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/README.md b/README.md index 660b566b5..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 -Start opp applikasjonen ved å kjøre [BidragBehandlingLocal.kt](src/test/kotlin/no/nav/bidrag/behandling/BidragBehandlingLocal.kt). +#### 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/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/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index 71957c387..fd9ecdada 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -91,5 +91,4 @@ class BehandlingBeregnForskuddController( return ForskuddBeregningRespons(result.getOrNull(), result.leftOrNull()) } - } 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 b0166cbb1..fbba0ba1a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt @@ -86,7 +86,7 @@ class ExceptionHandler { data class Error( val status: Int, val message: String, - val fieldErrors: MutableList = mutableListOf() + val fieldErrors: MutableList = mutableListOf(), ) { fun addFieldError( objectName: String, 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 021cfd54a..5829990c6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt @@ -41,11 +41,11 @@ 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, 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 2f0edd950..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,19 +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 0637697fa..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,9 +12,6 @@ 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, @@ -22,4 +19,7 @@ class InntektPostDomain( @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/service/BehandlingService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt index e042a9274..83c435b2f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -1,5 +1,6 @@ package no.nav.bidrag.behandling.service +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 @@ -19,7 +20,9 @@ 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( @@ -88,6 +91,7 @@ class BehandlingService( fun hentBehandlinger(): List = behandlingRepository.hentBehandlinger() + @Transactional fun oppdaterInntekter( behandlingId: Long, inntekter: MutableSet, @@ -95,25 +99,31 @@ class BehandlingService( utvidetbarnetrygd: MutableSet, inntektBegrunnelseMedIVedtakNotat: String?, inntektBegrunnelseKunINotat: String?, - ) = behandlingRepository.save( - behandlingRepository.findBehandlingById(behandlingId) + ) { + var behandling = behandlingRepository.findBehandlingById(behandlingId) .orElseThrow { behandlingNotFoundException(behandlingId) } - .let { - it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat - it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat - it.inntekter.clear() - it.inntekter.addAll(inntekter) + behandling.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat + behandling.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat - it.barnetillegg.clear() - it.barnetillegg.addAll(barnetillegg) + if (behandling.inntekter != inntekter) { + log.info("Oppdaterer inntekter for behandlingsid $behandlingId") + behandling.inntekter.clear() + behandling.inntekter.addAll(inntekter) + } - it.utvidetbarnetrygd.clear() - it.utvidetbarnetrygd.addAll(utvidetbarnetrygd) + if (behandling.barnetillegg != barnetillegg) { + log.info("Oppdaterer barnetillegg for behandlingsid $behandlingId") + behandling.barnetillegg.clear() + behandling.barnetillegg.addAll(barnetillegg) + } - it - }, - ) + if (behandling.utvidetbarnetrygd != utvidetbarnetrygd) { + log.info("Oppdaterer utvidet barnetrygd for behandlingsid $behandlingId") + behandling.utvidetbarnetrygd.clear() + behandling.utvidetbarnetrygd.addAll(utvidetbarnetrygd) + } + } fun updateVirkningsTidspunkt( behandlingId: Long, 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 d94716684..520f850c4 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -69,7 +69,14 @@ fun Set.toDomain(husstandsBarn: HusstandsBarn) = fun Set.toHusstandsBarnDto() = this.map { - HusstandsBarnDto(it.id!!, it.medISaken, it.perioder.toHusstandsBarnPeriodeDto(), it.ident, it.navn, it.foedselsDato?.toLocalDate()) + HusstandsBarnDto( + it.id!!, + it.medISaken, + it.perioder.toHusstandsBarnPeriodeDto(), + it.ident, + it.navn, + it.foedselsDato?.toLocalDate(), + ) }.toSet() fun Set.toDomain(behandling: Behandling) = @@ -91,8 +98,15 @@ 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, + 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 @@ -100,7 +114,7 @@ fun Set.toInntektDomain(behandling: Behandling) = fun Set.toInntektPostDomain(inntekt: Inntekt) = this.map { - InntektPostDomain(inntekt, it.beløp, it.kode, it.visningsnavn) + InntektPostDomain(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt) }.toSet() fun Set.toInntektPost() = @@ -110,11 +124,27 @@ fun Set.toInntektPost() = 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()) + 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()) + return OpplysningerDto( + this.id!!, + this.behandling.id!!, + this.opplysningerType, + this.data, + this.hentetDato.toLocalDate(), + ) } fun Behandling.tilForsendelseRolleDto() = 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 aa484c75e..627ec37a8 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt @@ -51,7 +51,6 @@ class ForskuddBeregningTest { ), ) - splitPeriods.size shouldBe 1 } @@ -74,9 +73,8 @@ class ForskuddBeregningTest { ), ) - splitPeriods.size shouldBe 1 - splitPeriods[0].antall shouldBe 3.0 + splitPeriods[0].antall shouldBe 3.0 } @Test @@ -103,7 +101,6 @@ class ForskuddBeregningTest { cal2.add(Calendar.MONTH, 1) val tilDato3 = cal2.time - val splitPeriods = forskuddBeregning.splitPeriods( listOf( @@ -130,13 +127,13 @@ class ForskuddBeregningTest { 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( 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 f7d798adf..9c6e111c5 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt @@ -97,7 +97,7 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { ) b.inntekter = mutableSetOf( - Inntekt(b, true, "beskrivelse", BigDecimal.TEN, datoFom, datoTom, "ident", true), + Inntekt("lønn", BigDecimal.TEN, datoFom, datoTom, "ident", true, true), ) b.barnetillegg = mutableSetOf( 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 b759da635..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,83 +56,233 @@ class InntekterControllerTest : KontrollerTestRunner() { @Autowired lateinit var behandlingRepository: BehandlingRepository - @Test - fun `skal opprette og oppdatere inntekter`() { - // 1. Create new behandling - val behandling: Behandling = - behandlingRepository.save( - Behandling( - BehandlingType.FORSKUDD, - SoknadType.FASTSETTELSE, - Date(1), - Date(1), - Date(1), - "123", - 123, - null, - "ENH", - SoknadFraType.BIDRAGSMOTTAKER, - null, - null, - ), + @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, ) - val inn = - TestInntektDto( - null, - true, - "some0", - "1.123", - "2022-10-10", - "2022-10-10", - "blablabla", - setOf(InntektPost("ABC", "ABC", BigDecimal.TEN)), + // 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, ) -// 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", + // 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, ) - assertEquals(HttpStatus.OK, r.statusCode) - assertEquals(1, r.body!!.inntekter.size) + // 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) - // 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)), + // when + val inntekt1 = testInntektDto().copy( + id = null, + 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", + 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, ) - 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 }) + // 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() - // 4. Remove inntekter - val r2 = - httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${behandling.id}/inntekter", + 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, ) - assertEquals(HttpStatus.OK, r.statusCode) - assertEquals(0, r2.body!!.inntekter.size) + // 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, + SoknadType.FASTSETTELSE, + Date(1), + Date(1), + Date(1), + "123", + 123, + null, + "ENH", + SoknadFraType.BIDRAGSMOTTAKER, + null, + null, + ), + ) + return behandling + } + + fun createBehandling(): Behandling = behandlingService.createBehandling(behandling()) } 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 8e72c5259..85bd37e7f 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -26,8 +26,10 @@ 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 @@ -43,78 +45,356 @@ class BehandlingServiceTest : TestContainerRunner() { @PersistenceContext lateinit var entityManager: EntityManager - @Test - fun `skal opprette en behandling`() { - val actualBehandling = createBehandling() + @Nested + open inner class HenteBehandling { + @Test + fun `skal caste 404 exception hvis behandlingen ikke er der`() { + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(1234) + } + } + } + + @Nested + open inner class OppretteBehandling { + @Test + fun `skal opprette en forskuddsbehandling`() { + val actualBehandling = createBehandling() + + assertNotNull(actualBehandling.id) + assertEquals(BehandlingType.FORSKUDD, actualBehandling.behandlingType) + assertEquals(3, actualBehandling.roller.size) + + val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(3, actualBehandlingFetched.roller.size) + assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato) + } + + @Test + fun `skal opprette en behandling med inntekter`() { + val behandling = prepareBehandling() + + behandling.inntekter = mutableSetOf(Inntekt("", BigDecimal.valueOf(555.55), null, null, "ident", true, true, behandling = behandling)) + + val actualBehandling = behandlingService.createBehandling(behandling) + + assertNotNull(actualBehandling.id) + + val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) + + 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, + ) + + 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) + } + + @Test + fun `skal oppdatere virkningstidspunkt data`() { + val behandling = prepareBehandling() + + val NOTAT = "New Notat" + val MED_I_VEDTAK = "med i vedtak" - assertNotNull(actualBehandling.id) - assertEquals(BehandlingType.FORSKUDD, actualBehandling.behandlingType) - assertEquals(3, actualBehandling.roller.size) + val createdBehandling = behandlingService.createBehandling(behandling) - val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) + assertNotNull(createdBehandling.id) + assertNull(createdBehandling.aarsak) + + behandlingService.updateVirkningsTidspunkt( + createdBehandling.id!!, + ForskuddAarsakType.BF, + null, + NOTAT, + MED_I_VEDTAK, + ) - assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) - assertEquals(3, actualBehandlingFetched.roller.size) - assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato) + val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) + + assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak) + assertEquals(NOTAT, updatedBehandling.virkningsTidspunktBegrunnelseKunINotat) + assertEquals(MED_I_VEDTAK, updatedBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat) + } } - @Test - fun `delete behandling`() { - val behandling = createBehandling() - behandlingService.deleteBehandlingById(behandling.id!!) + @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!!) + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(behandling.id!!) + } } } - @Test - fun `legge til flere roller`() { - val b = createBehandling() - - behandlingService.syncRoller( - b.id!!, - listOf( - CreateRolleDto( - CreateRolleRolleType.BARN, - "newident", - Date(1), - Date(2), + @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), + ), + ), + ) + + 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), ), - ), - ) + ) + + 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)), + ), + ) - assertEquals(4, behandlingService.hentBehandlingById(b.id!!).roller.size) + assertEquals(2, behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolleType == Rolletype.BARN }.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), - ), - ) - - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.hentBehandlingById(b.id!!) + @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") + } + } + + @Test + fun `skal oppdatere en behandling`() { + 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) + + val oppdatertBehandling = + behandlingService.oppdaterBehandling( + createdBehandling.id!!, + MED_I_VEDTAK, + NOTAT, + MED_I_VEDTAK, + NOTAT, + MED_I_VEDTAK, + NOTAT, + ) + + val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) + + assertEquals(3, hentBehandlingById.roller.size) + assertEquals(NOTAT, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat) + assertEquals(MED_I_VEDTAK, oppdatertBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat) + } + + @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 `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)), - ), - ) - - assertEquals(2, behandlingService.hentBehandlingById(b.id!!).getSøknadsBarn().size) + @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!!) + + 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) + } + + @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", + ) + + val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(1, expectedBehandling.inntekter.size) + assertEquals(1, expectedBehandling.barnetillegg.size) + assertNotNull(expectedBehandling.inntektBegrunnelseMedIVedtakNotat) + assertNotNull(expectedBehandling.inntektBegrunnelseKunINotat) + + behandlingService.oppdaterInntekter( + actualBehandling.id!!, + mutableSetOf(), + expectedBehandling.barnetillegg, + mutableSetOf(), + null, + null, + ) + + val expectedBehandlingWithoutInntekter = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size) + assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size) + assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseMedIVedtakNotat) + assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseKunINotat) + } } @Test @@ -141,32 +421,6 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(1L, deletedCount) } - @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 opprette en behandling med inntekter`() { - val behandling = prepareBehandling() - - behandling.inntekter = mutableSetOf(Inntekt(behandling, true, "", BigDecimal.valueOf(555.55), null, null, "ident", true)) - - val actualBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(actualBehandling.id) - - val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) - assertEquals(1, actualBehandlingFetched.inntekter.size) - assertEquals(BigDecimal.valueOf(555.55), actualBehandlingFetched.inntekter.iterator().next().belop) - } - companion object { fun prepareBehandling(): Behandling { val behandling = @@ -212,239 +466,6 @@ class BehandlingServiceTest : TestContainerRunner() { } } - @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, - ), - ), - 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!!) - - 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) - } - - @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", - ) - - val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(1, expectedBehandling.inntekter.size) - assertEquals(1, expectedBehandling.barnetillegg.size) - assertNotNull(expectedBehandling.inntektBegrunnelseMedIVedtakNotat) - assertNotNull(expectedBehandling.inntektBegrunnelseKunINotat) - - behandlingService.oppdaterInntekter( - actualBehandling.id!!, - mutableSetOf(), - expectedBehandling.barnetillegg, - mutableSetOf(), - null, - null, - ) - - val expectedBehandlingWithoutInntekter = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size) - assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size) - assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseMedIVedtakNotat) - assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseKunINotat) - } - - @Test - fun `skal caste 404 exception hvis behandlingen ikke er der`() { - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.hentBehandlingById(1234) - } - } - - @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 oppdatere en behandling`() { - 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) - - val oppdatertBehandling = - behandlingService.oppdaterBehandling( - createdBehandling.id!!, - MED_I_VEDTAK, - NOTAT, - MED_I_VEDTAK, - NOTAT, - MED_I_VEDTAK, - NOTAT, - ) - - val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) - - assertEquals(3, hentBehandlingById.roller.size) -// assertEquals(AvslagType.MANGL_DOK, hentBehandlingById.avslag) - - assertEquals(NOTAT, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat) - assertEquals(MED_I_VEDTAK, oppdatertBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat) - } - - @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 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, - ) - - 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 createBehandling(): Behandling { val behandling = prepareBehandling() From f1c88d63202fba2b6c412e030814ee85e2cc9d9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kjetil=20Sk=C3=A5r?= <43172034+s148719@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:17:18 +0200 Subject: [PATCH 28/28] Oppdatere avhengigheter (#65) --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 4e79a35ae..20b0db90f 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 5.7.2 4.0.2 3.0.5 - 9.22.2 + 9.22.3 1.19.1 @@ -51,7 +51,7 @@ org.springframework.kafka spring-kafka - 3.0.11 + 3.0.12 @@ -159,7 +159,7 @@ com.fasterxml.jackson.module jackson-module-kotlin - 2.15.2 + 2.15.3