Skip to content

Commit 8a4b97a

Browse files
androatonjemjovikrichardmartinsenMort12Lander
committed
Lag ett nytt endepunkt for å sjekke om det finnes inntekt på en bestemt måned
Co-authored-by: Tonje Mjøvik Myran <[email protected]> Co-authored-by: Richard Andre Martinsen <[email protected]> Co-authored-by: Morten Tholander <[email protected]>
1 parent 2de55f7 commit 8a4b97a

File tree

3 files changed

+83
-5
lines changed

3 files changed

+83
-5
lines changed

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/InntektApi.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ internal fun Application.inntektApi(
240240
}
241241
authenticate("azure") {
242242
route("/v3/inntekt") {
243-
inntektV3(behandlingsInntektsGetter, personOppslag, inntektStore)
243+
inntektV3(behandlingsInntektsGetter, personOppslag, inntektStore, inntektskomponentHttpClient)
244244
}
245245
}
246246
naischecks(healthChecks, meterRegistry)

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/api/v3/KlassifisertInntektRouteV3.kt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,29 @@ import io.ktor.server.routing.post
99
import io.ktor.server.routing.route
1010
import kotlinx.coroutines.Dispatchers.IO
1111
import kotlinx.coroutines.withContext
12+
import mu.KotlinLogging
13+
import mu.withLoggingContext
1214
import no.nav.dagpenger.inntekt.BehandlingsInntektsGetter
1315
import no.nav.dagpenger.inntekt.db.InntektId
1416
import no.nav.dagpenger.inntekt.db.InntektStore
1517
import no.nav.dagpenger.inntekt.db.Inntektparametre
1618
import no.nav.dagpenger.inntekt.db.ManueltRedigert
1719
import no.nav.dagpenger.inntekt.db.RegelKontekst
20+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentRequest
21+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektskomponentClient
1822
import no.nav.dagpenger.inntekt.oppslag.PersonOppslag
1923
import no.nav.dagpenger.inntekt.v1.Inntekt
2024
import no.nav.dagpenger.inntekt.v1.KlassifisertInntektMåned
2125
import java.time.LocalDate
2226
import java.time.YearMonth
2327

28+
private val logger = KotlinLogging.logger {}
29+
2430
fun Route.inntektV3(
2531
behandlingsInntektsGetter: BehandlingsInntektsGetter,
2632
personOppslag: PersonOppslag,
2733
inntektStore: InntektStore,
34+
inntektskomponentClient: InntektskomponentClient,
2835
) {
2936
route("/klassifisert") {
3037
post {
@@ -55,6 +62,33 @@ fun Route.inntektV3(
5562
}
5663
}
5764
}
65+
66+
route("/harInntekt") {
67+
post {
68+
withLoggingContext("callId" to call.callId) {
69+
withContext(IO) {
70+
val dto = call.receive<HarInntektRequestDto>()
71+
val person = personOppslag.hentPerson(dto.ident)
72+
73+
val inntekt =
74+
inntektskomponentClient.getInntekt(
75+
InntektkomponentRequest(
76+
aktørId = person.aktørId,
77+
fødselsnummer = person.fødselsnummer,
78+
månedFom = dto.måned,
79+
månedTom = dto.måned,
80+
),
81+
)
82+
83+
val harInntekt: Boolean = inntekt.arbeidsInntektMaaned?.isNotEmpty() == true
84+
85+
logger.info { "harInntekt=$harInntekt for ${dto.måned}" }
86+
87+
call.respond(HttpStatusCode.OK, harInntekt)
88+
}
89+
}
90+
}
91+
}
5892
}
5993

6094
data class KlassifisertInntektRequestDto(
@@ -73,6 +107,11 @@ data class KlassifisertInntektResponseDto(
73107
val sisteAvsluttendeKalenderMåned: YearMonth,
74108
)
75109

110+
data class HarInntektRequestDto(
111+
val ident: String,
112+
valned: YearMonth,
113+
)
114+
76115
private fun mapToKlassifisertInntektResponseDto(
77116
inntekt: Inntekt,
78117
manueltRedigert: ManueltRedigert?,

dp-inntekt-api/src/test/kotlin/no/nav/dagpenger/inntekt/api/v3/KlassifisertInntektRouteV3Test.kt

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,18 @@ import no.nav.dagpenger.inntekt.db.InntektStore
1818
import no.nav.dagpenger.inntekt.db.Inntektparametre
1919
import no.nav.dagpenger.inntekt.db.ManueltRedigert
2020
import no.nav.dagpenger.inntekt.db.RegelKontekst
21+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Aktoer
22+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
23+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektMaaned
24+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
25+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektskomponentClient
2126
import no.nav.dagpenger.inntekt.oppslag.Person
2227
import no.nav.dagpenger.inntekt.oppslag.PersonOppslag
2328
import no.nav.dagpenger.inntekt.serder.jacksonObjectMapper
2429
import no.nav.dagpenger.inntekt.v1.Inntekt
2530
import no.nav.dagpenger.inntekt.v1.KlassifisertInntektMåned
2631
import java.time.LocalDate
2732
import java.time.YearMonth
28-
import java.time.YearMonth.now
2933
import kotlin.test.Test
3034

3135
class KlassifisertInntektRouteV3Test {
@@ -40,7 +44,7 @@ class KlassifisertInntektRouteV3Test {
4044
private val periodeFraOgMed = YearMonth.of(2017, 1)!!
4145
private val periodeTilOgMed = YearMonth.of(2018, 12)!!
4246
private val inntektsId = ULID().nextULID()
43-
private val sisteAvsluttendeKalenderMåned = now()
47+
private val sisteAvsluttendeKalenderMåned = YearMonth.now()
4448

4549
init {
4650
coEvery {
@@ -187,11 +191,46 @@ class KlassifisertInntektRouteV3Test {
187191
}
188192
}
189193

194+
@Test
195+
fun `harInntekt-endepunktet returnerer true når det finnes inntekt`() {
196+
val inntektskomponent = mockk<InntektskomponentClient>()
197+
198+
coEvery {
199+
inntektskomponent.getInntekt(request = any())
200+
} returns
201+
InntektkomponentResponse(
202+
listOf(ArbeidsInntektMaaned(YearMonth.now(), null, null)),
203+
Aktoer(AktoerType.NATURLIG_IDENT, fødselsnummer),
204+
)
205+
206+
withMockAuthServerAndTestApplication(
207+
mockInntektApi(
208+
personOppslag = personOppslagMock,
209+
inntektskomponentClient = inntektskomponent,
210+
),
211+
) {
212+
val response =
213+
autentisert(
214+
httpMethod = HttpMethod.Post,
215+
endepunkt = "/v3/inntekt/harInntekt",
216+
body =
217+
jacksonObjectMapper.writeValueAsString(
218+
HarInntektRequestDto(fødselsnummer, sisteAvsluttendeKalenderMåned),
219+
),
220+
)
221+
222+
response.status shouldBe OK
223+
val inntekt = jacksonObjectMapper.readValue<Boolean>(response.bodyAsText())
224+
225+
inntekt shouldBe true
226+
}
227+
}
228+
190229
private fun createInntekt(manueltRedigert: Boolean): Inntekt =
191230
Inntekt(
192231
inntektsId,
193-
listOf(KlassifisertInntektMåned(now(), listOf())),
232+
listOf(KlassifisertInntektMåned(YearMonth.now(), listOf())),
194233
manueltRedigert,
195-
now(),
234+
YearMonth.now(),
196235
)
197236
}

0 commit comments

Comments
 (0)