From f69b8b0b712443c99b135219d49737e7b75bb043 Mon Sep 17 00:00:00 2001 From: Gustav Berggren <83211434+b162214@users.noreply.github.com> Date: Tue, 3 Oct 2023 16:35:11 +0200 Subject: [PATCH 1/6] Tester at enum i domenemodellen tilsvarer kodeverk verdier (#307) Co-authored-by: Mikael Bjerga --- .../dokument/EnumTilKodeverkListeTest.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/EnumTilKodeverkListeTest.kt diff --git a/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/EnumTilKodeverkListeTest.kt b/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/EnumTilKodeverkListeTest.kt new file mode 100644 index 000000000..eba5bec6c --- /dev/null +++ b/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/EnumTilKodeverkListeTest.kt @@ -0,0 +1,23 @@ +package no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument + +import io.kotest.core.spec.style.FunSpec +import io.kotest.datatest.withData +import io.kotest.matchers.collections.shouldBeIn +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.BegrunnelseIngenEllerRedusertUtbetalingKode +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.NaturalytelseKode +import no.nav.inntektsmelding.xml.kodeliste._20210216.BegrunnelseIngenEllerRedusertUtbetalingKodeliste +import no.nav.inntektsmelding.xml.kodeliste._20210216.NaturalytelseKodeliste + +class EnumTilKodeverkListeTest : FunSpec({ + context("Sjekk at NaturalytelseKodeliste i kodeverk tilsvarer NaturalYtelseKode i domenemodellen") { + withData(NaturalytelseKode.entries) { kode -> + kode.value shouldBeIn NaturalytelseKodeliste.entries.map { it.value().uppercase() } + } + } + + context("Sjekk at BegrunnelseIngenEllerRedusertUtbetalingKodeliste i kodeverk tilsvarer BegrunnelseIngenEllerRedusertUtbetalingKode i domenemodellen") { + withData(BegrunnelseIngenEllerRedusertUtbetalingKode.entries.map { it.value }) { kode -> + kode shouldBeIn BegrunnelseIngenEllerRedusertUtbetalingKodeliste.entries.map { it.value() } + } + } +}) From cd37ed675daa34faa70cb2e18eeef1a4bdfb6f73 Mon Sep 17 00:00:00 2001 From: Gustav Berggren <83211434+b162214@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:10:59 +0200 Subject: [PATCH 2/6] ikke linkt til nav.no i varselet (#308) --- .../inntektsmelding/notifikasjon/OpprettOppgave.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/OpprettOppgave.kt b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/OpprettOppgave.kt index 3da8f6074..bff016614 100644 --- a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/OpprettOppgave.kt +++ b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/OpprettOppgave.kt @@ -63,7 +63,7 @@ class OpprettOppgaveLoeser( grupperingsid = forespørselId, varslingTittel = "Nav trenger inntektsmelding", varslingInnhold = "En av dine ansatte har sendt søknad for sykepenger og vi trenger inntektsmelding for å behandle " + - "søknaden. Logg inn på Min side – arbeidsgiver på nav.no" + "søknaden. Logg inn på Min side – arbeidsgiver hos NAV" ) }.also { requestTimer.observeDuration() From 6f68b5f7d768577fbe21517b5d00c9b8da0e0689 Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Fri, 6 Oct 2023 13:44:53 +0200 Subject: [PATCH 3/6] Forhindre evig meldingsloop ved feil (#310) --- .../inntektsmelding/tilgangservice/TilgangService.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangService.kt b/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangService.kt index 9306428a0..3cf666486 100644 --- a/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangService.kt +++ b/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangService.kt @@ -206,7 +206,7 @@ class TilgangService( else -> null } - return if (manglendeDatafelt != null) { + if (manglendeDatafelt != null) { val feilmelding = Feilmelding("Teknisk feil, prøv igjen senere.", -1, manglendeDatafelt) sikkerLogger.error("Mottok feilmelding: '${feilmelding.melding}'") @@ -222,11 +222,9 @@ class TilgangService( .toJson(FeilReport.serializer()) feilKey.write(feilReport) - - Transaction.TERMINATE - } else { - Transaction.IN_PROGRESS } + + return Transaction.TERMINATE } private fun RedisKey.write(json: JsonElement) { From 5429c31694c51008188da0c3a79c61e963ad7054 Mon Sep 17 00:00:00 2001 From: Gustav Berggren <83211434+b162214@users.noreply.github.com> Date: Fri, 6 Oct 2023 14:58:34 +0200 Subject: [PATCH 4/6] Ferietrekk endring (#309) --- dokument/src/main/resources/spesifikasjon.yaml | 3 +++ .../inntektsmelding/joark/dokument/PdfDokument.kt | 5 +++++ .../joark/mappers/InntektEndringAarsakMapper.kt | 2 ++ 3 files changed, 10 insertions(+) diff --git a/dokument/src/main/resources/spesifikasjon.yaml b/dokument/src/main/resources/spesifikasjon.yaml index d5128fc00..8d3ac9226 100644 --- a/dokument/src/main/resources/spesifikasjon.yaml +++ b/dokument/src/main/resources/spesifikasjon.yaml @@ -283,6 +283,9 @@ components: Feilregistrert: allOf: - $ref: '#/components/schemas/InntektEndringAarsak' + Ferietrekk: + allOf: + - $ref: '#/components/schemas/InntektEndringAarsak' InntektsmeldingDokument: type: object diff --git a/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/PdfDokument.kt b/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/PdfDokument.kt index 177468f7f..47180f3b3 100644 --- a/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/PdfDokument.kt +++ b/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/dokument/PdfDokument.kt @@ -5,6 +5,7 @@ package no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Bonus import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Feilregistrert import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Ferie +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Ferietrekk import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.InntektsmeldingDokument import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.NyStilling import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.NyStillingsprosent @@ -193,6 +194,7 @@ class PdfDokument(val dokument: InntektsmeldingDokument) { is Sykefravaer -> addSykefravaer(endringsårsak) is Nyansatt -> addNyAnsatt() is Feilregistrert -> addFeilregistrert() + is Ferietrekk -> addFerietrekk() else -> throw IllegalArgumentException("Type ${endringsårsak.typpe} håndteres ikke. Legg til hjelpefunksjon for å løse feilen.") } } @@ -250,6 +252,9 @@ class PdfDokument(val dokument: InntektsmeldingDokument) { // addLabel("Estimert årlig bonus", årligBonus.toNorsk()) // addLabel("Dato siste bonus", datoBonus.toNorsk()) } + private fun addFerietrekk() { + addLabel(FORKLARING_ENDRING, "Ferietrekk") + } private fun addRefusjon() { addSection("Refusjon") diff --git a/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/mappers/InntektEndringAarsakMapper.kt b/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/mappers/InntektEndringAarsakMapper.kt index ba0732890..cda5505a3 100644 --- a/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/mappers/InntektEndringAarsakMapper.kt +++ b/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/mappers/InntektEndringAarsakMapper.kt @@ -3,6 +3,7 @@ package no.nav.helsearbeidsgiver.inntektsmelding.joark.mappers import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Bonus import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Feilregistrert import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Ferie +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Ferietrekk import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.InntektEndringAarsak import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.NyStilling import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.NyStillingsprosent @@ -28,6 +29,7 @@ fun InntektEndringAarsak.stringValue(): String { is Tariffendring -> "$typpe: fra $gjelderFra" is VarigLonnsendring -> "Varig lønnsendring: fra $gjelderFra" is Feilregistrert -> "Mangelfull eller uriktig rapportering til A-ordningen" + is Ferietrekk -> "Ferietrekk" else -> typpe } } From 37c2002800cd017581c865efefd3e387534e0a85 Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Tue, 10 Oct 2023 13:59:08 +0200 Subject: [PATCH 5/6] =?UTF-8?q?Fjern=20overfl=C3=B8dige=20felt=20fra=20ref?= =?UTF-8?q?usjon=20(#311)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/innsending/InnsendingRoute.kt | 41 +++++--- .../api/innsending/InnsendingRouteKtTest.kt | 94 +++++++++++++++++++ 2 files changed, 123 insertions(+), 12 deletions(-) diff --git a/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRoute.kt b/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRoute.kt index eece3a167..a50544b73 100644 --- a/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRoute.kt +++ b/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRoute.kt @@ -10,6 +10,7 @@ import io.ktor.server.routing.route import kotlinx.serialization.builtins.serializer import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.FullLonnIArbeidsgiverPerioden import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.InnsendingRequest +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Refusjon import no.nav.helsearbeidsgiver.felles.json.Jackson import no.nav.helsearbeidsgiver.inntektsmelding.api.RedisPollerTimeoutException import no.nav.helsearbeidsgiver.inntektsmelding.api.Routes @@ -42,20 +43,36 @@ fun RouteExtra.innsendingRoute() { if (forespoerselId != null) { try { - val request = Jackson.fromJson(call.receiveText()).let { - // TODO gjør denne sjekken ved opprettelse - if (it.fullLønnIArbeidsgiverPerioden?.utbetalerFullLønn == true) { - it.copy( - fullLønnIArbeidsgiverPerioden = FullLonnIArbeidsgiverPerioden( - utbetalerFullLønn = true, - begrunnelse = null, - utbetalt = null + val request = Jackson.fromJson(call.receiveText()) + .let { + // TODO gjør denne sjekken ved opprettelse + if (it.fullLønnIArbeidsgiverPerioden?.utbetalerFullLønn == true) { + it.copy( + fullLønnIArbeidsgiverPerioden = FullLonnIArbeidsgiverPerioden( + utbetalerFullLønn = true, + begrunnelse = null, + utbetalt = null + ) ) - ) - } else { - it + } else { + it + } + } + .let { + // TODO gjør denne sjekken ved opprettelse + if (!it.refusjon.utbetalerHeleEllerDeler) { + it.copy( + refusjon = Refusjon( + utbetalerHeleEllerDeler = false, + refusjonPrMnd = null, + refusjonOpphører = null, + refusjonEndringer = null + ) + ) + } else { + it + } } - } "Mottok innsending med forespørselId: $forespoerselId".let { logger.info(it) diff --git a/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRouteKtTest.kt b/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRouteKtTest.kt index f282b5af4..d773eda85 100644 --- a/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRouteKtTest.kt +++ b/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRouteKtTest.kt @@ -2,12 +2,19 @@ package no.nav.helsearbeidsgiver.inntektsmelding.api.innsending +import io.kotest.matchers.shouldBe import io.ktor.client.statement.bodyAsText import io.ktor.http.HttpStatusCode import io.mockk.clearAllMocks import io.mockk.coEvery import io.mockk.every +import io.mockk.verifySequence +import kotlinx.serialization.json.JsonNull import no.nav.helsearbeidsgiver.felles.Tilgang +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.BegrunnelseIngenEllerRedusertUtbetalingKode +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.FullLonnIArbeidsgiverPerioden +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Refusjon +import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.RefusjonEndring import no.nav.helsearbeidsgiver.felles.json.Jackson import no.nav.helsearbeidsgiver.felles.test.mock.DELVIS_INNSENDING_REQUEST import no.nav.helsearbeidsgiver.felles.test.mock.GYLDIG_INNSENDING_REQUEST @@ -23,6 +30,8 @@ import no.nav.helsearbeidsgiver.utils.json.fromJson import no.nav.helsearbeidsgiver.utils.json.parseJson import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.json.toJsonStr +import no.nav.helsearbeidsgiver.utils.test.date.april +import no.nav.helsearbeidsgiver.utils.test.date.mars import no.nav.helsearbeidsgiver.utils.test.mock.mockConstructor import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.BeforeEach @@ -117,6 +126,91 @@ class InnsendingRouteKtTest : ApiTest() { assertEquals(InnsendingResponse(Mock.forespoerselId).toJsonStr(InnsendingResponse.serializer()), response.bodyAsText()) } + @Test + fun `fjern ugyldige verdier ved utbetaling av full lønn i arbeisdgiverperioden`() = testApi { + mockTilgang(Tilgang.HAR_TILGANG) + + val mockClientId = UUID.randomUUID() + + // Må bare returnere noe + coEvery { anyConstructed().hent(mockClientId, any(), any()) } returns JsonNull + + val request = GYLDIG_INNSENDING_REQUEST.copy( + fullLønnIArbeidsgiverPerioden = FullLonnIArbeidsgiverPerioden( + utbetalerFullLønn = true, + begrunnelse = BegrunnelseIngenEllerRedusertUtbetalingKode.STREIK_ELLER_LOCKOUT, + utbetalt = 1_000_000.0.toBigDecimal() + ) + ) + .let(Jackson::toJson).parseJson() + + mockConstructor(InnsendingProducer::class) { + every { anyConstructed().publish(any(), any(), any()) } returns mockClientId + + post(path, request) + + verifySequence { + anyConstructed().publish( + forespoerselId = any(), + request = withArg { + it.fullLønnIArbeidsgiverPerioden shouldBe FullLonnIArbeidsgiverPerioden( + utbetalerFullLønn = true, + begrunnelse = null, + utbetalt = null + ) + }, + arbeidsgiverFnr = any() + ) + } + } + } + + @Test + fun `fjern ugyldige verdier ved ingen refusjon`() = testApi { + mockTilgang(Tilgang.HAR_TILGANG) + + val mockClientId = UUID.randomUUID() + + // Må bare returnere noe + coEvery { anyConstructed().hent(mockClientId, any(), any()) } returns JsonNull + + val request = GYLDIG_INNSENDING_REQUEST.copy( + refusjon = Refusjon( + utbetalerHeleEllerDeler = false, + refusjonPrMnd = 2_222_222.0.toBigDecimal(), + refusjonOpphører = 28.april, + refusjonEndringer = listOf( + RefusjonEndring( + beløp = 1_111_111.0.toBigDecimal(), + dato = 20.mars + ) + ) + ) + ) + .let(Jackson::toJson).parseJson() + + mockConstructor(InnsendingProducer::class) { + every { anyConstructed().publish(any(), any(), any()) } returns mockClientId + + post(path, request) + + verifySequence { + anyConstructed().publish( + forespoerselId = any(), + request = withArg { + it.refusjon shouldBe Refusjon( + utbetalerHeleEllerDeler = false, + refusjonPrMnd = null, + refusjonOpphører = null, + refusjonEndringer = null + ) + }, + arbeidsgiverFnr = any() + ) + } + } + } + private object Mock { val forespoerselId: UUID = UUID.randomUUID() } From f097a5784283ed0ee57733003fd6fafafd889203 Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Tue, 10 Oct 2023 15:37:09 +0200 Subject: [PATCH 6/6] =?UTF-8?q?Fjern=20overfl=C3=B8dige=20felt=20dersom=20?= =?UTF-8?q?man=20ikke=20ber=20om=20AGP=20(#312)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/innsending/InnsendingRoute.kt | 17 +++++++++ .../api/innsending/InnsendingValidate.kt | 4 -- .../api/innsending/InnsendingRouteKtTest.kt | 37 +++++++++++++++++++ .../innsending/InnsendingValidateKtTest.kt | 8 +--- 4 files changed, 56 insertions(+), 10 deletions(-) diff --git a/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRoute.kt b/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRoute.kt index a50544b73..11e5d4855 100644 --- a/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRoute.kt +++ b/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRoute.kt @@ -73,6 +73,23 @@ fun RouteExtra.innsendingRoute() { it } } + .let { + // TODO gjør denne sjekken ved opprettelse + if (it.forespurtData?.contains("arbeidsgiverperiode") == false) { + if (it.fullLønnIArbeidsgiverPerioden != null) { + "Frontend sender med ${InnsendingRequest::fullLønnIArbeidsgiverPerioden.name} når man ikke ber om AGP." + .also { feilmelding -> + logger.error(feilmelding) + sikkerLogger.error(feilmelding) + } + } + it.copy( + fullLønnIArbeidsgiverPerioden = null + ) + } else { + it + } + } "Mottok innsending med forespørselId: $forespoerselId".let { logger.info(it) diff --git a/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingValidate.kt b/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingValidate.kt index d4b8bfe85..9cf703f5c 100644 --- a/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingValidate.kt +++ b/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingValidate.kt @@ -16,7 +16,6 @@ import org.valiktor.functions.isGreaterThanOrEqualTo import org.valiktor.functions.isLessThan import org.valiktor.functions.isNotEmpty import org.valiktor.functions.isNotNull -import org.valiktor.functions.isNull import org.valiktor.functions.isTrue import org.valiktor.functions.validate import org.valiktor.functions.validateForEach @@ -36,9 +35,6 @@ fun InnsendingRequest.validate() { validate(FullLonnIArbeidsgiverPerioden::utbetalt).isLessThan(1_000_000.0.toBigDecimal()) } } - } else { - // skal ikke komme i delvis im - gir ikke mening - og da bør vi heller ikke ta det imot og lagre det!! - validate(InnsendingRequest::fullLønnIArbeidsgiverPerioden).isNull() } // Den ansatte validate(InnsendingRequest::orgnrUnderenhet).isNotNull() diff --git a/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRouteKtTest.kt b/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRouteKtTest.kt index d773eda85..9316d5a52 100644 --- a/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRouteKtTest.kt +++ b/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingRouteKtTest.kt @@ -2,6 +2,7 @@ package no.nav.helsearbeidsgiver.inntektsmelding.api.innsending +import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.shouldBe import io.ktor.client.statement.bodyAsText import io.ktor.http.HttpStatusCode @@ -211,6 +212,42 @@ class InnsendingRouteKtTest : ApiTest() { } } + @Test + fun `fjern ugyldige verdier dersom man ikke spør om AGP`() = testApi { + mockTilgang(Tilgang.HAR_TILGANG) + + val mockClientId = UUID.randomUUID() + + // Må bare returnere noe + coEvery { anyConstructed().hent(mockClientId, any(), any()) } returns JsonNull + + val request = GYLDIG_INNSENDING_REQUEST.copy( + forespurtData = listOf("inntekt", "refusjon"), + fullLønnIArbeidsgiverPerioden = FullLonnIArbeidsgiverPerioden( + utbetalerFullLønn = false, + begrunnelse = BegrunnelseIngenEllerRedusertUtbetalingKode.FRAVAER_UTEN_GYLDIG_GRUNN, + utbetalt = 222_333.0.toBigDecimal() + ) + ) + .let(Jackson::toJson).parseJson() + + mockConstructor(InnsendingProducer::class) { + every { anyConstructed().publish(any(), any(), any()) } returns mockClientId + + post(path, request) + + verifySequence { + anyConstructed().publish( + forespoerselId = any(), + request = withArg { + it.fullLønnIArbeidsgiverPerioden.shouldBeNull() + }, + arbeidsgiverFnr = any() + ) + } + } + } + private object Mock { val forespoerselId: UUID = UUID.randomUUID() } diff --git a/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingValidateKtTest.kt b/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingValidateKtTest.kt index 77fecf81f..c937c62c7 100644 --- a/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingValidateKtTest.kt +++ b/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingValidateKtTest.kt @@ -40,11 +40,11 @@ class InnsendingValidateKtTest : FunSpec({ val maksNaturalBeloep = 1_000_000.0.toBigDecimal() val negativtBeloep = (-0.1).toBigDecimal() - test("skal akseptere gyldig") { + test("godtar fullstendig innsending") { GYLDIG_INNSENDING_REQUEST.validate() } - test("skal tillate at refusjon i arbeidsgiverperioden ikke settes (ved delvis innsending)") { + test("godtar delvis innsending") { DELVIS_INNSENDING_REQUEST.validate() } @@ -105,10 +105,6 @@ class InnsendingValidateKtTest : FunSpec({ ).validate() } - test("skal godta delvis innsending") { - DELVIS_INNSENDING_REQUEST.validate() - } - test("skal gi feilmelding når orgnummer er ugyldig") { shouldThrowExactly { GYLDIG_INNSENDING_REQUEST.copy(orgnrUnderenhet = "").validate()