diff --git a/formidling/src/main/resources/pdfgen/templates/ungdomsytelse/endring_inntekt.hbs b/formidling/src/main/resources/pdfgen/templates/ungdomsytelse/endring_inntekt.hbs index 86e0628f59..ff941601a2 100644 --- a/formidling/src/main/resources/pdfgen/templates/ungdomsytelse/endring_inntekt.hbs +++ b/formidling/src/main/resources/pdfgen/templates/ungdomsytelse/endring_inntekt.hbs @@ -12,7 +12,7 @@ Når du har en inntekt, får du mindre penger i ungdomsytelse. Vi regner ut hva {{reduksjonssats}} prosent av inntekten din er hver måned, og så trekker vi dette beløpet fra pengene du får i ungdomsytelsen for den måneden.

- Likevel får du til sammen mer penger når du både har en inntekt og får ungdomsytelse, enn hvis du bare hadde fått penger gjennom ungdomsytelsen. + Likevel får du til sammen mer penger når du både har en inntekt og får ungdomsytelse, enn hvis du bare hadde fått penger gjennom ungdomsytelsen.

Se eksempel på hvordan vi regner ut ungdomsytelsen basert på inntekt i Ungdomsportalen. diff --git a/formidling/src/main/resources/pdfgen/templates/ungdomsytelse/innvilgelse.hbs b/formidling/src/main/resources/pdfgen/templates/ungdomsytelse/innvilgelse.hbs index 05b138c01d..dc427b6424 100644 --- a/formidling/src/main/resources/pdfgen/templates/ungdomsytelse/innvilgelse.hbs +++ b/formidling/src/main/resources/pdfgen/templates/ungdomsytelse/innvilgelse.hbs @@ -73,7 +73,7 @@

For å regne hva du får utbetalt i måneden ganges dagsatsen med antall virkedager i måneden. Du kan regne ut hva du får for en måned samt se flere eksempler på utregninger på - nav.no/ungdomsytelse + nav.no/ungdomsytelse.

Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx.

