Skip to content

Commit 12f5d6b

Browse files
ArselanSultaniJMLindsethvskjefstnattaphongklinjan
committed
Legg til integrasjonsstest for henting av inntekt med inntektId
Co-authored-by: John Martin Lindseth <[email protected]> Co-authored-by: Vegard Skjefstad <[email protected]> Co-authored-by: Nattaphong Klinjan <[email protected]>
1 parent b568738 commit 12f5d6b

File tree

4 files changed

+223
-5
lines changed

4 files changed

+223
-5
lines changed

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,8 @@ fun InntektkomponentResponse.mapToFrontend(
2828
InntektMaaned(
2929
belop = inntekt.beloep,
3030
inntektskilde = inntekt.inntektskilde,
31-
// TODO: finn ut om inntekten er redigert
3231
redigert = false,
3332
begrunnelse = inntekt.beskrivelse.name,
34-
// TODO: er det det samme som InntektkomponentResponse.arbeidsInntektMaaned.aarMaaned?
3533
aarMaaned = arbeidsInntektMaaned.aarMaaned,
3634
fordel = inntekt.fordel,
3735
beskrivelse = inntekt.beskrivelse,
@@ -42,7 +40,6 @@ fun InntektkomponentResponse.mapToFrontend(
4240
opptjeningsland = inntekt.opptjeningsland,
4341
skattemessigBosattLand = inntekt.skattemessigBosattLand,
4442
inntektsinnsender = inntekt.inntektsinnsender,
45-
// TODO er dette alltid organisasjon eller kan dette være privatperson også? Kunne vi lagret org navn?
4643
virksomhet = inntekt.virksomhet,
4744
inntektsmottaker = inntekt.inntektsmottaker,
4845
inngaarIGrunnlagForTrekk = inntekt.inngaarIGrunnlagForTrekk,

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import no.nav.dagpenger.inntekt.db.Inntektparametre
2424
import no.nav.dagpenger.inntekt.db.ManueltRedigert
2525
import no.nav.dagpenger.inntekt.db.RegelKontekst
2626
import no.nav.dagpenger.inntekt.db.StoreInntektCommand
27+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
2728
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentRequest
2829
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektskomponentClient
2930
import no.nav.dagpenger.inntekt.mapping.GUIInntekt
@@ -153,7 +154,10 @@ fun Route.uklassifisertInntekt(
153154
enhetsregisterClient,
154155
it.inntekt.arbeidsInntektMaaned
155156
?.flatMap { it.arbeidsInntektInformasjon?.inntektListe.orEmpty() }
156-
?.mapNotNull { it.virksomhet?.identifikator }
157+
?.filter { inntekt ->
158+
inntekt.virksomhet?.aktoerType == AktoerType.ORGANISASJON &&
159+
(inntekt.opptjeningsland == "NO" || inntekt.opptjeningsland == null)
160+
}?.mapNotNull { it.virksomhet?.identifikator }
157161
?.toTypedArray()
158162
?.toList() ?: emptyList(),
159163
)
@@ -253,7 +257,7 @@ private suspend fun hentOrganisasjonNavn(
253257
}.onSuccess {
254258
val organisasjonsNavnOgIdMapping =
255259
OrganisasjonNavnOgIdMapping(
256-
organisasjonsnummer = it,
260+
organisasjonsnummer = orgNr,
257261
organisasjonNavn = it,
258262
)
259263
organisasjonNavnOgIdMappingListe.add(organisasjonsNavnOgIdMapping)

dp-inntekt-api/src/test/kotlin/no/nav/dagpenger/inntekt/v1/UklassifisertInntektRouteTest.kt

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import io.ktor.client.request.get
77
import io.ktor.client.statement.bodyAsText
88
import io.ktor.http.HttpMethod
99
import io.ktor.http.HttpStatusCode
10+
import io.mockk.coEvery
1011
import io.mockk.every
1112
import io.mockk.mockk
1213
import kotlinx.coroutines.runBlocking
@@ -19,6 +20,7 @@ import no.nav.dagpenger.inntekt.db.ManueltRedigert
1920
import no.nav.dagpenger.inntekt.db.RegelKontekst
2021
import no.nav.dagpenger.inntekt.db.StoreInntektCommand
2122
import no.nav.dagpenger.inntekt.db.StoredInntekt
23+
import no.nav.dagpenger.inntekt.db.StoredInntektMedFnr
2224
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Aktoer
2325
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
2426
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektBeskrivelse
@@ -31,8 +33,10 @@ import no.nav.dagpenger.inntekt.mapping.GUIArbeidsInntektMaaned
3133
import no.nav.dagpenger.inntekt.mapping.GUIInntekt
3234
import no.nav.dagpenger.inntekt.mapping.GUIInntektsKomponentResponse
3335
import no.nav.dagpenger.inntekt.mapping.InntektMedVerdikode
36+
import no.nav.dagpenger.inntekt.mapping.InntekterResponse
3437
import no.nav.dagpenger.inntekt.oppslag.Person
3538
import no.nav.dagpenger.inntekt.oppslag.PersonOppslag
39+
import no.nav.dagpenger.inntekt.oppslag.enhetsregister.EnhetsregisterClient
3640
import no.nav.dagpenger.inntekt.serder.jacksonObjectMapper
3741
import no.nav.dagpenger.inntekt.v1.TestApplication.autentisert
3842
import no.nav.dagpenger.inntekt.v1.TestApplication.mockInntektApi
@@ -446,4 +450,50 @@ internal class UklassifisertInntektRouteTest {
446450
assertEquals("application/json; charset=UTF-8", response.headers["Content-Type"])
447451
assertTrue(runCatching { jacksonObjectMapper.readValue<Set<String>>(response.bodyAsText()) }.isSuccess)
448452
}
453+
454+
@Test
455+
fun `Get request for uklassifisert inntekt with inntektID should return 200 ok`() {
456+
val enhetsregisterClientMock = mockk<EnhetsregisterClient>(relaxed = true)
457+
return withMockAuthServerAndTestApplication(
458+
mockInntektApi(
459+
inntektskomponentClient = inntektskomponentClientMock,
460+
inntektStore = inntektStoreMock,
461+
personOppslag = personOppslagMock,
462+
enhetsregisterClient = enhetsregisterClientMock,
463+
),
464+
) {
465+
coEvery { enhetsregisterClientMock.hentEnhet("1111111") } returns "Test Org"
466+
val body =
467+
UklassifisertInntektRouteTest::class.java
468+
.getResource("/test-data/example-inntekt-med-inntektId-payload.json")
469+
?.readText()
470+
every {
471+
inntektStoreMock.getInntektMedPersonFnr(inntektId)
472+
} returns
473+
StoredInntektMedFnr(
474+
inntektId,
475+
inntekt =
476+
jacksonObjectMapper.readValue(body!!),
477+
manueltRedigert = false,
478+
timestamp = LocalDateTime.now(),
479+
fødselsnummer = fødselsnummer,
480+
)
481+
482+
val response =
483+
autentisert(
484+
httpMethod = HttpMethod.Get,
485+
endepunkt = "$uklassifisertInntekt/${inntektId.id}",
486+
)
487+
488+
assertEquals(HttpStatusCode.OK, response.status)
489+
val storedInntekt =
490+
jacksonObjectMapper.readValue<InntekterResponse>(response.bodyAsText())
491+
assertEquals(2, storedInntekt.virksomhetsinntekt.size)
492+
assertEquals(4, storedInntekt.virksomhetsinntekt[0].inntekter?.size)
493+
assertEquals("1111111", storedInntekt.virksomhetsinntekt.first().virksomhetsnummer)
494+
assertEquals("Test Org", storedInntekt.virksomhetsinntekt.first().virksomhetsnavn)
495+
assertEquals("2222222", storedInntekt.virksomhetsinntekt[1].virksomhetsnummer)
496+
assertEquals("", storedInntekt.virksomhetsinntekt[1].virksomhetsnavn)
497+
}
498+
}
449499
}
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
{
2+
"arbeidsInntektMaaned": [
3+
{
4+
"aarMaaned": "2019-01",
5+
"arbeidsInntektInformasjon": {
6+
"inntektListe": [
7+
{
8+
"inntektType": "NAERINGSINNTEKT",
9+
"beloep": 250000,
10+
"fordel": "kontantytelse",
11+
"inntektskilde": "A-ordningen",
12+
"inntektsperiodetype": "Maaned",
13+
"inntektsstatus": "LoependeInnrapportert",
14+
"leveringstidspunkt": "2019-02",
15+
"utbetaltIMaaned": "2018-03",
16+
"opplysningspliktig": {
17+
"identifikator": "1111111",
18+
"aktoerType": "ORGANISASJON"
19+
},
20+
"virksomhet": {
21+
"identifikator": "1111111",
22+
"aktoerType": "ORGANISASJON"
23+
},
24+
"inntektsmottaker": {
25+
"identifikator": "99999999999",
26+
"aktoerType": "NATURLIG_IDENT"
27+
},
28+
"inngaarIGrunnlagForTrekk": true,
29+
"utloeserArbeidsgiveravgift": true,
30+
"informasjonsstatus": "InngaarAlltid",
31+
"beskrivelse": "lottKunTrygdeavgift"
32+
}
33+
]
34+
}
35+
},
36+
{
37+
"aarMaaned": "2018-03",
38+
"arbeidsInntektInformasjon": {
39+
"inntektListe": [
40+
{
41+
"inntektType": "NAERINGSINNTEKT",
42+
"beloep": 250000,
43+
"fordel": "kontantytelse",
44+
"inntektskilde": "A-ordningen",
45+
"inntektsperiodetype": "Maaned",
46+
"inntektsstatus": "LoependeInnrapportert",
47+
"leveringstidspunkt": "2019-02",
48+
"utbetaltIMaaned": "2018-03",
49+
"opplysningspliktig": {
50+
"identifikator": "1111111",
51+
"aktoerType": "ORGANISASJON"
52+
},
53+
"virksomhet": {
54+
"identifikator": "1111111",
55+
"aktoerType": "ORGANISASJON"
56+
},
57+
"inntektsmottaker": {
58+
"identifikator": "99999999999",
59+
"aktoerType": "NATURLIG_IDENT"
60+
},
61+
"inngaarIGrunnlagForTrekk": true,
62+
"utloeserArbeidsgiveravgift": true,
63+
"informasjonsstatus": "InngaarAlltid",
64+
"beskrivelse": "lottKunTrygdeavgift"
65+
}
66+
]
67+
}
68+
},
69+
{
70+
"aarMaaned": "2017-04",
71+
"arbeidsInntektInformasjon": {
72+
"inntektListe": [
73+
{
74+
"inntektType": "NAERINGSINNTEKT",
75+
"beloep": 250000,
76+
"fordel": "kontantytelse",
77+
"inntektskilde": "A-ordningen",
78+
"inntektsperiodetype": "Maaned",
79+
"inntektsstatus": "LoependeInnrapportert",
80+
"leveringstidspunkt": "2019-02",
81+
"utbetaltIMaaned": "2018-03",
82+
"opplysningspliktig": {
83+
"identifikator": "1111111",
84+
"aktoerType": "ORGANISASJON"
85+
},
86+
"virksomhet": {
87+
"identifikator": "1111111",
88+
"aktoerType": "ORGANISASJON"
89+
},
90+
"inntektsmottaker": {
91+
"identifikator": "99999999999",
92+
"aktoerType": "NATURLIG_IDENT"
93+
},
94+
"inngaarIGrunnlagForTrekk": true,
95+
"utloeserArbeidsgiveravgift": true,
96+
"informasjonsstatus": "InngaarAlltid",
97+
"beskrivelse": "lottKunTrygdeavgift"
98+
}
99+
]
100+
}
101+
},
102+
{
103+
"aarMaaned": "2017-12",
104+
"arbeidsInntektInformasjon": {
105+
"inntektListe": [
106+
{
107+
"inntektType": "NAERINGSINNTEKT",
108+
"beloep": 250000,
109+
"fordel": "kontantytelse",
110+
"inntektskilde": "A-ordningen",
111+
"inntektsperiodetype": "Maaned",
112+
"inntektsstatus": "LoependeInnrapportert",
113+
"leveringstidspunkt": "2019-02",
114+
"utbetaltIMaaned": "2018-03",
115+
"opplysningspliktig": {
116+
"identifikator": "1111111",
117+
"aktoerType": "ORGANISASJON"
118+
},
119+
"virksomhet": {
120+
"identifikator": "1111111",
121+
"aktoerType": "ORGANISASJON"
122+
},
123+
"inntektsmottaker": {
124+
"identifikator": "99999999999",
125+
"aktoerType": "NATURLIG_IDENT"
126+
},
127+
"inngaarIGrunnlagForTrekk": true,
128+
"utloeserArbeidsgiveravgift": true,
129+
"informasjonsstatus": "InngaarAlltid",
130+
"beskrivelse": "lottKunTrygdeavgift"
131+
},
132+
{
133+
"inntektType": "NAERINGSINNTEKT",
134+
"beloep": 250000,
135+
"fordel": "kontantytelse",
136+
"inntektskilde": "A-ordningen",
137+
"inntektsperiodetype": "Maaned",
138+
"inntektsstatus": "LoependeInnrapportert",
139+
"leveringstidspunkt": "2019-02",
140+
"utbetaltIMaaned": "2018-03",
141+
"opptjeningsland": "SE",
142+
"opplysningspliktig": {
143+
"identifikator": "2222222",
144+
"aktoerType": "ORGANISASJON"
145+
},
146+
"virksomhet": {
147+
"identifikator": "2222222",
148+
"aktoerType": "ORGANISASJON"
149+
},
150+
"inntektsmottaker": {
151+
"identifikator": "-1",
152+
"aktoerType": "NATURLIG_IDENT"
153+
},
154+
"inngaarIGrunnlagForTrekk": true,
155+
"utloeserArbeidsgiveravgift": true,
156+
"informasjonsstatus": "InngaarAlltid",
157+
"beskrivelse": "lottKunTrygdeavgift"
158+
}
159+
]
160+
}
161+
}
162+
],
163+
"ident": {
164+
"identifikator": "-1",
165+
"aktoerType": "NATURLIG_IDENT"
166+
}
167+
}

0 commit comments

Comments
 (0)