From 35b7b5cfdec1cb58ebecf68daf578b7dd77de59b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Roaldseth?= Date: Tue, 23 Apr 2024 11:30:59 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Skru=20p=C3=A5=20automatisering=20av=20enkl?= =?UTF-8?q?e=20avslag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/no/nav/dagpenger/behandling/modell/Behandling.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modell/src/main/kotlin/no/nav/dagpenger/behandling/modell/Behandling.kt b/modell/src/main/kotlin/no/nav/dagpenger/behandling/modell/Behandling.kt index 7d0bc7fce..5e9cb4b53 100644 --- a/modell/src/main/kotlin/no/nav/dagpenger/behandling/modell/Behandling.kt +++ b/modell/src/main/kotlin/no/nav/dagpenger/behandling/modell/Behandling.kt @@ -288,13 +288,12 @@ class Behandling private constructor( hendelse: ManuellBehandlingAvklartHendelse, ) { // Her vet vi at det skal være avslag på grunn av minste arbeidsinntekt. - // TODO: Bruk dette til ruting mellom automatisk vedtak og manuell behandling if (hendelse.behandlesManuelt) { - behandling.tilstand(Avbrutt(årsak = "Skal behandles manuelt"), hendelse) + behandling.tilstand(ForslagTilVedtak(), hendelse) return } - behandling.tilstand(ForslagTilVedtak(), hendelse) + behandling.tilstand(Ferdig(), hendelse) } } From 2ba47e966880c6ee1db441f05e5cbd08e2646980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Roaldseth?= Date: Tue, 23 Apr 2024 13:05:20 +0200 Subject: [PATCH 2/3] =?UTF-8?q?Test=20at=20vi=20g=C3=A5r=20rett=20til=20au?= =?UTF-8?q?tomatisk=20vedtak=20om=20avslag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dagpenger/behandling/PersonMediatorTest.kt | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/mediator/src/test/kotlin/no/nav/dagpenger/behandling/PersonMediatorTest.kt b/mediator/src/test/kotlin/no/nav/dagpenger/behandling/PersonMediatorTest.kt index 4db5d64e0..cb6eef20f 100644 --- a/mediator/src/test/kotlin/no/nav/dagpenger/behandling/PersonMediatorTest.kt +++ b/mediator/src/test/kotlin/no/nav/dagpenger/behandling/PersonMediatorTest.kt @@ -19,8 +19,6 @@ import no.nav.dagpenger.behandling.mediator.repository.OpplysningerRepositoryPos import no.nav.dagpenger.behandling.mediator.repository.PersonRepositoryPostgres import no.nav.dagpenger.behandling.modell.BehandlingBehov.AvklaringManuellBehandling import no.nav.dagpenger.behandling.modell.Ident.Companion.tilPersonIdentfikator -import no.nav.dagpenger.behandling.modell.UUIDv7 -import no.nav.dagpenger.behandling.modell.hendelser.ForslagGodkjentHendelse import no.nav.dagpenger.regel.Behov.HelseTilAlleTyperJobb import no.nav.dagpenger.regel.Behov.InntektId import no.nav.dagpenger.regel.Behov.KanJobbeDeltid @@ -37,6 +35,7 @@ import no.nav.dagpenger.regel.Behov.VilligTilÅBytteYrke import no.nav.helse.rapids_rivers.asLocalDate import no.nav.helse.rapids_rivers.testsupport.TestRapid import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test import java.time.LocalDate import java.time.Period @@ -142,17 +141,10 @@ internal class PersonMediatorTest { rapid.harBehov(AvklaringManuellBehandling.name) testPerson.løsBehov(AvklaringManuellBehandling.name, false) - rapid.harHendelse("forslag_til_vedtak") { - medBoolsk("utfall") shouldBe false - } - personRepository.hent(ident.tilPersonIdentfikator()).also { it.shouldNotBeNull() it.behandlinger().size shouldBe 1 it.behandlinger().flatMap { behandling -> behandling.opplysninger().finnAlle() }.size shouldBe 42 - - // Godkjenner forslag til vedtak - personMediator.håndter(ForslagGodkjentHendelse(UUIDv7.ny(), ident, it.behandlinger().first().behandlingId)) } rapid.harHendelse("vedtak_fattet") { @@ -164,10 +156,11 @@ internal class PersonMediatorTest { medOpplysning("Ordinær") shouldBe false } - rapid.inspektør.size shouldBe 11 + rapid.inspektør.size shouldBe 10 } @Test + @Disabled("Mangler implementasjon") fun `e2e av søknad innsendt som krever manuell behandling`() = withMigratedDb { val testPerson = @@ -184,7 +177,7 @@ internal class PersonMediatorTest { */ testPerson.løsBehov(AvklaringManuellBehandling.name, true) - rapid.harHendelse("behandling_avbrutt") { + rapid.harHendelse("forslag_til_vedtak") { medTekst("søknadId") shouldBe testPerson.søknadId } From 3831c8b63472e97705b260e26d5c0acba1a8920a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Roaldseth?= Date: Tue, 23 Apr 2024 13:11:12 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Lag=20en=20delt=20setupmetode=20som=20kan?= =?UTF-8?q?=20brukes=20til=20b=C3=A5de=20automatisk=20og=20manuell=20behan?= =?UTF-8?q?dling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../behandling/PersonMediatorTest.kt | 126 +++++++++--------- 1 file changed, 64 insertions(+), 62 deletions(-) diff --git a/mediator/src/test/kotlin/no/nav/dagpenger/behandling/PersonMediatorTest.kt b/mediator/src/test/kotlin/no/nav/dagpenger/behandling/PersonMediatorTest.kt index cb6eef20f..683299a13 100644 --- a/mediator/src/test/kotlin/no/nav/dagpenger/behandling/PersonMediatorTest.kt +++ b/mediator/src/test/kotlin/no/nav/dagpenger/behandling/PersonMediatorTest.kt @@ -35,7 +35,6 @@ import no.nav.dagpenger.regel.Behov.VilligTilÅBytteYrke import no.nav.helse.rapids_rivers.asLocalDate import no.nav.helse.rapids_rivers.testsupport.TestRapid import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test import java.time.LocalDate import java.time.Period @@ -77,63 +76,7 @@ internal class PersonMediatorTest { rapid, søknadstidspunkt = 5.mai(2021), ) - testPerson.sendSøknad() - rapid.harHendelse("behandling_opprettet", offset = 2) - - /** - * Fastsetter søknadstidspunkt - */ - rapid.harBehov("Søknadstidspunkt") { - medTekst("søknad_uuid") shouldNotBe testPerson.søknadId - medNode("InnsendtSøknadsId")["urn"].asText() shouldBe "urn:soknad:${testPerson.søknadId}" - } - rapid.harBehov("Fødselsdato", "Søknadstidspunkt", "ØnskerDagpengerFraDato") - testPerson.løsBehov("Fødselsdato", "Søknadstidspunkt", "ØnskerDagpengerFraDato") - - /** - * Fastsetter opptjeningsperiode og inntekt. Pt brukes opptjeningsperiode generert fra dp-inntekt - */ - rapid.harBehov(InntektId) { - medDato("Virkningsdato") shouldBe 5.mai(2021) - /** - * TODO: Vi må ta vekk opptjeningsperiode fra dp-inntekt og skive om måten dp-inntekt lagrer inntekt på beregningsdato - * medDato(OpptjeningsperiodeFraOgMed) shouldBe 1.april(2018) - * opptjeningsperiodeEr(måneder = 36) - */ - } - testPerson.løsBehov(InntektId) - - /** - * Sjekker kravene til inntekt - */ - rapid.harBehov("InntektSiste12Mnd") { medTekst("InntektId") shouldBe testPerson.inntektId } - rapid.harBehov("InntektSiste36Mnd") { medTekst("InntektId") shouldBe testPerson.inntektId } - - testPerson.løsBehov("InntektSiste12Mnd", "InntektSiste36Mnd") - - /** - * Sjekker om mulig verneplikt - */ - rapid.harBehov(Verneplikt) - testPerson.løsBehov(Verneplikt) - - /** - * Sjekker kravene til reell arbeidssøker - */ - rapid.harBehov(KanJobbeDeltid, KanJobbeHvorSomHelst, HelseTilAlleTyperJobb, VilligTilÅBytteYrke) - testPerson.løsBehov(KanJobbeDeltid, KanJobbeHvorSomHelst, HelseTilAlleTyperJobb, VilligTilÅBytteYrke) - - /** - * Sjekker kravet til registrering som arbeidssøker - */ - rapid.harBehov(RegistrertSomArbeidssøker) - testPerson.løsBehov(RegistrertSomArbeidssøker) - - /** - * Innhenter rettighetstype - */ - rapid.harBehov(Ordinær, Permittert, Lønnsgaranti, PermittertFiskeforedling) - testPerson.løsBehov(Ordinær, Permittert, Lønnsgaranti, PermittertFiskeforedling) + løsBehandlingFramTilFerdig(testPerson) /** * Avklarer om den krever manuell behandling @@ -160,7 +103,6 @@ internal class PersonMediatorTest { } @Test - @Disabled("Mangler implementasjon") fun `e2e av søknad innsendt som krever manuell behandling`() = withMigratedDb { val testPerson = @@ -169,8 +111,8 @@ internal class PersonMediatorTest { rapid, søknadstidspunkt = 5.mai(2021), ) - testPerson.sendSøknad() - rapid.harHendelse("behandling_opprettet", offset = 2) + + løsBehandlingFramTilFerdig(testPerson) /** * Avklarer om den krever manuell behandling @@ -181,7 +123,7 @@ internal class PersonMediatorTest { medTekst("søknadId") shouldBe testPerson.søknadId } - rapid.inspektør.size shouldBe 3 + rapid.inspektør.size shouldBe 10 } @Test @@ -213,6 +155,66 @@ internal class PersonMediatorTest { rapid.inspektør.size shouldBe 3 } + private fun løsBehandlingFramTilFerdig(testPerson: TestPerson) { + testPerson.sendSøknad() + rapid.harHendelse("behandling_opprettet", offset = 2) + + /** + * Fastsetter søknadstidspunkt + */ + rapid.harBehov("Søknadstidspunkt") { + medTekst("søknad_uuid") shouldNotBe testPerson.søknadId + medNode("InnsendtSøknadsId")["urn"].asText() shouldBe "urn:soknad:${testPerson.søknadId}" + } + rapid.harBehov("Fødselsdato", "Søknadstidspunkt", "ØnskerDagpengerFraDato") + testPerson.løsBehov("Fødselsdato", "Søknadstidspunkt", "ØnskerDagpengerFraDato") + + /** + * Fastsetter opptjeningsperiode og inntekt. Pt brukes opptjeningsperiode generert fra dp-inntekt + */ + rapid.harBehov(InntektId) { + medDato("Virkningsdato") shouldBe 5.mai(2021) + /** + * TODO: Vi må ta vekk opptjeningsperiode fra dp-inntekt og skive om måten dp-inntekt lagrer inntekt på beregningsdato + * medDato(OpptjeningsperiodeFraOgMed) shouldBe 1.april(2018) + * opptjeningsperiodeEr(måneder = 36) + */ + } + testPerson.løsBehov(InntektId) + + /** + * Sjekker kravene til inntekt + */ + rapid.harBehov("InntektSiste12Mnd") { medTekst("InntektId") shouldBe testPerson.inntektId } + rapid.harBehov("InntektSiste36Mnd") { medTekst("InntektId") shouldBe testPerson.inntektId } + + testPerson.løsBehov("InntektSiste12Mnd", "InntektSiste36Mnd") + + /** + * Sjekker om mulig verneplikt + */ + rapid.harBehov(Verneplikt) + testPerson.løsBehov(Verneplikt) + + /** + * Sjekker kravene til reell arbeidssøker + */ + rapid.harBehov(KanJobbeDeltid, KanJobbeHvorSomHelst, HelseTilAlleTyperJobb, VilligTilÅBytteYrke) + testPerson.løsBehov(KanJobbeDeltid, KanJobbeHvorSomHelst, HelseTilAlleTyperJobb, VilligTilÅBytteYrke) + + /** + * Sjekker kravet til registrering som arbeidssøker + */ + rapid.harBehov(RegistrertSomArbeidssøker) + testPerson.løsBehov(RegistrertSomArbeidssøker) + + /** + * Innhenter rettighetstype + */ + rapid.harBehov(Ordinær, Permittert, Lønnsgaranti, PermittertFiskeforedling) + testPerson.løsBehov(Ordinær, Permittert, Lønnsgaranti, PermittertFiskeforedling) + } + private fun Meldingsinnhold.opptjeningsperiodeEr(måneder: Int) { val periode = Period.between(medDato(OpptjeningsperiodeFraOgMed), medDato(SisteAvsluttendeKalenderMåned)) + Period.ofMonths(1) withClue("Opptjeningsperiode skal være 3 år") { periode.toTotalMonths() shouldBe måneder }