Skip to content

Commit

Permalink
Kast egendefinert feil dersom sak/oppgave ikke finnes (#26)
Browse files Browse the repository at this point in the history
* Kast egendefinert feil dersom sak/oppgave ikke finnes

* Kast egendefinert feil når oppgave ikke finnes men settes til utgått
  • Loading branch information
bjerga authored Oct 15, 2024
1 parent 7fbb503 commit 5baf926
Show file tree
Hide file tree
Showing 12 changed files with 200 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ internal object Feil {
nyStatus: SaksStatus,
resultat: NyStatusSakResultat?,
feil: List<GraphQLClientError>?,
) {
): Nothing {
if (resultat is FinnesIkkeNyStatusSak) {
loggWarning("Sak finnes ikke. Trolig slettet pga. levetid. Feilmelding: '${resultat.feilmelding}'.")
throw SakEllerOppgaveFinnesIkkeException(resultat.feilmelding)
} else {
val feilmelding =
when (resultat) {
Expand All @@ -119,21 +119,24 @@ internal object Feil {
resultat: NyStatusSakByGrupperingsidResultat?,
feil: List<GraphQLClientError>?,
): Nothing {
val feilmelding =
when (resultat) {
is KonfliktNyStatusSakByGrupperingsid -> resultat.feilmelding
is SakFinnesIkkeNyStatusSakByGrupperingsid -> resultat.feilmelding
is UgyldigMerkelappByGrupperingsid -> resultat.feilmelding
is UkjentProdusentByGrupperingsid -> resultat.feilmelding
else -> null
}

if (feilmelding != null) {
feilmelding.loggFeilmelding()
throw NyStatusSakByGrupperingsidException(grupperingsid, merkelapp, nyStatus, feilmelding)
if (resultat is SakFinnesIkkeNyStatusSakByGrupperingsid) {
throw SakEllerOppgaveFinnesIkkeException(resultat.feilmelding)
} else {
loggError("Klarte ikke endre status på sak (fra grupperingsid): $feil")
throw NyStatusSakByGrupperingsidException(grupperingsid, merkelapp, nyStatus, feil.ukjentFeil())
val feilmelding =
when (resultat) {
is KonfliktNyStatusSakByGrupperingsid -> resultat.feilmelding
is UgyldigMerkelappByGrupperingsid -> resultat.feilmelding
is UkjentProdusentByGrupperingsid -> resultat.feilmelding
else -> null
}

if (feilmelding != null) {
feilmelding.loggFeilmelding()
throw NyStatusSakByGrupperingsidException(grupperingsid, merkelapp, nyStatus, feilmelding)
} else {
loggError("Klarte ikke endre status på sak (fra grupperingsid): $feil")
throw NyStatusSakByGrupperingsidException(grupperingsid, merkelapp, nyStatus, feil.ukjentFeil())
}
}
}

Expand Down Expand Up @@ -165,9 +168,9 @@ internal object Feil {
id: String,
resultat: OppgaveUtfoertResultat?,
feil: List<GraphQLClientError>?,
) {
): Nothing {
if (resultat is NotifikasjonFinnesIkkeOppgaveUtfoert) {
loggWarning("Oppgave finnes ikke. Trolig slettet pga. levetid. Feilmelding: '${resultat.feilmelding}'.")
throw SakEllerOppgaveFinnesIkkeException(resultat.feilmelding)
} else {
val feilmelding =
when (resultat) {
Expand All @@ -191,9 +194,9 @@ internal object Feil {
merkelapp: String,
resultat: OppgaveUtfoertByEksternIdV2Resultat?,
feil: List<GraphQLClientError>?,
) {
): Nothing {
if (resultat is NotifikasjonFinnesIkkeOppgaveUtfoertByEksternIdV2) {
loggWarning("Oppgave finnes ikke. Trolig slettet pga. levetid. Feilmelding: '${resultat.feilmelding}'.")
throw SakEllerOppgaveFinnesIkkeException(resultat.feilmelding)
} else {
val feilmelding =
when (resultat) {
Expand All @@ -216,9 +219,9 @@ internal object Feil {
id: String,
resultat: OppgaveUtgaattResultat?,
feil: List<GraphQLClientError>?,
) {
): Nothing {
if (resultat is NotifikasjonFinnesIkke) {
loggWarning("Oppgave finnes ikke. Trolig slettet pga. levetid. Feilmelding: '${resultat.feilmelding}'.")
throw SakEllerOppgaveFinnesIkkeException(resultat.feilmelding)
} else {
val feilmelding =
when (resultat) {
Expand All @@ -242,11 +245,9 @@ internal object Feil {
eksternId: String,
resultat: OppgaveUtgaattByEksternIdResultat?,
feil: List<GraphQLClientError>?,
) {
): Nothing {
if (resultat is NotifikasjonFinnesIkkeByEksternId) {
loggWarning(
"Oppgave finnes ikke. Trolig slettet pga. levetid. Feilmelding: '${resultat.feilmelding}'.",
)
throw SakEllerOppgaveFinnesIkkeException(resultat.feilmelding)
} else {
val feilmelding =
when (resultat) {
Expand Down Expand Up @@ -352,6 +353,10 @@ internal object Feil {
private fun List<GraphQLClientError>?.ukjentFeil(): String = "Ukjent feil: $this"
}

class SakEllerOppgaveFinnesIkkeException(
feilmelding: String,
) : Exception("Sak/oppgave finnes ikke. Trolig slettet pga. levetid. Feilmelding: '$feilmelding'.")

class OpprettNySakException(
feilmelding: String?,
) : Exception("Opprettelse av ny sak mot arbeidsgiver-notifikasjon-api feilet: $feilmelding")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import kotlinx.coroutines.runBlocking
import no.nav.helsearbeidsgiver.arbeidsgivernotifkasjon.graphql.generated.enums.SaksStatus
import no.nav.helsearbeidsgiver.utils.test.resource.readResource
import org.junit.jupiter.api.assertDoesNotThrow
import org.junit.jupiter.api.assertThrows
import java.time.LocalDateTime
import kotlin.test.Test
import kotlin.test.assertEquals
Expand Down Expand Up @@ -50,6 +51,23 @@ class ArbeidsgiverNotifikasjonKlientTest {
}
}

@Test
fun `nyStatusSak - dersom sak ikke finnes så kastes egendefinert exception`() {
val response = "responses/nyStatusSak/finnesIkke.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertThrows<SakEllerOppgaveFinnesIkkeException> {
runBlocking {
arbeidsgiverNotifikasjonKlient.nyStatusSak(
id = "mock id",
status = SaksStatus.FERDIG,
statusTekst = "mock statusTekst",
nyLenkeTilSak = "mock nyLenke",
)
}
}
}

@Test
fun `Forventer gyldig respons fra nyStatusSakByGrupperingsid`() {
val response = "responses/nyStatusSakByGrupperingsid/gyldig.json".readResource()
Expand All @@ -68,6 +86,24 @@ class ArbeidsgiverNotifikasjonKlientTest {
}
}

@Test
fun `nyStatusSakByGrupperingsid - dersom sak ikke finnes så kastes egendefinert exception`() {
val response = "responses/nyStatusSakByGrupperingsid/finnesIkke.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertThrows<SakEllerOppgaveFinnesIkkeException> {
runBlocking {
arbeidsgiverNotifikasjonKlient.nyStatusSakByGrupperingsid(
grupperingsid = "mock grupperingsid",
merkelapp = "mock merkelapp",
status = SaksStatus.FERDIG,
statusTekst = "mock statustekst",
nyLenke = "mock nyLenke",
)
}
}
}

@Test
fun `Forventer gyldig respons fra opprettNyOppgave`() {
val response = "responses/nyOppgave/gyldig.json".readResource()
Expand Down Expand Up @@ -117,6 +153,34 @@ class ArbeidsgiverNotifikasjonKlientTest {
)
}

@Test
fun `Forventer gyldig respons fra oppgaveUtfoert`() {
val response = "responses/oppgaveUtfoert/gyldig.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertDoesNotThrow {
runBlocking {
arbeidsgiverNotifikasjonKlient.oppgaveUtfoert(
id = "mock id",
)
}
}
}

@Test
fun `oppgaveUtfoert - dersom sak ikke finnes så kastes egendefinert exception`() {
val response = "responses/oppgaveUtfoert/finnesIkke.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertThrows<SakEllerOppgaveFinnesIkkeException> {
runBlocking {
arbeidsgiverNotifikasjonKlient.oppgaveUtfoert(
id = "mock id",
)
}
}
}

@Test
fun `Forventer gyldig respons fra oppgaveUtfoertByEksternIdV2`() {
val response = "responses/oppgaveUtfoertByEksternIdV2/gyldig.json".readResource()
Expand All @@ -133,6 +197,22 @@ class ArbeidsgiverNotifikasjonKlientTest {
}
}

@Test
fun `oppgaveUtfoertByEksternIdV2 - dersom sak ikke finnes så kastes egendefinert exception`() {
val response = "responses/oppgaveUtfoertByEksternIdV2/finnesIkke.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertThrows<SakEllerOppgaveFinnesIkkeException> {
runBlocking {
arbeidsgiverNotifikasjonKlient.oppgaveUtfoertByEksternIdV2(
eksternId = "mock eksternId",
merkelapp = "mock merkelapp",
nyLenke = "mock nyLenke",
)
}
}
}

@Test
fun `Forventer gyldig respons fra softDeleteSak`() {
val response = "responses/softDeleteSak/gyldig.json".readResource()
Expand Down Expand Up @@ -164,11 +244,47 @@ class ArbeidsgiverNotifikasjonKlientTest {
}

@Test
fun `Forventer gyldig respons fra oppgaveUtgaattByEksternId`() {
fun `Forventer gyldig respons fra oppgaveUtgaatt)`() {
val response = "responses/oppgaveUtgaatt/gyldig.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertDoesNotThrow {
runBlocking {
arbeidsgiverNotifikasjonKlient.oppgaveUtgaatt("mock id")
}
}
}

@Test
fun `oppgaveUtgaatt - dersom sak ikke finnes så kastes egendefinert exception`() {
val response = "responses/oppgaveUtgaatt/finnesIkke.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertThrows<SakEllerOppgaveFinnesIkkeException> {
runBlocking {
arbeidsgiverNotifikasjonKlient.oppgaveUtgaatt("mock id")
}
}
}

@Test
fun `Forventer gyldig respons fra oppgaveUtgaattByEksternId`() {
val response = "responses/oppgaveUtgaattByEksternId/gyldig.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertDoesNotThrow {
runBlocking {
arbeidsgiverNotifikasjonKlient.oppgaveUtgaattByEksternId("Inntektsmelding sykepenger", "id")
}
}
}

@Test
fun `oppgaveUtgaattByEksternId - dersom sak ikke finnes så kastes egendefinert exception`() {
val response = "responses/oppgaveUtgaattByEksternId/finnesIkke.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertThrows<SakEllerOppgaveFinnesIkkeException> {
runBlocking {
arbeidsgiverNotifikasjonKlient.oppgaveUtgaattByEksternId("Inntektsmelding sykepenger", "id")
}
Expand All @@ -177,7 +293,7 @@ class ArbeidsgiverNotifikasjonKlientTest {

@Test
fun `UgyldigMerkelapp respons fra oppgaveUtgaattByEksternId`() {
val response = "responses/oppgaveUtgaatt/ugyldigMerkelapp.json".readResource()
val response = "responses/oppgaveUtgaattByEksternId/ugyldigMerkelapp.json".readResource()
val arbeidsgiverNotifikasjonKlient = mockArbeidsgiverNotifikasjonKlient(response)

assertFailsWith(
Expand Down
1 change: 1 addition & 0 deletions src/test/resources/responses/nyStatusSak/finnesIkke.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"data":{"nyStatusSak":{"__typename": "SakFinnesIkke","feilmelding": "uffda"}}}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"data":{"nyStatusSakByGrupperingsid":{"__typename": "SakFinnesIkke","feilmelding": "uffda"}}}
8 changes: 8 additions & 0 deletions src/test/resources/responses/oppgaveUtfoert/finnesIkke.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"data": {
"oppgaveUtfoert": {
"__typename": "NotifikasjonFinnesIkke",
"feilmelding": "uffda"
}
}
}
8 changes: 8 additions & 0 deletions src/test/resources/responses/oppgaveUtfoert/gyldig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"data": {
"oppgaveUtfoert": {
"__typename": "OppgaveUtfoertVellykket",
"id": "1"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"data": {
"oppgaveUtfoertByEksternId_V2": {
"__typename": "NotifikasjonFinnesIkke",
"feilmelding": "uffda"
}
}
}
8 changes: 8 additions & 0 deletions src/test/resources/responses/oppgaveUtgaatt/finnesIkke.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"data": {
"oppgaveUtgaatt": {
"__typename": "NotifikasjonFinnesIkke",
"feilmelding": "uffda"
}
}
}
2 changes: 1 addition & 1 deletion src/test/resources/responses/oppgaveUtgaatt/gyldig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"data": {
"oppgaveUtgaattByEksternId": {
"oppgaveUtgaatt": {
"__typename": "OppgaveUtgaattVellykket",
"id": "1"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"data": {
"oppgaveUtgaattByEksternId": {
"__typename": "NotifikasjonFinnesIkke",
"feilmelding": "uffda"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"data": {
"oppgaveUtgaattByEksternId": {
"__typename": "OppgaveUtgaattVellykket",
"id": "1"
}
}
}

0 comments on commit 5baf926

Please sign in to comment.