Skip to content

Commit

Permalink
Lagt til endepunkt for å opprette med validering (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
fredrikmork authored Nov 19, 2024
1 parent ccb740d commit 84ddbc2
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 29 deletions.
23 changes: 23 additions & 0 deletions src/main/kotlin/no/nav/familie/pdf/pdf/JSONLeser.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package no.nav.familie.pdf.pdf

import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import java.io.FileNotFoundException

val objectMapper: ObjectMapper =
jacksonObjectMapper()
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.registerModule(JavaTimeModule())

fun lesJSON(): Map<String, Any> {
val inndataStreng =
object {}
.javaClass
.getResourceAsStream("/søknad.json")
?.bufferedReader()
?.readText()
?: throw FileNotFoundException("Kan ikke lese søknad.json")
return objectMapper.readValue(inndataStreng, Map::class.java) as Map<String, Any>
}
18 changes: 0 additions & 18 deletions src/main/kotlin/no/nav/familie/pdf/pdf/PdfController.kt

This file was deleted.

44 changes: 44 additions & 0 deletions src/main/kotlin/no/nav/familie/pdf/pdf/PdfOppretterController.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package no.nav.familie.pdf.pdf

import no.nav.familie.pdf.pdf.types.PdfMedStandarder
import no.nav.familie.pdf.pdf.types.lagPdfMedStandarder
import org.springframework.web.bind.annotation.CrossOrigin
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("api")
class PdfOppretterController {
@PostMapping("/lag-pdf")
fun lagPdf(
@RequestBody søknad: Map<String, Any>,
): ByteArray {
val generertPdf = PdfOppretterService().lagPdf(søknad)
return generertPdf
}

@CrossOrigin(origins = ["http://localhost:5173"])
@PostMapping("generate-pdf")
fun lagPdfMedValidering(
@RequestBody søknad: Map<String, Any>,
): PdfMedStandarder {
val pdf =
PdfOppretterService()
.lagPdf(søknad)

return lagPdfMedStandarder(pdf)
}

@CrossOrigin(origins = ["http://localhost:5173"])
@GetMapping("lag-pdf-med-standarder")
fun hentPdfFraResourceMedStandarder(): PdfMedStandarder {
val søknad = lesJSON()
val pdf =
PdfOppretterService()
.lagPdf(søknad)
return lagPdfMedStandarder(pdf)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import no.nav.familie.pdf.pdf.elementer.PdfElementer.navLogoBilde
import no.nav.familie.pdf.pdf.elementer.lagListeMedAlleBarn
import no.nav.familie.pdf.pdf.elementer.lagTabell

class PdfGenerator {
class PdfOppretterService {
fun lagPdf(feltMap: Map<String, Any>): ByteArray {
feltMap.values.forEach { value ->
requireNotNull(value) { "feltMap sitt label eller verdiliste er tom." }
Expand Down
28 changes: 28 additions & 0 deletions src/main/kotlin/no/nav/familie/pdf/pdf/types/PdfMedStandarder.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package no.nav.familie.pdf.pdf.types

import no.nav.familie.pdf.pdf.validerPdf

data class PdfMedStandarder(
val pdf: ByteArray,
val standarder: Standarder,
)

fun lagPdfMedStandarder(pdf: ByteArray): PdfMedStandarder =
PdfMedStandarder(
pdf,
Standarder(
ua1 = validerPdf(pdf, "ua1"),
ua2 = validerPdf(pdf, "ua2"),
`1a` = validerPdf(pdf, "1a"),
`1b` = validerPdf(pdf, "1b"),
`2a` = validerPdf(pdf, "2a"),
`2b` = validerPdf(pdf, "2b"),
`2u` = validerPdf(pdf, "2u"),
`3a` = validerPdf(pdf, "3a"),
`3b` = validerPdf(pdf, "3b"),
`3u` = validerPdf(pdf, "3u"),
`4` = validerPdf(pdf, "4"),
`4f` = validerPdf(pdf, "4f"),
`4e` = validerPdf(pdf, "4e"),
),
)
20 changes: 20 additions & 0 deletions src/test/kotlin/no/nav/familie/pdf/pdf/JSONLeserTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package no.nav.familie.pdf.no.nav.familie.pdf.pdf

import no.nav.familie.pdf.pdf.lesJSON
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

class JSONLeserTest {
@Test
fun `tester readJSON for søknadjson gir forventede verdier`() {
// Act
val resultat = lesJSON()
// Assert
assertEquals("Søknad om overgangsstønad (NAV 15-00.01)", resultat["label"])
val verdiliste = resultat["verdiliste"] as List<Map<String, Any>>
assertEquals("Innsendingsdetaljer", verdiliste[0]["label"])
val innsendingsdetaljer = verdiliste[0]["verdiliste"] as List<Map<String, Any>>
assertEquals("Dato mottatt", innsendingsdetaljer[0]["label"])
assertEquals("09.10.2024 09:59:35", innsendingsdetaljer[0]["verdi"])
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import no.nav.familie.pdf.no.nav.familie.pdf.pdf.utils.lagMedTomVerdiliste
import no.nav.familie.pdf.no.nav.familie.pdf.pdf.utils.lagMedVerdiliste
import no.nav.familie.pdf.no.nav.familie.pdf.pdf.utils.lagNullInnhold
import no.nav.familie.pdf.no.nav.familie.pdf.pdf.utils.lagToSiderInnholdsfortegnelse
import no.nav.familie.pdf.pdf.PdfGenerator
import no.nav.familie.pdf.pdf.PdfOppretterService
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
Expand All @@ -20,8 +20,8 @@ import org.junit.jupiter.params.provider.MethodSource
import java.io.ByteArrayInputStream
import java.util.stream.Stream

class PdfGeneratorTest {
private val pdfGenerator = PdfGenerator()
class PdfOppretterServiceTest {
private val pdfOppretterService = PdfOppretterService()

companion object {
@JvmStatic
Expand All @@ -44,7 +44,7 @@ class PdfGeneratorTest {
// Arrange
val feltMap = lagMedTomVerdiliste()
// Act
val result = pdfGenerator.lagPdf(feltMap)
val result = pdfOppretterService.lagPdf(feltMap)
// Assert
assertTrue(result.isNotEmpty())
}
Expand All @@ -54,7 +54,7 @@ class PdfGeneratorTest {
// Arrange
val feltMap = lagMedVerdiliste()
// Act
val result = pdfGenerator.lagPdf(feltMap)
val result = pdfOppretterService.lagPdf(feltMap)
// Assert
assertTrue(result.isNotEmpty())
}
Expand All @@ -64,7 +64,7 @@ class PdfGeneratorTest {
// Arrange
val feltMap = lagMedForskjelligLabelIVerdiliste()
// Act
val result = pdfGenerator.lagPdf(feltMap)
val result = pdfOppretterService.lagPdf(feltMap)
// Assert
assertTrue(result.isNotEmpty())
}
Expand All @@ -75,7 +75,7 @@ class PdfGeneratorTest {
val feltMap = lagNullInnhold()
// Act & Assert
assertThrows(IllegalArgumentException::class.java) {
pdfGenerator.lagPdf(feltMap as Map<String, Any>)
pdfOppretterService.lagPdf(feltMap as Map<String, Any>)
}
}

Expand All @@ -85,7 +85,7 @@ class PdfGeneratorTest {
val feltMap = lagMedVerdiliste()

// Act
val result = pdfGenerator.lagPdf(feltMap)
val result = pdfOppretterService.lagPdf(feltMap)
val pdfReader = PdfReader(ByteArrayInputStream(result))
val pdfWriter = PdfWriter(ByteArrayOutputStream())
val pdfDoc = PdfADocument(pdfReader, pdfWriter)
Expand All @@ -101,7 +101,7 @@ class PdfGeneratorTest {
@MethodSource("innholdsfortegnelseMedEnOgToSider")
fun `Pdf legger forside med innholdsfortegnelse først`(feltMap: Map<String, Any>) {
// Act
val result = pdfGenerator.lagPdf(feltMap)
val result = pdfOppretterService.lagPdf(feltMap)
val pdfReader = PdfReader(ByteArrayInputStream(result))
val pdfWriter = PdfWriter(ByteArrayOutputStream())
val pdfDoc = PdfADocument(pdfReader, pdfWriter)
Expand All @@ -118,7 +118,7 @@ class PdfGeneratorTest {
forventetSide: Int,
) {
// Act
val result = pdfGenerator.lagPdf(feltMap)
val result = pdfOppretterService.lagPdf(feltMap)
val pdfReader = PdfReader(ByteArrayInputStream(result))
val pdfWriter = PdfWriter(ByteArrayOutputStream())
val pdfDoc = PdfADocument(pdfReader, pdfWriter)
Expand Down

0 comments on commit 84ddbc2

Please sign in to comment.