diff --git a/.github/workflows/deploy-dev.yaml b/.github/workflows/deploy-dev.yaml index 8e11138..d59dd83 100644 --- a/.github/workflows/deploy-dev.yaml +++ b/.github/workflows/deploy-dev.yaml @@ -11,6 +11,7 @@ on: - main - tilbehør-mapping - ny-behovsmeldingmodell + - test jobs: build: diff --git "a/app/src/main/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreInnsender.kt" "b/app/src/main/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreInnsender.kt" index 9f45f57..885b0dc 100644 --- "a/app/src/main/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreInnsender.kt" +++ "b/app/src/main/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreInnsender.kt" @@ -102,11 +102,6 @@ class SøknadStoreInnsender(private val tx: JdbcOperations) : Store { innsenderRolle: InnsenderRolle?, ukerEtterEndeligStatus: Int = UKER_TILGJENGELIG_ETTER_ENDELIG_STATUS, ): SøknadForInnsender? { - val behovsmeldingTypeClause = when (innsenderRolle) { - InnsenderRolle.BESTILLER -> "AND soknad.DATA ->> 'behovsmeldingType' = 'BESTILLING'" - else -> "" - } - val statement = Sql( """ SELECT soknad.soknads_id, @@ -115,35 +110,10 @@ class SøknadStoreInnsender(private val tx: JdbcOperations) : Store { soknad.updated, soknad.data, soknad.fnr_bruker, - soknad.navn_bruker, - status.status, - status.arsaker, - (CASE - WHEN EXISTS (SELECT 1 - FROM v1_status - WHERE soknads_id = soknad.soknads_id AND status IN ('GODKJENT_MED_FULLMAKT')) THEN TRUE - ELSE FALSE END) AS fullmakt + soknad.navn_bruker FROM v1_soknad AS soknad - LEFT JOIN v1_status AS status - ON status.id = - (SELECT id FROM v1_status WHERE soknads_id = soknad.soknads_id ORDER BY created DESC LIMIT 1) WHERE TRUE - AND soknad.fnr_innsender = :fnrInnsender - AND soknad.data ->> 'behovsmeldingType' <> 'BRUKERPASSBYTTE' AND soknad.soknads_id = :soknadId - $behovsmeldingTypeClause - AND soknad.created > :opprettetEtter - AND ( - status.STATUS NOT IN ('SLETTET', 'UTLØPT', 'VEDTAKSRESULTAT_AVSLÅTT', 'VEDTAKSRESULTAT_HENLAGTBORTFALT', 'VEDTAKSRESULTAT_ANNET', 'BESTILLING_AVVIST', 'UTSENDING_STARTET') - OR (status.CREATED + INTERVAL '$ukerEtterEndeligStatus week') > now() - ) - AND NOT ( - -- Hvis vi har stått fast i status positivt vedtak i fire uker, og vedtaket kom før de siste fiksene våre så fjerner vi de fra formidleroversikten. - -- Dette trengs pga. hvordan vi har kastet ordrelinjer som ikke kunne knyttes til sak, og da ble man hengende igjen for alltid. - status.STATUS IN ('VEDTAKSRESULTAT_INNVILGET', 'VEDTAKSRESULTAT_MUNTLIG_INNVILGET', 'VEDTAKSRESULTAT_DELVIS_INNVILGET', 'BESTILLING_FERDIGSTILT') - AND status.CREATED < '2022-02-14' -- Dagen etter vi lanserte de siste fiksene - AND status.CREATED < (now() - INTERVAL '4 week') -- Vises i maks fire uker etter vedtak - ) """.trimIndent(), ) @@ -152,21 +122,20 @@ class SøknadStoreInnsender(private val tx: JdbcOperations) : Store { mapOf( "fnrInnsender" to fnrInnsender, "soknadId" to søknadId, - "opprettetEtter" to LocalDateTime.now().minusMonths(6), ), ) { val datoOpprettet = it.sqlTimestamp("created") SøknadForInnsender( søknadId = it.uuid("soknads_id"), - behovsmeldingType = it.tilBehovsmeldingType("behovsmeldingType"), + behovsmeldingType = BehovsmeldingType.SØKNAD, datoOpprettet = datoOpprettet, datoOppdatert = it.sqlTimestampOrNull("updated") ?: datoOpprettet, - status = it.enum("status"), - fullmakt = it.boolean("fullmakt"), + status = BehovsmeldingStatus.GODKJENT, + fullmakt = true, fnrBruker = it.string("fnr_bruker"), navnBruker = it.stringOrNull("navn_bruker"), søknadsdata = Søknadsdata(it.json("data"), null), - valgteÅrsaker = it.jsonOrNull?>("arsaker") ?: emptyList(), + valgteÅrsaker = emptyList(), behovsmeldingV2 = try { tilFormidlerbehovsmeldingV2( it.json("data"), diff --git "a/app/src/test/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreInnsenderTest.kt" "b/app/src/test/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreInnsenderTest.kt" deleted file mode 100644 index 45f21c3..0000000 --- "a/app/src/test/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreInnsenderTest.kt" +++ /dev/null @@ -1,212 +0,0 @@ -package no.nav.hjelpemidler.soknad.db.store - -import io.kotest.matchers.booleans.shouldBeFalse -import io.kotest.matchers.booleans.shouldBeTrue -import io.kotest.matchers.collections.shouldBeEmpty -import io.kotest.matchers.collections.shouldBeSingleton -import io.kotest.matchers.collections.shouldHaveSize -import io.kotest.matchers.nulls.shouldNotBeNull -import io.kotest.matchers.should -import io.kotest.matchers.shouldBe -import no.nav.hjelpemidler.behovsmeldingsmodell.BehovsmeldingStatus -import no.nav.hjelpemidler.behovsmeldingsmodell.BehovsmeldingType -import no.nav.hjelpemidler.behovsmeldingsmodell.Behovsmeldingsgrunnlag -import no.nav.hjelpemidler.soknad.db.domain.lagFødselsnummer -import no.nav.hjelpemidler.soknad.db.rolle.InnsenderRolle -import no.nav.hjelpemidler.soknad.db.soknad.lagBehovsmeldingsgrunnlagDigital -import no.nav.hjelpemidler.soknad.db.soknad.lagSøknadId -import org.junit.jupiter.api.Test - -class SøknadStoreInnsenderTest { - @Test - fun `Hent formidlers søknad`() = databaseTest { - val søknadId = lagSøknadId() - val fnrFormidler = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding(lagBehovsmeldingsgrunnlagDigital(søknadId, fnrInnsender = fnrFormidler)) - søknadStoreInnsender - .hentSøknaderForInnsender(fnrFormidler, InnsenderRolle.FORMIDLER) - .shouldBeSingleton { - it.navnBruker shouldBe "Fornavn Etternavn" - } - } - } - - @Test - fun `Formidler kan kun hente søknad hen selv har sendt inn`() = databaseTest { - val søknadId = lagSøknadId() - val fnrFormidler = lagFødselsnummer() - val fnrAnnenFormidler = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding(lagBehovsmeldingsgrunnlagDigital(søknadId, fnrInnsender = fnrFormidler)) - søknadStore.lagreBehovsmelding(lagBehovsmeldingsgrunnlagDigital(fnrInnsender = fnrAnnenFormidler)) - søknadStoreInnsender - .hentSøknaderForInnsender(fnrFormidler, InnsenderRolle.FORMIDLER) shouldHaveSize 1 - - søknadStoreInnsender - .hentSøknadForInnsender(fnrFormidler, søknadId, InnsenderRolle.FORMIDLER) - .shouldNotBeNull { - this.søknadId shouldBe søknadId - this.søknadsdata.shouldNotBeNull() - } - } - } - - @Test - fun `Navn på bruker fjernes ikke ved sletting`() = databaseTest { - val søknadId = lagSøknadId() - val fnrFormidler = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - søknadId, - BehovsmeldingStatus.VENTER_GODKJENNING, - fnrInnsender = fnrFormidler, - ), - ) shouldBe 1 - søknadStore.slettSøknad(søknadId) shouldBe 1 - - søknadStoreInnsender - .hentSøknaderForInnsender(fnrFormidler, InnsenderRolle.FORMIDLER) - .shouldBeSingleton { - it.navnBruker shouldBe "Fornavn Etternavn" - } - } - } - - @Test - fun `Henter ikke søknad som er 4 uker gammel`() = databaseTest { - val søknadId = lagSøknadId() - val fnrInnsender = lagFødselsnummer() - - testTransaction { tx -> - søknadStore.lagreBehovsmelding( - Behovsmeldingsgrunnlag.Digital( - søknadId = søknadId, - status = BehovsmeldingStatus.SLETTET, - fnrBruker = lagFødselsnummer(), - navnBruker = "Fornavn Etternavn", - fnrInnsender = fnrInnsender, - kommunenavn = null, - behovsmelding = emptyMap(), - behovsmeldingGjelder = null, - ), - ) shouldBe 1 - - tx.execute("UPDATE V1_SOKNAD SET CREATED = (now() - interval '3 week') WHERE SOKNADS_ID = '$søknadId'") - - søknadStoreInnsender - .hentSøknaderForInnsender(fnrInnsender, InnsenderRolle.FORMIDLER, 4) - .shouldHaveSize(1) - - tx.execute("UPDATE V1_SOKNAD SET CREATED = (now() - interval '5 week') WHERE SOKNADS_ID = '$søknadId'") - - søknadStoreInnsender - .hentSøknaderForInnsender("00102012345", InnsenderRolle.FORMIDLER, 4) - .shouldBeEmpty() - } - } - - @Test - fun `Fullmakt for søknad for formidler`() = databaseTest { - val søknadId = lagSøknadId() - val fnrFormidler = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - søknadId, - BehovsmeldingStatus.GODKJENT_MED_FULLMAKT, - fnrInnsender = fnrFormidler, - ), - ) shouldBe 1 - søknadStore.oppdaterStatus(søknadId, BehovsmeldingStatus.ENDELIG_JOURNALFØRT) shouldBe 1 - - søknadStoreInnsender - .hentSøknaderForInnsender(fnrFormidler, InnsenderRolle.FORMIDLER) - .shouldBeSingleton { - it.fullmakt.shouldBeTrue() - } - } - } - - @Test - fun `Fullmakt er false hvis bruker skal bekrefte søknaden`() = databaseTest { - val søknadId = lagSøknadId() - val fnrInnsender = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - søknadId, - BehovsmeldingStatus.VENTER_GODKJENNING, - fnrInnsender = fnrInnsender, - ), - ) shouldBe 1 - søknadStore.oppdaterStatus(søknadId, BehovsmeldingStatus.GODKJENT) shouldBe 1 - søknadStore.oppdaterStatus(søknadId, BehovsmeldingStatus.ENDELIG_JOURNALFØRT) shouldBe 1 - - søknadStoreInnsender - .hentSøknaderForInnsender(fnrInnsender, InnsenderRolle.FORMIDLER) - .shouldBeSingleton { - it.fullmakt.shouldBeFalse() - } - } - } - - @Test - fun `Bestiller kan kun hente ut bestillinger`() = databaseTest { - val idSøknad = lagSøknadId() - val idBestilling = lagSøknadId() - val fnrInnsender = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - idSøknad, - fnrInnsender = fnrInnsender, - behovsmeldingType = BehovsmeldingType.SØKNAD, - ), - ) - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - idBestilling, - fnrInnsender = fnrInnsender, - behovsmeldingType = BehovsmeldingType.BESTILLING, - ), - ) - - søknadStoreInnsender - .hentSøknaderForInnsender(fnrInnsender, InnsenderRolle.BESTILLER) - .shouldBeSingleton { - it.søknadId shouldBe idBestilling - } - - søknadStoreInnsender - .hentSøknadForInnsender(fnrInnsender, idBestilling, InnsenderRolle.BESTILLER) - .shouldNotBeNull() - .should { - it.søknadId shouldBe idBestilling - it.behovsmeldingType shouldBe BehovsmeldingType.BESTILLING - } - } - } - - @Test - fun `Metrikker er non-blocking`() = databaseTest { - val søknadId = lagSøknadId() - testTransaction { - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - søknadId, - BehovsmeldingStatus.VENTER_GODKJENNING, - ), - ) shouldBe 1 - søknadStore.oppdaterStatus(søknadId, BehovsmeldingStatus.GODKJENT) shouldBe 1 - søknadStore.oppdaterStatus(søknadId, BehovsmeldingStatus.VEDTAKSRESULTAT_ANNET) shouldBe 1 - } - } -} diff --git "a/app/src/test/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreTest.kt" "b/app/src/test/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreTest.kt" deleted file mode 100644 index 21c93f3..0000000 --- "a/app/src/test/kotlin/no/nav/hjelpemidler/soknad/db/store/S\303\270knadStoreTest.kt" +++ /dev/null @@ -1,473 +0,0 @@ -package no.nav.hjelpemidler.soknad.db.store - -import io.kotest.matchers.booleans.shouldBeFalse -import io.kotest.matchers.booleans.shouldBeTrue -import io.kotest.matchers.collections.shouldBeEmpty -import io.kotest.matchers.collections.shouldBeSingleton -import io.kotest.matchers.collections.shouldHaveSize -import io.kotest.matchers.nulls.shouldNotBeNull -import io.kotest.matchers.shouldBe -import no.nav.hjelpemidler.behovsmeldingsmodell.BehovsmeldingStatus -import no.nav.hjelpemidler.behovsmeldingsmodell.Behovsmeldingsgrunnlag -import no.nav.hjelpemidler.soknad.db.domain.BruksarenaBruker -import no.nav.hjelpemidler.soknad.db.domain.Funksjonsnedsettelse -import no.nav.hjelpemidler.soknad.db.domain.LeveringTilleggsinfo -import no.nav.hjelpemidler.soknad.db.domain.SitteputeValg -import no.nav.hjelpemidler.soknad.db.domain.lagFødselsnummer -import no.nav.hjelpemidler.soknad.db.soknad.lagBehovsmeldingsgrunnlagDigital -import no.nav.hjelpemidler.soknad.db.soknad.lagBehovsmeldingsgrunnlagPapir -import no.nav.hjelpemidler.soknad.db.soknad.lagSøknadId -import no.nav.hjelpemidler.soknad.db.soknad.mockSøknadMedRullestol -import no.nav.hjelpemidler.soknad.db.test.readMap -import java.util.UUID -import kotlin.test.Test -import kotlin.test.assertEquals -import kotlin.test.assertNotNull -import kotlin.test.assertNull - -class SøknadStoreTest { - @Test - fun `Hent lagret søknad 1`() = databaseTest { - val søknadId = lagSøknadId() - val fnrBruker = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding(lagBehovsmeldingsgrunnlagDigital(søknadId, fnrBruker = fnrBruker)) - val søknad = søknadStore.hentSøknad(søknadId) - - assertEquals(fnrBruker, søknad?.søknadsdata?.bruker?.fnummer) - assertEquals("Fornavn", søknad?.søknadsdata?.bruker?.fornavn) - assertEquals("Etternavn", søknad?.søknadsdata?.bruker?.etternavn) - assertEquals("12345678", søknad?.søknadsdata?.bruker?.telefonNummer) - assertNull(søknad?.søknadsdata?.bruker?.adresse) - assertNull(søknad?.søknadsdata?.bruker?.postnummer) - assertEquals("poststed", søknad?.søknadsdata?.bruker?.poststed) - assertEquals("formidlerFornavn formidlerEtternavn", søknad?.søknadsdata?.formidler?.navn) - assertEquals("arbeidssted", søknad?.søknadsdata?.formidler?.arbeidssted) - assertEquals("stilling", søknad?.søknadsdata?.formidler?.stilling) - assertEquals("postadresse arbeidssted 9999 poststed", søknad?.søknadsdata?.formidler?.adresse) - assertEquals("12345678", søknad?.søknadsdata?.formidler?.telefon) - assertEquals("treffesEnklest", søknad?.søknadsdata?.formidler?.treffesEnklest) - assertEquals("formidler@kommune.no", søknad?.søknadsdata?.formidler?.epost) - assertNull(søknad?.søknadsdata?.oppfolgingsansvarlig) - assertEquals("Hjemme", søknad?.søknadsdata?.bruker?.boform) - assertEquals(BruksarenaBruker.DAGLIGLIVET, søknad?.søknadsdata?.bruker?.bruksarena) - assertEquals( - listOf(Funksjonsnedsettelse.BEVEGELSE, Funksjonsnedsettelse.HØRSEL), - søknad?.søknadsdata?.bruker?.funksjonsnedsettelser, - ) - - assertEquals(2, søknad?.søknadsdata?.hjelpemiddelTotalAntall) - assertEquals(1, søknad?.søknadsdata?.hjelpemidler?.size) - assertEquals(1, søknad?.søknadsdata?.hjelpemidler?.first()?.antall) - assertEquals("Hjelpemiddelnavn", søknad?.søknadsdata?.hjelpemidler?.first()?.navn) - assertEquals("beskrivelse", søknad?.søknadsdata?.hjelpemidler?.first()?.beskrivelse) - assertEquals("Arbeidsstoler", søknad?.søknadsdata?.hjelpemidler?.first()?.hjelpemiddelkategori) - assertEquals("123456", søknad?.søknadsdata?.hjelpemidler?.first()?.hmsNr) - assertEquals("Tilleggsinformasjon", søknad?.søknadsdata?.hjelpemidler?.first()?.tilleggsinformasjon) - assertEquals("1", søknad?.søknadsdata?.hjelpemidler?.first()?.rangering) - assertEquals(true, søknad?.søknadsdata?.hjelpemidler?.first()?.utlevertFraHjelpemiddelsentralen) - assertEquals(1, søknad?.søknadsdata?.hjelpemidler?.first()?.vilkarliste?.size) - assertEquals( - "Vilkår 1", - søknad?.søknadsdata?.hjelpemidler?.first()?.vilkarliste?.first()?.vilkaarTekst, - ) - assertEquals( - "Tilleggsinfo", - søknad?.søknadsdata?.hjelpemidler?.first()?.vilkarliste?.first()?.tilleggsinfo, - ) - assertEquals(1, søknad?.søknadsdata?.hjelpemidler?.first()?.tilbehorListe?.size) - assertEquals("654321", søknad?.søknadsdata?.hjelpemidler?.first()?.tilbehorListe?.first()?.hmsnr) - assertEquals("Tilbehør 1", søknad?.søknadsdata?.hjelpemidler?.first()?.tilbehorListe?.first()?.navn) - assertEquals(1, søknad?.søknadsdata?.hjelpemidler?.first()?.tilbehorListe?.first()?.antall) - assertEquals("begrunnelse", søknad?.søknadsdata?.hjelpemidler?.first()?.begrunnelse) - assertEquals(true, søknad?.søknadsdata?.hjelpemidler?.first()?.kanIkkeTilsvarande) - - assertNull(søknad?.søknadsdata?.levering?.adresse) - - assertEquals(true, søknad?.er_digital) - } - } - - @Test - fun `Hent lagret søknad 2`() = databaseTest { - val søknadId = UUID.randomUUID() - val fnrBruker = lagFødselsnummer() - val fnrInnsender = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding( - Behovsmeldingsgrunnlag.Digital( - fnrBruker = fnrBruker, - navnBruker = "Fornavn Etternavn", - fnrInnsender = fnrInnsender, - søknadId = søknadId, - behovsmelding = readMap( - """ - { - "fnrBruker": "$fnrBruker", - "soknadId": "62f68547-11ae-418c-8ab7-4d2af985bcd9", - "datoOpprettet": "2021-02-23T09:46:45.146+00:00", - "soknad": { - "id": "e8dac11d-fa66-4561-89d7-88a62ab31c2b", - "date": "2021-02-16", - "bruker": { - "kilde": "PDL", - "adresse": "Trandemveien 29", - "fnummer": "$fnrBruker", - "fornavn": "Sedat", - "poststed": "Hebnes", - "signatur": "BRUKER_BEKREFTER", - "etternavn": "Kronjuvel", - "postnummer": "4235", - "telefonNummer": "12341234" - }, - "levering": { - "hmfEpost": "anders@andersen.no", - "hmfPostnr": "1212", - "hmfFornavn": "Sedat", - "hmfTelefon": "12121212", - "opfFornavn": "", - "opfTelefon": "", - "hmfPoststed": "Oslo", - "hmfStilling": "Ergo", - "opfStilling": "", - "hmfEtternavn": "Kronjuvel", - "opfAnsvarFor": "", - "opfEtternavn": "", - "hmfArbeidssted": "Oslo", - "hmfPostadresse": "Oslovegen", - "opfArbeidssted": "", - "opfRadioButton": "Hjelpemiddelformidler", - "utleveringPostnr": "", - "hmfTreffesEnklest": "Måndag", - "utleveringFornavn": "", - "utleveringTelefon": "", - "utleveringPoststed": "", - "utleveringEtternavn": "", - "merknadTilUtlevering": "", - "utleveringPostadresse": "", - "utleveringsmaateRadioButton": null, - "utlevertInfo": { - "utlevertType": "Overført", - "overførtFraBruker": "1234" - }, - "tilleggsinfo": [ - "UTLEVERING_KALENDERAPP" - ] - }, - "hjelpemidler": { - "hjelpemiddelListe": [ - { - "navn": "Topro Skråbrett", - "hmsNr": "243544", - "antall": 1, - "produkt": { - "artid": "108385", - "artno": "815061", - "newsid": "4289", - "prodid": "30389", - "apostid": "860", - "apostnr": "3", - "artname": "Topro Skråbrett", - "isocode": "18301505", - "stockid": "243544", - "isotitle": "Terskeleliminatorer", - "kategori": "Terskeleliminatorer og ramper", - "postrank": "1", - "prodname": "Topro Skråbrett", - "artpostid": "14309", - "adescshort": "Bredde 90 cm. Lengde 77 cm.", - "aposttitle": "Post 3: Terskeleleminator - påkjøring fra en side. Velegnet for utendørs bruk", - "pshortdesc": "Skråbrett i aluminium utførelse med sklisikker overflate. Leveres som standard i bredder fra 90 - 126 cm og justerbar høyde fra 5 - 20 cm.", - "cleanposttitle": "Terskeleleminator - påkjøring fra en side. Velegnet for utendørs bruk", - "techdataAsText": "Påkjøring forfra JA, Bredde 90cm, Lengde maks 77cm, Terskelhøyde min 5cm, Terskelhøyde maks 20cm, Vekt 8kg, Belastning maks 350kg, Fastmontert JA, Festemåte fastmontert, Materiale aluminium, Sklisikker overflate JA", - "cleanTechdataAsText": " Bredde 90cm, Lengde maks 77cm, Terskelhøyde min 5cm, Terskelhøyde maks 20cm" - }, - "uniqueKey": "2435441613472031819", - "beskrivelse": "Topro Skråbrett", - "begrunnelsen": "", - "tilbehorListe": [], - "vilkaroverskrift": "", - "kanIkkeTilsvarande": "false", - "tilleggsinformasjon": "", - "hjelpemiddelkategori": "Terskeleliminatorer og ramper", - "utlevertFraHjelpemiddelsentralen": false - } - ], - "hjelpemiddelTotaltAntall": 1 - }, - "brukersituasjon": { - "storreBehov": true, - "nedsattFunksjon": true, - "praktiskeProblem": true, - "bostedRadioButton": "Hjemme", - "nedsattFunksjonTypes": { - "horsel": false, - "bevegelse": true, - "kognisjon": false - }, - "bruksarenaErDagliglivet": true - } - } - } - """.trimIndent(), - ), - status = BehovsmeldingStatus.VENTER_GODKJENNING, - kommunenavn = null, - behovsmeldingGjelder = null, - ), - ) - val hentSoknad = søknadStore.hentSøknad(søknadId) - assertEquals(fnrBruker, hentSoknad!!.søknadsdata!!.bruker.fnummer) - assertEquals(true, hentSoknad.er_digital) - assertEquals( - LeveringTilleggsinfo.UTLEVERING_KALENDERAPP, - hentSoknad.søknadsdata!!.levering.tilleggsinfo.first(), - ) - } - } - - @Test - fun `Lagre søknad`() = databaseTest { - testTransaction { - søknadStore.lagreBehovsmelding( - Behovsmeldingsgrunnlag.Digital( - søknadId = lagSøknadId(), - status = BehovsmeldingStatus.VENTER_GODKJENNING, - fnrBruker = lagFødselsnummer(), - navnBruker = "Fornavn Etternavn", - fnrInnsender = lagFødselsnummer(), - kommunenavn = null, - behovsmelding = emptyMap(), - behovsmeldingGjelder = null, - ), - ) shouldBe 1 - } - } - - @Test - fun `Søknaden blir ikke oppdatert til samme status igjen`() = databaseTest { - val søknadId = lagSøknadId() - val status1 = BehovsmeldingStatus.VENTER_GODKJENNING - testTransaction { - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - søknadId, - status1, - ), - ) - } shouldBe 1 - - val status2 = BehovsmeldingStatus.GODKJENT - testTransaction { søknadStore.oppdaterStatus(søknadId, status2) } shouldBe 1 - testTransaction { søknadStore.finnSøknad(søknadId) }.shouldNotBeNull { status shouldBe status2 } - testTransaction { søknadStore.oppdaterStatus(søknadId, status2) } shouldBe 0 - testTransaction { søknadStore.finnSøknad(søknadId) }.shouldNotBeNull { status shouldBe status2 } - - val status3 = BehovsmeldingStatus.ENDELIG_JOURNALFØRT - testTransaction { søknadStore.oppdaterStatus(søknadId, status3) } shouldBe 1 - testTransaction { søknadStore.finnSøknad(søknadId) }.shouldNotBeNull { status shouldBe status3 } - } - - @Test - fun `Fullmakt for søknad innsendt av formidler`() = databaseTest { - val søknadId = lagSøknadId() - val fnrBruker = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - søknadId, - BehovsmeldingStatus.GODKJENT_MED_FULLMAKT, - fnrBruker, - ), - ) shouldBe 1 - } - testTransaction { - søknadStore.oppdaterStatus(søknadId, BehovsmeldingStatus.ENDELIG_JOURNALFØRT) shouldBe 1 - } - testTransaction { - søknadStore.hentSøknaderForBruker(fnrBruker).shouldBeSingleton { - it.fullmakt.shouldBeTrue() - } - } - } - - @Test - fun `Ikke fullmakt for søknad med brukers godkjenning`() = databaseTest { - val søknadId = lagSøknadId() - val fnrBruker = lagFødselsnummer() - - testTransaction { - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - søknadId, - BehovsmeldingStatus.VENTER_GODKJENNING, - fnrBruker, - ), - ) shouldBe 1 - } - testTransaction { - søknadStore.oppdaterStatus(søknadId, BehovsmeldingStatus.GODKJENT) shouldBe 1 - } - testTransaction { - søknadStore.oppdaterStatus(søknadId, BehovsmeldingStatus.ENDELIG_JOURNALFØRT) shouldBe 1 - } - testTransaction { - søknadStore.hentSøknaderForBruker(fnrBruker).shouldBeSingleton { - it.fullmakt.shouldBeFalse() - } - } - } - - @Test - fun `Søknad er utgått`() = databaseTest { - val søknadId = lagSøknadId() - val fnrBruker = lagFødselsnummer() - - testTransaction { tx -> - søknadStore.lagreBehovsmelding( - Behovsmeldingsgrunnlag.Digital( - søknadId = søknadId, - status = BehovsmeldingStatus.VENTER_GODKJENNING, - fnrBruker = fnrBruker, - navnBruker = "Fornavn Etternavn", - fnrInnsender = lagFødselsnummer(), - kommunenavn = null, - behovsmelding = emptyMap(), - behovsmeldingGjelder = null, - ), - ) shouldBe 1 - tx.execute("UPDATE V1_SOKNAD SET CREATED = (now() - interval '2 week') WHERE SOKNADS_ID = '$søknadId'") - } - - testTransaction { - søknadStore.hentSøknaderTilGodkjenningEldreEnn(14).shouldBeSingleton() - } - - testTransaction { tx -> - tx.execute("UPDATE V1_SOKNAD SET CREATED = (now() - interval '13 day') WHERE SOKNADS_ID = '$søknadId'") - } - - testTransaction { - søknadStore.hentSøknaderTilGodkjenningEldreEnn(14).shouldBeEmpty() - } - } - - @Test - fun `Hent godkjente søknader uten oppgave`() = databaseTest { - val søknadId1 = lagSøknadId() - val søknadId2 = lagSøknadId() - - testTransaction { tx -> - søknadStore.lagreBehovsmelding(lagBehovsmeldingsgrunnlagDigital(søknadId1, BehovsmeldingStatus.GODKJENT)) - søknadStore.lagreBehovsmelding( - lagBehovsmeldingsgrunnlagDigital( - søknadId2, - BehovsmeldingStatus.GODKJENT_MED_FULLMAKT, - ), - ) - } - testTransaction { tx -> - tx.execute("UPDATE V1_SOKNAD SET CREATED = (now() - interval '2 day') WHERE SOKNADS_ID = '$søknadId1'") - } - testTransaction { - søknadStore.hentGodkjenteBehovsmeldingerUtenOppgaveEldreEnn(2) shouldHaveSize 1 - } - testTransaction { tx -> - tx.execute("UPDATE V1_SOKNAD SET CREATED = (now() - interval '3 day') WHERE SOKNADS_ID = '$søknadId2'") - } - testTransaction { - søknadStore.hentGodkjenteBehovsmeldingerUtenOppgaveEldreEnn(2) shouldHaveSize 2 - } - testTransaction { tx -> - tx.execute("UPDATE V1_SOKNAD SET CREATED = (now() - interval '1 day') WHERE SOKNADS_ID = '$søknadId1'") - } - testTransaction { - søknadStore.hentGodkjenteBehovsmeldingerUtenOppgaveEldreEnn(2) shouldHaveSize 1 - } - testTransaction { tx -> - tx.execute("UPDATE V1_SOKNAD SET oppgaveid = '123456' WHERE SOKNADS_ID = '$søknadId2'") - } - testTransaction { - søknadStore.hentGodkjenteBehovsmeldingerUtenOppgaveEldreEnn(2).shouldBeEmpty() - } - } - - @Test - fun `Oppdater oppgaveId og ikke overskriv eksisterende oppgaveId`() = databaseTest { - val søknadId = lagSøknadId() - val oppgaveId = "102030" - - testTransaction { - søknadStore.lagreBehovsmelding( - Behovsmeldingsgrunnlag.Digital( - søknadId = søknadId, - status = BehovsmeldingStatus.GODKJENT_MED_FULLMAKT, - fnrBruker = lagFødselsnummer(), - navnBruker = "Fornavn Etternavn", - fnrInnsender = lagFødselsnummer(), - kommunenavn = null, - behovsmelding = emptyMap(), - behovsmeldingGjelder = null, - ), - ) - - søknadStore.oppdaterOppgaveId(søknadId, oppgaveId) shouldBe 1 - søknadStore.oppdaterOppgaveId(søknadId, oppgaveId) shouldBe 0 - } - } - - @Test - fun `Papirsøknad lagres i databasen`() = databaseTest { - val søknadId = lagSøknadId() - - testTransaction { - søknadStore.lagrePapirsøknad( - Behovsmeldingsgrunnlag.Papir( - søknadId = søknadId, - status = BehovsmeldingStatus.ENDELIG_JOURNALFØRT, - fnrBruker = lagFødselsnummer(), - navnBruker = "Fornavn Etternavn", - journalpostId = "1020", - sakstilknytning = null, - ), - ) shouldBe 1 - } - } - - @Test - fun `Papirsøknad lagres ikke som digital søknad`() = databaseTest { - val søknadId = lagSøknadId() - testTransaction { - søknadStore.lagrePapirsøknad(lagBehovsmeldingsgrunnlagPapir(søknadId)) - val søknad = søknadStore.hentSøknad(søknadId) - assertEquals(false, søknad?.er_digital) - } - } - - @Test - fun `Kroppsmål og rullestolinfo blir hentet ut`() = databaseTest { - val søknadId = lagSøknadId() - - testTransaction { - søknadStore.lagreBehovsmelding(mockSøknadMedRullestol(søknadId)) - val søknad = søknadStore.hentSøknad(søknadId) - - assertNotNull(søknad?.søknadsdata?.bruker?.kroppsmaal) - assertEquals(176, søknad?.søknadsdata?.bruker?.kroppsmaal?.hoyde) - assertEquals(99, søknad?.søknadsdata?.bruker?.kroppsmaal?.kroppsvekt) - assertEquals(23, søknad?.søknadsdata?.bruker?.kroppsmaal?.legglengde) - assertEquals(56, søknad?.søknadsdata?.bruker?.kroppsmaal?.laarlengde) - assertEquals(23, søknad?.søknadsdata?.bruker?.kroppsmaal?.setebredde) - - assertNotNull(søknad?.søknadsdata?.hjelpemidler?.first()?.rullestolInfo) - assertEquals( - SitteputeValg.TrengerSittepute, - søknad?.søknadsdata?.hjelpemidler?.first()?.rullestolInfo?.sitteputeValg, - ) - assertEquals(true, søknad?.søknadsdata?.hjelpemidler?.first()?.rullestolInfo?.skalBrukesIBil) - } - } -}