Skip to content

Commit

Permalink
skrevet tester
Browse files Browse the repository at this point in the history
  • Loading branch information
anderslysne committed Dec 19, 2024
1 parent 69d64da commit f3a656e
Show file tree
Hide file tree
Showing 3 changed files with 266 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.arbeidsgiver.notifikasjon.produsent.api

import io.kotest.core.spec.style.DescribeSpec
import io.kotest.core.spec.style.scopes.DescribeSpecContainerScope
import io.kotest.matchers.collections.beEmpty
import io.kotest.matchers.nulls.beNull
import io.kotest.matchers.should
Expand All @@ -11,12 +12,12 @@ import io.kotest.matchers.types.instanceOf
import io.ktor.http.*
import io.ktor.server.testing.*
import no.nav.arbeidsgiver.notifikasjon.hendelse.HendelseModel
import no.nav.arbeidsgiver.notifikasjon.hendelse.HendelseModel.NærmesteLederMottaker
import no.nav.arbeidsgiver.notifikasjon.produsent.Produsent
import no.nav.arbeidsgiver.notifikasjon.produsent.ProdusentModel
import no.nav.arbeidsgiver.notifikasjon.produsent.ProdusentRepositoryImpl
import no.nav.arbeidsgiver.notifikasjon.produsent.api.MutationKalenderavtale.KalenderavtaleTilstand.*
import no.nav.arbeidsgiver.notifikasjon.util.*
import org.joda.time.LocalDate
import java.time.LocalDateTime
import java.time.OffsetDateTime
import java.util.*
Expand Down Expand Up @@ -311,6 +312,65 @@ class KalenderavtaleTests : DescribeSpec({
}
}
}
context("Validering av mottaker mot sak") {
val (produsentRepository, kafkaProducer, engine) = setupEngine()
val sakOpprettet = HendelseModel.SakOpprettet(
virksomhetsnummer = "42",
merkelapp = "tag",
grupperingsid = "g42",
mottakere = listOf(
NærmesteLederMottaker(
naermesteLederFnr = "12345678910",
ansattFnr = "321",
virksomhetsnummer = "42"
)
),
hendelseId = uuid("11"),
sakId = uuid("11"),
tittel = "test",
lenke = "https://nav.no",
oppgittTidspunkt = OffsetDateTime.parse("2020-01-01T01:01Z"),
mottattTidspunkt = OffsetDateTime.parse("2020-01-01T01:01Z"),
kildeAppNavn = "",
produsentId = "",
nesteSteg = null,
hardDelete = null,
tilleggsinformasjon = null
).also {
produsentRepository.oppdaterModellEtterHendelse(it)
}

val nyKalenderavtale = opprettKalenderavtaleMedMottaker(
engine,
grupperingsId = "g42",
virksomhetsnummer = "41",
eksternId = "1",
mottaker =
"""naermesteLeder: {
naermesteLederFnr: "12345678910",
ansattFnr: "321"
}"""
)
it("Kalenderavtale har feil virksomhetsnummer") {
nyKalenderavtale shouldBe instanceOf<Error.UgyldigMottaker>()
}

val nyKalenderavtale2 = opprettKalenderavtaleMedMottaker(
engine,
grupperingsId = "g42",
virksomhetsnummer = "42",
eksternId = "2",
mottaker =
"""altinn: {
serviceCode: "1",
serviceEdition: "1"
}"""
)

it("Kalenderavtale har feil mottakerType") {
nyKalenderavtale2 shouldBe instanceOf<Error.UgyldigMottaker>()
}
}
}
})

