Skip to content

Commit

Permalink
Fjern overflødige felt fra refusjon (#311)
Browse files Browse the repository at this point in the history
  • Loading branch information
bjerga authored Oct 10, 2023
1 parent 5429c31 commit 37c2002
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import io.ktor.server.routing.route
import kotlinx.serialization.builtins.serializer
import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.FullLonnIArbeidsgiverPerioden
import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.InnsendingRequest
import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Refusjon
import no.nav.helsearbeidsgiver.felles.json.Jackson
import no.nav.helsearbeidsgiver.inntektsmelding.api.RedisPollerTimeoutException
import no.nav.helsearbeidsgiver.inntektsmelding.api.Routes
Expand Down Expand Up @@ -42,20 +43,36 @@ fun RouteExtra.innsendingRoute() {

if (forespoerselId != null) {
try {
val request = Jackson.fromJson<InnsendingRequest>(call.receiveText()).let {
// TODO gjør denne sjekken ved opprettelse
if (it.fullLønnIArbeidsgiverPerioden?.utbetalerFullLønn == true) {
it.copy(
fullLønnIArbeidsgiverPerioden = FullLonnIArbeidsgiverPerioden(
utbetalerFullLønn = true,
begrunnelse = null,
utbetalt = null
val request = Jackson.fromJson<InnsendingRequest>(call.receiveText())
.let {
// TODO gjør denne sjekken ved opprettelse
if (it.fullLønnIArbeidsgiverPerioden?.utbetalerFullLønn == true) {
it.copy(
fullLønnIArbeidsgiverPerioden = FullLonnIArbeidsgiverPerioden(
utbetalerFullLønn = true,
begrunnelse = null,
utbetalt = null
)
)
)
} else {
it
} else {
it
}
}
.let {
// TODO gjør denne sjekken ved opprettelse
if (!it.refusjon.utbetalerHeleEllerDeler) {
it.copy(
refusjon = Refusjon(
utbetalerHeleEllerDeler = false,
refusjonPrMnd = null,
refusjonOpphører = null,
refusjonEndringer = null
)
)
} else {
it
}
}
}

"Mottok innsending med forespørselId: $forespoerselId".let {
logger.info(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,19 @@

package no.nav.helsearbeidsgiver.inntektsmelding.api.innsending

import io.kotest.matchers.shouldBe
import io.ktor.client.statement.bodyAsText
import io.ktor.http.HttpStatusCode
import io.mockk.clearAllMocks
import io.mockk.coEvery
import io.mockk.every
import io.mockk.verifySequence
import kotlinx.serialization.json.JsonNull
import no.nav.helsearbeidsgiver.felles.Tilgang
import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.BegrunnelseIngenEllerRedusertUtbetalingKode
import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.FullLonnIArbeidsgiverPerioden
import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.Refusjon
import no.nav.helsearbeidsgiver.felles.inntektsmelding.felles.models.RefusjonEndring
import no.nav.helsearbeidsgiver.felles.json.Jackson
import no.nav.helsearbeidsgiver.felles.test.mock.DELVIS_INNSENDING_REQUEST
import no.nav.helsearbeidsgiver.felles.test.mock.GYLDIG_INNSENDING_REQUEST
Expand All @@ -23,6 +30,8 @@ import no.nav.helsearbeidsgiver.utils.json.fromJson
import no.nav.helsearbeidsgiver.utils.json.parseJson
import no.nav.helsearbeidsgiver.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.json.toJsonStr
import no.nav.helsearbeidsgiver.utils.test.date.april
import no.nav.helsearbeidsgiver.utils.test.date.mars
import no.nav.helsearbeidsgiver.utils.test.mock.mockConstructor
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.BeforeEach
Expand Down Expand Up @@ -117,6 +126,91 @@ class InnsendingRouteKtTest : ApiTest() {
assertEquals(InnsendingResponse(Mock.forespoerselId).toJsonStr(InnsendingResponse.serializer()), response.bodyAsText())
}

@Test
fun `fjern ugyldige verdier ved utbetaling av full lønn i arbeisdgiverperioden`() = testApi {
mockTilgang(Tilgang.HAR_TILGANG)

val mockClientId = UUID.randomUUID()

// Må bare returnere noe
coEvery { anyConstructed<RedisPoller>().hent(mockClientId, any(), any()) } returns JsonNull

val request = GYLDIG_INNSENDING_REQUEST.copy(
fullLønnIArbeidsgiverPerioden = FullLonnIArbeidsgiverPerioden(
utbetalerFullLønn = true,
begrunnelse = BegrunnelseIngenEllerRedusertUtbetalingKode.STREIK_ELLER_LOCKOUT,
utbetalt = 1_000_000.0.toBigDecimal()
)
)
.let(Jackson::toJson).parseJson()

mockConstructor(InnsendingProducer::class) {
every { anyConstructed<InnsendingProducer>().publish(any(), any(), any()) } returns mockClientId

post(path, request)

verifySequence {
anyConstructed<InnsendingProducer>().publish(
forespoerselId = any(),
request = withArg {
it.fullLønnIArbeidsgiverPerioden shouldBe FullLonnIArbeidsgiverPerioden(
utbetalerFullLønn = true,
begrunnelse = null,
utbetalt = null
)
},
arbeidsgiverFnr = any()
)
}
}
}

@Test
fun `fjern ugyldige verdier ved ingen refusjon`() = testApi {
mockTilgang(Tilgang.HAR_TILGANG)

val mockClientId = UUID.randomUUID()

// Må bare returnere noe
coEvery { anyConstructed<RedisPoller>().hent(mockClientId, any(), any()) } returns JsonNull

val request = GYLDIG_INNSENDING_REQUEST.copy(
refusjon = Refusjon(
utbetalerHeleEllerDeler = false,
refusjonPrMnd = 2_222_222.0.toBigDecimal(),
refusjonOpphører = 28.april,
refusjonEndringer = listOf(
RefusjonEndring(
beløp = 1_111_111.0.toBigDecimal(),
dato = 20.mars
)
)
)
)
.let(Jackson::toJson).parseJson()

mockConstructor(InnsendingProducer::class) {
every { anyConstructed<InnsendingProducer>().publish(any(), any(), any()) } returns mockClientId

post(path, request)

verifySequence {
anyConstructed<InnsendingProducer>().publish(
forespoerselId = any(),
request = withArg {
it.refusjon shouldBe Refusjon(
utbetalerHeleEllerDeler = false,
refusjonPrMnd = null,
refusjonOpphører = null,
refusjonEndringer = null
)
},
arbeidsgiverFnr = any()
)
}
}
}

private object Mock {
val forespoerselId: UUID = UUID.randomUUID()
}
Expand Down

0 comments on commit 37c2002

Please sign in to comment.