diff --git "a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteEndringH\303\270ySatsTest.java" "b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteEndringH\303\270ySatsTest.java" index 0be7efbe37..07657d2f0a 100644 --- "a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteEndringH\303\270ySatsTest.java" +++ "b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteEndringH\303\270ySatsTest.java" @@ -90,8 +90,8 @@ private BrevGenerererTjeneste lagBrevGenererTjeneste(boolean ignorePdf) { var endringInnholdBygger = new EndringHøySatsInnholdBygger(ungdomsytelseGrunnlagRepository); var detaljertResultatUtleder = new DetaljertResultatUtlederImpl( - new ProsessTriggerPeriodeUtleder(prosessTriggereRepository, new UngdomsytelseSøknadsperiodeTjeneste(ungdomsytelseStartdatoRepository, ungdomsprogramPeriodeTjeneste, repositoryProvider.getBehandlingRepository())), - tilkjentYtelseRepository); + new ProsessTriggerPeriodeUtleder(prosessTriggereRepository, new UngdomsytelseSøknadsperiodeTjeneste(ungdomsytelseStartdatoRepository, ungdomsprogramPeriodeTjeneste, repositoryProvider.getBehandlingRepository())), + tilkjentYtelseRepository); Instance innholdByggere = new UnitTestLookupInstanceImpl<>(endringInnholdBygger); @@ -100,13 +100,13 @@ private BrevGenerererTjeneste lagBrevGenererTjeneste(boolean ignorePdf) { new AktørTjeneste(pdlKlient), new PdfGenKlient(ignorePdf), personopplysningRepository, - new VedtaksbrevRegler( - repositoryProvider.getBehandlingRepository(), innholdByggere, detaljertResultatUtleder)); + new VedtaksbrevRegler( + repositoryProvider.getBehandlingRepository(), innholdByggere, detaljertResultatUtleder)); } @Test() - @DisplayName("Verifiserer faste tekster og mottaker") - void skalHaAlleStandardtekster() { + @DisplayName("Verifiserer formatering på overskrifter") + void verifiserOverskrifter() { UngTestScenario ungTestscenario = BrevScenarioer.endring25År(LocalDate.of(1999, 3, 25)); var behandling = lagScenario(ungTestscenario); @@ -114,7 +114,7 @@ void skalHaAlleStandardtekster() { var brevtekst = generertBrev.dokument().html(); - VedtaksbrevStandardTekstVerifiserer.verifiserStandardVedtaksbrevTekster(brevtekst, fnr, ungTestscenario); + VedtaksbrevVerifikasjon.verifiserStandardOverskrifter(brevtekst); } @@ -123,6 +123,12 @@ void skalHaAlleStandardtekster() { void standardEndringHøySats() { LocalDate fødselsdato = LocalDate.of(1999, 3, 25); var ungTestGrunnlag = BrevScenarioer.endring25År(fødselsdato); + var forventet = VedtaksbrevVerifikasjon.medHeaderOgFooter(fnr, + "Vi har endret ungdomsytelsen din " + + "Fra 25. mars 2024 får du ny dagsats på 954 kroner fordi du fyller 25 år. " + + "Nav utbetaler 2 ganger grunnbeløp fra deltager er 25 år. " + + "Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx. "); + var behandling = lagScenario(ungTestGrunnlag); @@ -131,19 +137,12 @@ void skalHaAlleStandardtekster() { var brevtekst = generertBrev.dokument().html(); - assertThatHtml(brevtekst).containsHtmlSubSequenceOnce( - "

Vi har endret ungdomsytelsen din

" - ).containsSentenceSubSequenceOnce( - "Fra 25. mars 2024 får du ny dagsats på 954 kroner fordi du fyller 25 år.", - "Nav utbetaler 2 ganger grunnbeløp fra deltager er 25 år.", - "Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx." - ); - - } + assertThatHtml(brevtekst) + .asPlainTextIsEqualTo(forventet) + .containsHtmlSubSequenceOnce( + "

Vi har endret ungdomsytelsen din

" + ); - @NotNull - private UngTestRepositories lagUngTestRepositories() { - return new UngTestRepositories(repositoryProvider, ungdomsytelseGrunnlagRepository, ungdomsprogramPeriodeRepository, ungdomsytelseStartdatoRepository, tilkjentYtelseRepository, prosessTriggereRepository); } @Test @@ -169,6 +168,11 @@ void pdfStrukturTest() throws IOException { } + @NotNull + private UngTestRepositories lagUngTestRepositories() { + return new UngTestRepositories(repositoryProvider, ungdomsytelseGrunnlagRepository, ungdomsprogramPeriodeRepository, ungdomsytelseStartdatoRepository, tilkjentYtelseRepository, prosessTriggereRepository); + } + private Behandling lagScenario(UngTestScenario ungTestscenario) { TestScenarioBuilder scenarioBuilder = TestScenarioBuilder.builderMedSøknad() diff --git a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteEndringInntektTest.java b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteEndringInntektTest.java index 136c913700..eb6fc0dd91 100644 --- a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteEndringInntektTest.java +++ b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteEndringInntektTest.java @@ -112,8 +112,8 @@ private BrevGenerererTjeneste lagBrevGenererTjeneste(boolean ignorePdf) { } @Test() - @DisplayName("Verifiserer faste tekster og mottaker") - void skalHaAlleStandardtekster() { + @DisplayName("Verifiserer formatering på overskrifter") + void verifiserOverskrifter() { UngTestScenario ungTestscenario = BrevScenarioer.endringMedInntektPå10k_19år(LocalDate.of(2024, 12, 1)); var behandling = lagScenario(ungTestscenario); @@ -121,7 +121,7 @@ void skalHaAlleStandardtekster() { var brevtekst = generertBrev.dokument().html(); - VedtaksbrevStandardTekstVerifiserer.verifiserStandardVedtaksbrevTekster(brevtekst, fnr, ungTestscenario); + VedtaksbrevVerifikasjon.verifiserStandardOverskrifter(brevtekst); } @@ -136,6 +136,16 @@ private UngTestRepositories lagUngTestRepositories() { void standardEndringRapportertInntekt() { LocalDate fom = LocalDate.of(2024, 12, 1); var ungTestGrunnlag = BrevScenarioer.endringMedInntektPå10k_19år(fom); + var forventet = VedtaksbrevVerifikasjon.medHeaderOgFooter(fnr, + "Vi har endret ungdomsytelsen din " + + "Du får 7 393 kroner i ungdomsytelse for perioden fra 1. desember 2024 til 31. desember 2024. " + + "Det er fordi du har hatt en inntekt på 10 000 kroner i denne perioden. " + + "Pengene får du ubetalt før den 10. denne måneden. " + + "Når du har en inntekt, får du mindre penger i ungdomsytelse. " + + "Vi regner ut hva 66 prosent av inntekten din er hver måned, og så trekker vi dette beløpet fra pengene du får i ungdomsytelsen for den måneden. " + + "Likevel får du til sammen mer penger når du både har en inntekt og får ungdomsytelse, enn hvis du bare hadde fått penger gjennom ungdomsytelsen. " + + "Se eksempel på hvordan vi regner ut ungdomsytelsen basert på inntekt i Ungdomsportalen. " + + "Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx. "); var behandling = lagScenario(ungTestGrunnlag); @@ -144,22 +154,12 @@ void standardEndringRapportertInntekt() { var brevtekst = generertBrev.dokument().html(); - assertThatHtml(brevtekst).containsHtmlSubSequenceOnce( - "

Vi har endret ungdomsytelsen din

" - ).containsTextAndSentenceSequenceOnce( - "Vi har endret ungdomsytelsen din ", - "Du får 7 393 kroner i ungdomsytelse for perioden fra 1. desember 2024 til 31. desember 2024.", - "Det er fordi du har hatt en inntekt på 10 000 kroner i denne perioden.", - "Pengene får du ubetalt før den 10. denne måneden.", - "Når du har en inntekt, får du mindre penger i ungdomsytelse.", - "Vi regner ut hva 66 prosent av inntekten din er hver måned, og så trekker vi dette beløpet fra pengene du får i ungdomsytelsen for den måneden.", - "Likevel får du til sammen mer penger når du både har en inntekt og får ungdomsytelse, enn hvis du bare hadde fått penger gjennom ungdomsytelsen.", - "Se eksempel på hvordan vi regner ut ungdomsytelsen basert på inntekt i Ungdomsportalen.", - "Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx.", - "Du har rett til å klage " - ).containsHtmlSubSequenceOnce( - "Se eksempel på hvordan vi regner ut ungdomsytelsen basert på inntekt i Ungdomsportalen." - ); + assertThatHtml(brevtekst) + .asPlainTextIsEqualTo(forventet) + .containsHtmlSubSequenceOnce( + "

Vi har endret ungdomsytelsen din

", + "Se eksempel på hvordan vi regner ut ungdomsytelsen basert på inntekt i Ungdomsportalen." + ); } @Test diff --git a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteInnvilgelseTest.java b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteInnvilgelseTest.java index 191524bd66..0ad7047ab1 100644 --- a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteInnvilgelseTest.java +++ b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteInnvilgelseTest.java @@ -115,22 +115,17 @@ private BrevGenerererTjeneste lagBrevGenererTjeneste(boolean ignorePdf) { } @Test() - @DisplayName("Verifiserer faste tekster og mottaker") - //Vurder å lage gjenbrukbar assertions som sjekker alle standardtekster og mottaker - void skalHaAlleStandardtekster() { - TestScenarioBuilder scenarioBuilder = BrevScenarioer - .lagAvsluttetStandardBehandling(lagUngTestRepositories()); + @DisplayName("Verifiserer formatering på overskrifter") + void verifiserOverskrifter() { + TestScenarioBuilder scenarioBuilder = BrevScenarioer.lagAvsluttetStandardBehandling(lagUngTestRepositories()); - var ungTestGrunnlag = scenarioBuilder.getUngTestGrunnlag(); var behandling = scenarioBuilder.getBehandling(); GenerertBrev generertBrev = genererVedtaksbrevBrev(behandling.getId()); var brevtekst = generertBrev.dokument().html(); - VedtaksbrevStandardTekstVerifiserer.verifiserStandardVedtaksbrevTekster( - brevtekst, fnr, ungTestGrunnlag - ); + VedtaksbrevVerifikasjon.verifiserStandardOverskrifter(brevtekst); } @@ -142,7 +137,6 @@ private UngTestRepositories lagUngTestRepositories() { @DisplayName("Innvilgelse med riktig fom dato, maks antall dager, lav sats, grunnbeløp, hjemmel") - //Denne testen sjekker også at teksten kommer i riktig rekkefølge @Test void standardInnvilgelse() { LocalDate fom = LocalDate.of(2024, 12, 1); @@ -155,15 +149,34 @@ void standardInnvilgelse() { var brevtekst = generertBrev.dokument().html(); - assertThatHtml(brevtekst).containsHtmlSubSequenceOnce( - "

Nav har innvilget søknaden din om ungdomsytelse

" - ).containsSentenceSubSequenceOnce( - "Du har rett til ungdomsytelse fra 1. desember 2024 i 260 dager.", - "Du får utbetalt 636 kroner dagen, før skatt.", - "Nav bruker grunnbeløpet på 124 028 kroner for å regne ut hvor mye du får.", - "Siden du er under 25 år så får du 1.33 ganger grunnbeløpet.", - "Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx." - ); + var forventet = VedtaksbrevVerifikasjon.medHeaderOgFooter(fnr, + """ + Nav har innvilget søknaden din om ungdomsytelse \ + Du har rett til ungdomsytelse fra 1. desember 2024 i 260 dager. \ + Du får utbetalt 636 kroner dagen, før skatt. \ + Nav utbetaler pengene innen den 25. i hver måned. \ + Informasjon om utbetaling finner du under utbetalingsoversikten på "Min side". \ + Du får ungdomsytelse fordi du er med ungdomsprogrammet. \ + Ungdomsprogrammet skal sikre deg inntekt mens du samarbeider med veileder i Nav om tiltak som skal hjelpe deg med arbeid. \ + Utbetalingene fra Nav kan endre seg etterhvert som du får eller mister inntekt. \ + Det er derfor viktig at du melder i fra om endringer i din inntekt på nav.no/ungdomsytelse/endring og informerer veileder. \ + Hvis du ikke gir beskjed om endringer i inntekten, kan Nav kreve penger tilbake, så det er viktig å gi beskjed med en gang det skjer endringer. \ + Nav bruker grunnbeløpet på 124 028 kroner for å regne ut hvor mye du får. \ + Siden du er under 25 år så får du 1.33 ganger grunnbeløpet. \ + Nav regner med 260 virkedager per år utenom helger og ferie. \ + For å regne ut hva du får per dag, deles årsbeløpet på antall dager. \ + Det betyr at du har rett på 1.33 x 124 028 = 165 370 kroner i året. \ + Dette gir en dagsats på 636 kroner. \ + For å regne hva du får utbetalt i måneden ganges dagsatsen med antall virkedager i måneden. \ + Du kan regne ut hva du får for en måned samt se flere eksempler på utregninger på nav.no/ungdomsytelse. \ + Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx. \ + """); + + assertThatHtml(brevtekst) + .asPlainTextIsEqualTo(forventet) + .containsHtmlSubSequenceOnce( + "

Nav har innvilget søknaden din om ungdomsytelse

" + ); } @@ -178,17 +191,32 @@ void standardInnvilgelse() { var brevtekst = generertBrev.dokument().html(); - assertThatHtml(brevtekst).containsHtmlSubSequenceOnce( - "

Nav har innvilget søknaden din om ungdomsytelse

" - ).containsSentenceSubSequenceOnce( - "Du har rett til ungdomsytelse fra 1. desember 2024 i 260 dager.", - "Du får utbetalt 954 kroner dagen, før skatt.", - "Siden du er over 25 år så får du 2 ganger grunnbeløpet." - ).doesNotContainText( - "636", - "under 25 år" - ); - + var forventet = VedtaksbrevVerifikasjon.medHeaderOgFooter(fnr, + """ + Nav har innvilget søknaden din om ungdomsytelse \ + Du har rett til ungdomsytelse fra 1. desember 2024 i 260 dager. \ + Du får utbetalt 954 kroner dagen, før skatt. \ + Nav utbetaler pengene innen den 25. i hver måned. \ + Informasjon om utbetaling finner du under utbetalingsoversikten på "Min side". \ + Du får ungdomsytelse fordi du er med ungdomsprogrammet. \ + Ungdomsprogrammet skal sikre deg inntekt mens du samarbeider med veileder i Nav om tiltak som skal hjelpe deg med arbeid. \ + Utbetalingene fra Nav kan endre seg etterhvert som du får eller mister inntekt. \ + Det er derfor viktig at du melder i fra om endringer i din inntekt på nav.no/ungdomsytelse/endring og informerer veileder. \ + Hvis du ikke gir beskjed om endringer i inntekten, kan Nav kreve penger tilbake, så det er viktig å gi beskjed med en gang det skjer endringer. \ + Nav bruker grunnbeløpet på 124 028 kroner for å regne ut hvor mye du får. \ + Siden du er over 25 år så får du 2 ganger grunnbeløpet. \ + Nav regner med 260 virkedager per år utenom helger og ferie. \ + For å regne ut hva du får per dag, deles årsbeløpet på antall dager. \ + Det betyr at du har rett på 2 x 124 028 = 248 056 kroner i året. \ + Dette gir en dagsats på 954 kroner. \ + For å regne hva du får utbetalt i måneden ganges dagsatsen med antall virkedager i måneden. \ + Du kan regne ut hva du får for en måned samt se flere eksempler på utregninger på nav.no/ungdomsytelse. \ + Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx. \ + """); + + assertThatHtml(brevtekst) + .asPlainTextIsEqualTo(forventet) + .containsHtmlSubSequenceOnce("

Nav har innvilget søknaden din om ungdomsytelse

"); } @DisplayName("blir 29 i løpet av programmet og får mindre enn maks antall dager") @@ -198,23 +226,40 @@ void standardInnvilgelse() { var fødselsdato = LocalDate.of(1996, 5, 15); //Blir 29 etter 6 mnd/130 dager i programmet var ungTestGrunnlag = BrevScenarioer.innvilget29År(fom, fødselsdato); + var forventet = VedtaksbrevVerifikasjon.medHeaderOgFooter(fnr, + """ + Nav har innvilget søknaden din om ungdomsytelse \ + Du har rett til ungdomsytelse fra 1. desember 2024 i 130 dager. \ + Du får utbetalt 954 kroner dagen, før skatt. \ + Nav utbetaler pengene innen den 25. i hver måned. \ + Informasjon om utbetaling finner du under utbetalingsoversikten på "Min side". \ + Du får ungdomsytelse fordi du er med ungdomsprogrammet. \ + Ungdomsprogrammet skal sikre deg inntekt mens du samarbeider med veileder i Nav om tiltak som skal hjelpe deg med arbeid. \ + Utbetalingene fra Nav kan endre seg etterhvert som du får eller mister inntekt. \ + Det er derfor viktig at du melder i fra om endringer i din inntekt på nav.no/ungdomsytelse/endring og informerer veileder. \ + Hvis du ikke gir beskjed om endringer i inntekten, kan Nav kreve penger tilbake, så det er viktig å gi beskjed med en gang det skjer endringer. \ + Nav bruker grunnbeløpet på 124 028 kroner for å regne ut hvor mye du får. \ + Siden du er over 25 år så får du 2 ganger grunnbeløpet til måneden du fyller 29 år. \ + Nav regner med 260 virkedager per år utenom helger og ferie. \ + For å regne ut hva du får per dag, deles årsbeløpet på antall dager. \ + Det betyr at du har rett på 2 x 124 028 = 248 056 kroner i året. \ + Dette gir en dagsats på 954 kroner. \ + For å regne hva du får utbetalt i måneden ganges dagsatsen med antall virkedager i måneden. \ + Du kan regne ut hva du får for en måned samt se flere eksempler på utregninger på nav.no/ungdomsytelse. \ + Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx. \ + """); + var behandling = lagScenario(ungTestGrunnlag); GenerertBrev generertBrev = genererVedtaksbrevBrev(behandling.getId()); var brevtekst = generertBrev.dokument().html(); - assertThatHtml(brevtekst).containsHtmlSubSequenceOnce( - "

Nav har innvilget søknaden din om ungdomsytelse

" - ).containsSentenceSubSequenceOnce( - "Du har rett til ungdomsytelse fra 1. desember 2024 i 130 dager.", - "Du får utbetalt 954 kroner dagen, før skatt.", - "Siden du er over 25 år så får du 2 ganger grunnbeløpet til måneden du fyller 29 år." - ).doesNotContainText( - "636", - "under 25 år" - ); - ; + assertThatHtml(brevtekst) + .asPlainTextIsEqualTo(forventet) + .containsHtmlSubSequenceOnce( + "

Nav har innvilget søknaden din om ungdomsytelse

" + ); } //dekker flere dagsatser også @@ -223,6 +268,32 @@ void standardInnvilgelse() { LocalDate fom = LocalDate.of(2024, 12, 1); var fødselsdato = LocalDate.of(2000, 5, 15); //Blir 25 etter 6 mnd/130 dager i programmet var ungTestGrunnlag = BrevScenarioer.innvilget24År(fom, fødselsdato); + var forventet = VedtaksbrevVerifikasjon.medHeaderOgFooter(fnr, + """ + Nav har innvilget søknaden din om ungdomsytelse \ + Du har rett til ungdomsytelse fra 1. desember 2024 i 260 dager. \ + Fra 1. desember 2024 til 31. mai 2025 får du utbetalt 636 kroner dagen, før skatt. \ + Fra 1. juni 2025 til 29. november 2025 får du utbetalt 954 kroner dagen, før skatt. \ + Nav utbetaler pengene innen den 25. i hver måned. \ + Informasjon om utbetaling finner du under utbetalingsoversikten på "Min side". \ + Du får ungdomsytelse fordi du er med ungdomsprogrammet. \ + Ungdomsprogrammet skal sikre deg inntekt mens du samarbeider med veileder i Nav om tiltak som skal hjelpe deg med arbeid. \ + Utbetalingene fra Nav kan endre seg etterhvert som du får eller mister inntekt. \ + Det er derfor viktig at du melder i fra om endringer i din inntekt på nav.no/ungdomsytelse/endring og informerer veileder. \ + Hvis du ikke gir beskjed om endringer i inntekten, kan Nav kreve penger tilbake, så det er viktig å gi beskjed med en gang det skjer endringer. \ + Nav bruker grunnbeløpet på 124 028 kroner for å regne ut hvor mye du får. \ + Du får 1.33 ganger grunnbeløpet mens du er under 25 år og 2 ganger grunnbeløpet fra måneden etter du fyller 25 år. \ + Nav regner med 260 virkedager per år utenom helger og ferie. \ + For å regne ut hva du får per dag, deles årsbeløpet på antall dager. \ + Fra 1. desember 2024 til 31. mai 2025 har du rett på 1.33 x 124 028 = 165 370 kroner i årsbeløp. \ + Dette gir en dagsats på 636 kroner i perioden. \ + Fra 1. juni 2025 til 29. november 2025 har du rett på 2 x 124 028 = 248 056 kroner i årsbeløp. \ + Dette gir en dagsats på 954 kroner i perioden. \ + For å regne hva du får utbetalt i måneden ganges dagsatsen med antall virkedager i måneden. \ + Du kan regne ut hva du får for en måned samt se flere eksempler på utregninger på nav.no/ungdomsytelse. \ + Vedtaket er gjort etter arbeidsmarkedsloven § xx og forskrift om xxx § xx. \ + """); + var behandling = lagScenario(ungTestGrunnlag); @@ -230,14 +301,11 @@ void standardInnvilgelse() { var brevtekst = generertBrev.dokument().html(); - assertThatHtml(brevtekst).containsHtmlSubSequenceOnce( - "

Nav har innvilget søknaden din om ungdomsytelse

" - ).containsSentenceSubSequenceOnce( - "Du har rett til ungdomsytelse fra 1. desember 2024 i 260 dager.", - "Fra 1. desember 2024 til 31. mai 2025 får du utbetalt 636 kroner dagen, før skatt.", - "Fra 1. juni 2025 til 29. november 2025 får du utbetalt 954 kroner dagen, før skatt.", - "Du får 1.33 ganger grunnbeløpet mens du er under 25 år og 2 ganger grunnbeløpet fra måneden etter du fyller 25 år." - ); + assertThatHtml(brevtekst) + .asPlainTextIsEqualTo(forventet) + .containsHtmlSubSequenceOnce( + "

Nav har innvilget søknaden din om ungdomsytelse

" + ); } @Test diff --git a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteTest.java b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteTest.java index 5195c25345..1fe29d15bc 100644 --- a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteTest.java +++ b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevGenerererTjenesteTest.java @@ -1,6 +1,5 @@ package no.nav.ung.sak.formidling; -import static no.nav.ung.sak.formidling.HtmlAssert.assertThatHtml; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import java.nio.charset.StandardCharsets; @@ -109,7 +108,7 @@ void skal_lage_vedtakspdf() { assertThat(generertBrev.malType()).isEqualTo(DokumentMalType.INNVILGELSE_DOK); var brevtekst = generertBrev.dokument().html(); - assertThatHtml(brevtekst).containsText("Til: " + ungTestGrunnlag.navn()); + assertThat(brevtekst).contains("Til: " + ungTestGrunnlag.navn()); } diff --git a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevUtils.java b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevUtils.java index b89b7b066b..4e5403c63b 100644 --- a/formidling/src/test/java/no/nav/ung/sak/formidling/BrevUtils.java +++ b/formidling/src/test/java/no/nav/ung/sak/formidling/BrevUtils.java @@ -11,6 +11,11 @@ import java.time.format.DateTimeFormatter; import java.util.Locale; +import org.jetbrains.annotations.NotNull; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Node; +import org.jsoup.select.NodeVisitor; import org.junit.jupiter.api.TestInfo; public class BrevUtils { @@ -45,4 +50,34 @@ public static void lagrePdf(byte[] data, String filename) { throw new RuntimeException(e); } } + + public static String htmlToPlainText(String html) { + return Jsoup.parse(html).text().replaceAll("(?m)^\\s*$\\n", ""); + } + + public static String trimmedHtml(String actual) { + // Use Jsoup to parse and clean the HTML + Document document = Jsoup.parse(actual); + + // Remove undesired elements + document.select("style, head, img").remove(); + document.traverse(new NodeVisitor() { + + @Override + public void head(@NotNull Node node, int depth) { + if (node.nodeName().equals("#comment")) { + node.remove(); + } + } + + @Override + public void tail(@NotNull Node node, int depth) { + // Do nothing on tail visit + } + }); + + // Extract cleaned HTML as a string + return document.body().html().replaceAll("(?m)^\\s*$\\n", ""); + } + } diff --git a/formidling/src/test/java/no/nav/ung/sak/formidling/HtmlAssert.java b/formidling/src/test/java/no/nav/ung/sak/formidling/HtmlAssert.java index 3724c8db15..2273674186 100644 --- a/formidling/src/test/java/no/nav/ung/sak/formidling/HtmlAssert.java +++ b/formidling/src/test/java/no/nav/ung/sak/formidling/HtmlAssert.java @@ -2,17 +2,10 @@ import static org.assertj.core.api.Assertions.assertThat; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import org.assertj.core.api.AbstractAssert; import org.assertj.core.api.SoftAssertions; -import org.jetbrains.annotations.NotNull; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Node; -import org.jsoup.select.NodeVisitor; /** * Gjør det enklere å assert tekster i html. Fjerner urelevante tagger og linjeskift @@ -27,101 +20,25 @@ public HtmlAssert(String actual) { super(actual, HtmlAssert.class); this.actual = actual; - // Use Jsoup to parse and clean the HTML - Document document = Jsoup.parse(actual); - - // Remove undesired elements - document.select("style, head, img").remove(); - removeComments(document); - - // Extract cleaned HTML as a string - actualHtmlTrimmed = document.body().html().replaceAll("(?m)^\\s*$\\n", ""); // Remove empty lines - actualTextTrimmed = Jsoup.parse(actual).text().replaceAll("(?m)^\\s*$\\n", ""); + actualHtmlTrimmed = BrevUtils.trimmedHtml(actual); + actualTextTrimmed = BrevUtils.htmlToPlainText(actual); } public static HtmlAssert assertThatHtml(String actual) { return new HtmlAssert(actual); } - public HtmlAssert containsText(String text) { - assertThat(actualTextTrimmed).contains(text); - return this; - } - - - /** - * Kan brukes til å sjekke at brevet henger sammen med riktig teksten uten noe i mellom. - * Husk å legge på punktum på setninger selv! - * - * hvis setning slutter på punktum legges det på en space for å fange opp tegn etter punkt som ikke skal være der. - */ - public HtmlAssert containsTextAndSentenceSequenceOnce(String... text) { - var transformed = addSpaceAfterSentenceStop(text); - assertThatContainsSequenceOnce(actualTextTrimmed, transformed.toArray(new String[0])); - return this; - } - - public HtmlAssert containsTextSubSequenceOnce(String... text) { - assertThatContainsSubSequenceOnce(actualTextTrimmed, text); + public HtmlAssert asPlainTextIsEqualTo(String text) { + assertThat(actualTextTrimmed).isEqualTo(text); return this; } - private static List addSpaceAfterSentenceStop(String[] text) { - List list = new ArrayList<>(text.length); - for (var linje : text) { - var trimmedLinje = linje.trim(); - list.add(trimmedLinje.endsWith(".") ? trimmedLinje + " " : linje); - - } - return list; - } - - /** - * Sjekker om alle text er setninger med punktum. Legger også på space etter siste punktum for å fange f.eks. - * feilaktig dobbel punktum - */ - private static List validateAndMakeSentencesWithSpace(String[] text) { - List list = new ArrayList<>(); - for (var linje : text) { - var trimmedLinje = linje.trim(); - if (!trimmedLinje.endsWith(".")) { - throw new IllegalArgumentException("Alle setninger må slutte med punktum. Setningen: \"" + linje + "\" mangler punktum."); - } - list.add(trimmedLinje + " "); - } - return list; - } - - - public HtmlAssert containsSentenceSubSequenceOnce(String... text) { - List list = validateAndMakeSentencesWithSpace(text); - containsTextSubSequenceOnce(list.toArray(new String[0])); - return this; - } public HtmlAssert containsHtmlSubSequenceOnce(String... html) { assertThatContainsSubSequenceOnce(actualHtmlTrimmed, html); return this; } - public HtmlAssert doesNotContainText(String... texts) { - assertThat(actualTextTrimmed).doesNotContain(texts); - return this; - } - - public HtmlAssert doesNotContainHtml(String... texts) { - assertThat(actualHtmlTrimmed).doesNotContain(texts); - return this; - } - - /** - * Sjekker at teksten kommer etterhverandre i rekkefølge én gang uten noe annen tekst i mellom - */ - private void assertThatContainsSequenceOnce(String actual, String... seq) { - assertThat(actual).containsSequence(seq); - assertThatOnlyOneOccurance(actual, seq); - } - /** * Sjekker at teksten kommer etterhverandre i rekkefølge én gang. Kan ha annen tekst i mellom. */ @@ -138,20 +55,4 @@ private static void assertThatOnlyOneOccurance(String actual, String[] seq) { soft.assertAll(); } - private void removeComments(Document document) { - document.traverse(new NodeVisitor() { - - @Override - public void head(@NotNull Node node, int depth) { - if (node.nodeName().equals("#comment")) { - node.remove(); - } - } - - @Override - public void tail(@NotNull Node node, int depth) { - // Do nothing on tail visit - } - }); - } } diff --git a/formidling/src/test/java/no/nav/ung/sak/formidling/VedtaksbrevStandardTekstVerifiserer.java b/formidling/src/test/java/no/nav/ung/sak/formidling/VedtaksbrevStandardTekstVerifiserer.java deleted file mode 100644 index 9296fd9379..0000000000 --- a/formidling/src/test/java/no/nav/ung/sak/formidling/VedtaksbrevStandardTekstVerifiserer.java +++ /dev/null @@ -1,28 +0,0 @@ -package no.nav.ung.sak.formidling; - -import static no.nav.ung.sak.formidling.HtmlAssert.assertThatHtml; - -import java.time.LocalDate; - -import no.nav.ung.sak.test.util.behandling.UngTestScenario; - -public class VedtaksbrevStandardTekstVerifiserer { - static void verifiserStandardVedtaksbrevTekster(String brevHtml, String fnr, UngTestScenario ungTestscenario) { - assertThatHtml(brevHtml).containsTextSubSequenceOnce( - BrevUtils.brevDatoString(LocalDate.now()), //vedtaksdato - "Til: " + ungTestscenario.navn(), - "Fødselsnummer: " + fnr, - "Du har rett til å klage", - "Du kan klage innen 6 uker fra den datoen du mottok vedtaket. Du finner skjema og informasjon på nav.no/klage. ", - "Du har rett til innsyn", - "Du kan se dokumentene i saken din ved å logge deg inn på nav.no. ", - "Trenger du mer informasjon?", - "Med vennlig hilsen", - "Nav Arbeid og ytelser" - ).containsHtmlSubSequenceOnce( - "

Du har rett til å klage

", - "

Du har rett til innsyn

", - "

Trenger du mer informasjon?

" - ); - } -} diff --git a/formidling/src/test/java/no/nav/ung/sak/formidling/VedtaksbrevVerifikasjon.java b/formidling/src/test/java/no/nav/ung/sak/formidling/VedtaksbrevVerifikasjon.java new file mode 100644 index 0000000000..2a196ab078 --- /dev/null +++ b/formidling/src/test/java/no/nav/ung/sak/formidling/VedtaksbrevVerifikasjon.java @@ -0,0 +1,38 @@ +package no.nav.ung.sak.formidling; + +import static no.nav.ung.sak.formidling.HtmlAssert.assertThatHtml; + +import java.time.LocalDate; + +public class VedtaksbrevVerifikasjon { + + + static String medHeaderOgFooter(String fnr, String body) { + LocalDate brevdato = LocalDate.now(); + return """ + Brev for ungdomsytelsen %s \ + Til: %s \ + Fødselsnummer: %s \ + %s\ + Du har rett til å klage Du kan klage innen 6 uker fra den datoen du mottok vedtaket. \ + Du finner skjema og informasjon på nav.no/klage. \ + Du har rett til innsyn \ + Du kan se dokumentene i saken din ved å logge deg inn på nav.no. \ + Trenger du mer informasjon? \ + Du finner mer informasjon på nav.no/ungdomsytelse. \ + På nav.no/kontakt kan du chatte eller skrive til oss. \ + Hvis du ikke finner svar på nav.no kan du ringe oss på telefon 55 55 33 33, hverdager 09:00-15:00. \ + Med vennlig hilsen \ + Nav Arbeid og ytelser \ + side av""".formatted(BrevUtils.brevDatoString(brevdato), BrevScenarioer.DEFAULT_NAVN, fnr, body); + } + + + static void verifiserStandardOverskrifter(String brevHtml) { + assertThatHtml(brevHtml).containsHtmlSubSequenceOnce( + "

Du har rett til å klage

", + "

Du har rett til innsyn

", + "

Trenger du mer informasjon?

" + ); + } +} diff --git a/pom.xml b/pom.xml index 19f4b97ab3..68def2081b 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,7 @@ true 4.4.16 2.2.29 + 5.12.0 11.4.2 2.18.3 9.7.1