Expand Down Expand Up @@ -539,3 +599,72 @@ private fun TestApplicationEngine.oppdaterKalenderavtaleByEksternId(
}
""".trimIndent()
)

private fun DescribeSpecContainerScope.opprettKalenderavtaleMedMottaker(
engine: TestApplicationEngine,
grupperingsId: String,
eksternId: String,
mottaker: String,
virksomhetsnummer: String,
startTidspunkt: String = "2024-10-12T07:20:50.52",
sluttTidspunkt: String = "2024-10-12T08:20:50.52",
): MutationKalenderavtale.NyKalenderavtaleResultat {
val mutation =
"""
mutation {
nyKalenderavtale(
mottakere: [{
$mottaker
}
]
lenke: "https://foo.bar"
tekst: "hello world"
merkelapp: "tag"
grupperingsid: "$grupperingsId"
eksternId: "$eksternId"
startTidspunkt: "$startTidspunkt"
sluttTidspunkt: "$sluttTidspunkt"
lokasjon: {
postnummer: "1234"
poststed: "Kneika"
adresse: "rundt svingen og borti høgget"
}
erDigitalt: true
virksomhetsnummer: "$virksomhetsnummer"
eksterneVarsler: [{
altinntjeneste: {
sendetidspunkt: {
sendevindu: LOEPENDE
}
mottaker: {
serviceCode: "5441"
serviceEdition: "1"
}
innhold: "foo"
tittel: "bar"
}
}]
hardDelete: {
den: "2019-10-13T07:20:50.52"
}
) {
__typename
... on NyKalenderavtaleVellykket {
id
eksterneVarsler {
id
}
}
... on Error {
feilmelding
}
}
}
""".trimIndent()

val response = engine.produsentApi(mutation)
response.status() shouldBe HttpStatusCode.OK
response.getGraphqlErrors() should beEmpty()
return response.getTypedContent("nyKalenderavtale")
}
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,82 @@ class NyBeskjedTests : DescribeSpec({
produsentRepository.hentNotifikasjon(id) shouldNot beNull()
}
}

describe("Validering av mottaker mot sak") {
val (produsentRepository, _, engine) = setupEngine()
val sakOpprettet = HendelseModel.SakOpprettet(
virksomhetsnummer = "42",
merkelapp = "tag",
grupperingsid = "g42",
mottakere = listOf(
NærmesteLederMottaker(
naermesteLederFnr = "12345678910",
ansattFnr = "321",
virksomhetsnummer = "42"
)
),
hendelseId = uuid("11"),
sakId = uuid("11"),
tittel = "test",
lenke = "https://nav.no",
oppgittTidspunkt = OffsetDateTime.parse("2020-01-01T01:01Z"),
mottattTidspunkt = OffsetDateTime.parse("2020-01-01T01:01Z"),
kildeAppNavn = "",
produsentId = "",
nesteSteg = null,
hardDelete = null,
tilleggsinformasjon = null
).also {
produsentRepository.oppdaterModellEtterHendelse(it)
}

val nyBeskjed = opprettBeskjedMedMottaker(
engine,
grupperingsId = "g42",
virksomhetsnummer = "41",
eksternId = "1",
mottaker =
"""naermesteLeder: {
naermesteLederFnr: "12345678910",
ansattFnr: "321"
}"""
)
it("Beskjed har feil virksomhetsnummer") {
nyBeskjed shouldBe instanceOf<Error.UgyldigMottaker>()
}

val nyBeskjed2 = opprettBeskjedMedMottaker(
engine,
grupperingsId = "g42",
virksomhetsnummer = "42",
eksternId = "2",
mottaker =
"""altinn: {
serviceCode: "1",
serviceEdition: "1"
}"""
)

it("Beskjed har feil mottakerType") {
nyBeskjed2 shouldBe instanceOf<Error.UgyldigMottaker>()
}

val nyBeskjed3 = opprettBeskjedMedMottaker(
engine,
grupperingsId = "g41",
virksomhetsnummer = "41",
eksternId = "3",
mottaker =
"""altinn: {
serviceCode: "1",
serviceEdition: "1"
}"""
)

it("Beskjed har ikke grupperingsid, og er ikke koblet til sak") {
nyBeskjed3 shouldBe instanceOf<MutationNyBeskjed.NyBeskjedVellykket>()
}
}
})

private fun DescribeSpec.setupEngine(): Triple<ProdusentRepositoryImpl, FakeHendelseProdusent, TestApplicationEngine> {
Expand Down Expand Up @@ -173,3 +249,54 @@ private suspend inline fun DescribeSpecContainerScope.opprettOgTestNyBeskjed(
return nyBeskjed as MutationNyBeskjed.NyBeskjedVellykket
}


private fun DescribeSpecContainerScope.opprettBeskjedMedMottaker(
engine: TestApplicationEngine,
grupperingsId: String,
eksternId: String,
mottaker: String,
virksomhetsnummer: String,
): MutationNyBeskjed.NyBeskjedResultat {
val mutation =
"""
mutation {
nyBeskjed(nyBeskjed: {
mottakere: [{
$mottaker
}
]
notifikasjon: {
lenke: "https://foo.bar",
tekst: "hello world",
merkelapp: "tag",
}
metadata: {
eksternId: "$eksternId",
opprettetTidspunkt: "2019-10-12T07:20:50.52Z"
virksomhetsnummer: "$virksomhetsnummer"
hardDelete: {
den: "2019-10-13T07:20:50.52"
}
grupperingsid: "$grupperingsId",
}
}) {
__typename
... on NyBeskjedVellykket {
id
eksterneVarsler {
id
}
}
... on Error {
feilmelding
}
}
}
""".trimIndent()

val response = engine.produsentApi(mutation)
response.status() shouldBe HttpStatusCode.OK
response.getGraphqlErrors() should beEmpty()
return response.getTypedContent("nyBeskjed")
}
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ class NyOppgaveTests : DescribeSpec({
}
}

describe("Feil i validering av mottaker") {
describe("Validering av mottaker mot sak") {
val (produsentRepository, kafkaProducer, engine) = setupEngine()
val sakOpprettet = HendelseModel.SakOpprettet(
virksomhetsnummer = "42",
Expand Down Expand Up @@ -187,8 +187,8 @@ class NyOppgaveTests : DescribeSpec({
eksternId = "1",
mottaker =
"""naermesteLeder: {
naermesteLederFnr: "12345678910",
ansattFnr: "321"
naermesteLederFnr: "12345678910",
ansattFnr: "321"
}"""
)
it("Oppgave har feil virksomhetsnummer") {
Expand Down Expand Up @@ -317,9 +317,11 @@ private fun DescribeSpecContainerScope.opprettOppgaveMedMottaker(
"""
mutation {
nyOppgave(nyOppgave: {
mottaker: {
$mottaker
}
mottakere: [{
$mottaker
}
]
notifikasjon: {
lenke: "https://foo.bar",
tekst: "hello world",
Expand Down Expand Up @@ -353,7 +355,4 @@ private fun DescribeSpecContainerScope.opprettOppgaveMedMottaker(
response.status() shouldBe HttpStatusCode.OK
response.getGraphqlErrors() should beEmpty()
return response.getTypedContent("nyOppgave")

}


}

0 comments on commit f3a656e

Please sign in to comment.