Skip to content

Commit 83132e8

Browse files
authoredDec 5, 2024··
Merge pull request #333 from nl-portal/feature/fix-gemachtigde-lastname
fix for officialLastName also for 'gemachtigde'
2 parents 81f95fd + 4a7c42e commit 83132e8

File tree

13 files changed

+121
-104
lines changed

13 files changed

+121
-104
lines changed
 

‎gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ dokkaVersion=1.9.20
1414

1515
org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=2048m
1616
org.gradle.workers.max=10
17-
version=1.4.31-SNAPSHOT
17+
version=1.4.32-SNAPSHOT

‎haalcentraal/haalcentraal-all/src/main/kotlin/nl/nlportal/haalcentraal/all/graphql/Gemachtigde.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
*/
1616
package nl.nlportal.haalcentraal.all.graphql
1717

18-
import nl.nlportal.haalcentraal.brp.domain.persoon.PersoonNaam
18+
import nl.nlportal.haalcentraal.brp.domain.persoon.Persoon
1919
import nl.nlportal.haalcentraal.hr.domain.MaatschappelijkeActiviteit
2020

2121
class Gemachtigde(
22-
val persoon: PersoonNaam?,
22+
val persoon: Persoon?,
2323
val bedrijf: MaatschappelijkeActiviteit?,
2424
)

‎haalcentraal/haalcentraal-all/src/test/kotlin/nl/nlportal/haalcentraal/all/TestHelper.kt

+15
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,16 @@
1515
*/
1616
package nl.nlportal.haalcentraal.all
1717

18+
import mu.KotlinLogging
1819
import okhttp3.mockwebserver.MockResponse
20+
import org.springframework.test.web.reactive.server.WebTestClient
21+
import java.util.function.Consumer
1922

2023
object TestHelper {
24+
val ERRORS_JSON_PATH = "$.errors"
25+
val EXTENSIONS_JSON_PATH = "$.extensions"
26+
private val logger = KotlinLogging.logger {}
27+
2128
fun mockResponseFromFile(fileName: String): MockResponse {
2229
return MockResponse()
2330
.addHeader("Content-Type", "application/json; charset=utf-8")
@@ -26,4 +33,12 @@ object TestHelper {
2633
}
2734

2835
private fun readFileAsString(fileName: String): String = this::class.java.getResource(fileName).readText(Charsets.UTF_8)
36+
37+
fun WebTestClient.ResponseSpec.verifyOnlyDataExists(basePath: String): WebTestClient.BodyContentSpec {
38+
return this.expectBody()
39+
.consumeWith(Consumer { t -> logger.info { t } })
40+
.jsonPath(basePath).exists()
41+
.jsonPath(TestHelper.ERRORS_JSON_PATH).doesNotExist()
42+
.jsonPath(TestHelper.EXTENSIONS_JSON_PATH).doesNotExist()
43+
}
2944
}

‎haalcentraal/haalcentraal-all/src/test/kotlin/nl/nlportal/haalcentraal/all/graphql/GemachtigdeQueryIT.kt

+23-17
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package nl.nlportal.haalcentraal.all.graphql
1717

1818
import nl.nlportal.commonground.authentication.WithBurgerUser
1919
import nl.nlportal.haalcentraal.all.TestHelper
20+
import nl.nlportal.haalcentraal.all.TestHelper.verifyOnlyDataExists
2021
import nl.nlportal.haalcentraal.client.HaalCentraalClientConfig
2122
import nl.nlportal.haalcentraal.hr.client.HaalCentraalHrClientConfig
2223
import okhttp3.mockwebserver.Dispatcher
@@ -66,11 +67,16 @@ internal class GemachtigdeQueryIT(
6667
query {
6768
getGemachtigde {
6869
persoon {
69-
aanhef,
70-
voorletters,
71-
voornamen,
72-
voorvoegsel,
73-
geslachtsnaam
70+
naam {
71+
aanhef,
72+
voorletters,
73+
voornamen,
74+
voorvoegsel,
75+
geslachtsnaam,
76+
lastName,
77+
aanduidingNaamgebruik,
78+
officialLastName,
79+
}
7480
},
7581
bedrijf {
7682
naam
@@ -88,13 +94,11 @@ internal class GemachtigdeQueryIT(
8894
.bodyValue(query)
8995
.exchange()
9096
.expectStatus().isOk
91-
.expectBody()
92-
.jsonPath(basePath).exists()
93-
.jsonPath("$basePath.persoon.aanhef").isEqualTo("Geachte mevrouw Kooyman")
94-
.jsonPath("$basePath.persoon.voorletters").isEqualTo("M.")
95-
.jsonPath("$basePath.persoon.voornamen").isEqualTo("Merel")
96-
.jsonPath("$basePath.persoon.voorvoegsel").isEqualTo("de")
97-
.jsonPath("$basePath.persoon.geslachtsnaam").isEqualTo("Kooyman")
97+
.verifyOnlyDataExists(basePath)
98+
.jsonPath("$basePath.persoon.naam.voorletters").isEqualTo("M.")
99+
.jsonPath("$basePath.persoon.naam.voornamen").isEqualTo("Merel")
100+
.jsonPath("$basePath.persoon.naam.voorvoegsel").isEqualTo("de")
101+
.jsonPath("$basePath.persoon.naam.geslachtsnaam").isEqualTo("Kooyman")
98102
.jsonPath("$basePath.bedrijf.naam").doesNotExist()
99103
}
100104

@@ -106,11 +110,13 @@ internal class GemachtigdeQueryIT(
106110
query {
107111
getGemachtigde {
108112
persoon {
109-
aanhef,
110-
voorletters,
111-
voornamen,
112-
voorvoegsel,
113-
geslachtsnaam
113+
naam {
114+
aanhef,
115+
voorletters,
116+
voornamen,
117+
voorvoegsel,
118+
geslachtsnaam
119+
}
114120
},
115121
bedrijf {
116122
naam

‎haalcentraal/haalcentraal-all/src/test/kotlin/nl/nlportal/haalcentraal/all/graphql/GemachtigdeQueryTest.kt

+20-17
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import nl.nlportal.haalcentraal.hr.domain.MaterieleRegistratie
2323
import nl.nlportal.commonground.authentication.CommonGroundAuthentication
2424
import nl.nlportal.graphql.security.SecurityConstants.AUTHENTICATION_KEY
2525
import nl.nlportal.haalcentraal.brp.domain.persoon.AanduidingNaamGebruik
26+
import nl.nlportal.haalcentraal.brp.domain.persoon.Persoon
2627
import nl.nlportal.haalcentraal.brp.domain.persoon.PersoonNaam
2728
import nl.nlportal.haalcentraal.brp.service.HaalCentraalBrpService
2829
import nl.nlportal.haalcentraal.hr.domain.MaatschappelijkeActiviteit
@@ -54,35 +55,37 @@ internal class GemachtigdeQueryTest {
5455
fun `getGemachtigde should call service`() =
5556
runTest {
5657
whenever(haalCentraalBrpService.getGemachtigde(authentication)).thenReturn(
57-
PersoonNaam(
58-
"test",
59-
"test",
60-
"test",
61-
"test",
62-
"test",
63-
AanduidingNaamGebruik.EIGEN,
58+
Persoon(
59+
burgerservicenummer = "0123456789",
60+
naam =
61+
PersoonNaam(
62+
aanhef = "test",
63+
voornamen = "John",
64+
geslachtsnaam = "Doe",
65+
aanduidingNaamgebruik = AanduidingNaamGebruik.EIGEN,
66+
),
6467
),
6568
)
6669
whenever(handelsregisterService.getGemachtigde(authentication)).thenReturn(
6770
MaatschappelijkeActiviteit(
6871
naam = "Test bedrijf",
69-
"90012768",
70-
"test",
71-
"20230101",
72-
MaterieleRegistratie("20020202"),
73-
1,
74-
"Test bedrijf",
75-
listOf(),
76-
listOf(),
77-
null,
72+
kvkNummer = "90012768",
73+
indNonMailing = "test",
74+
formeleRegistratiedatum = "20230101",
75+
materieleRegistratie = MaterieleRegistratie("20020202"),
76+
totaalWerkzamePersonen = 1,
77+
statutaireNaam = "Test bedrijf",
78+
handelsnamen = listOf(),
79+
sbiActiviteiten = listOf(),
80+
embedded = null,
7881
),
7982
)
8083

8184
val gemachtigde = query.getGemachtigde(environment)
8285
verify(haalCentraalBrpService).getGemachtigde(authentication)
8386
verify(handelsregisterService).getGemachtigde(authentication)
8487

85-
assertEquals("test", gemachtigde.persoon?.aanhef)
88+
assertEquals("test", gemachtigde.persoon?.naam?.aanhef)
8689
assertEquals("Test bedrijf", gemachtigde.bedrijf?.naam)
8790
}
8891
}

‎haalcentraal/haalcentraal-brp/src/main/kotlin/nl/nlportal/haalcentraal/brp/client/HaalCentraalBrpClient.kt

+1-22
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package nl.nlportal.haalcentraal.brp.client
1818
import nl.nlportal.haalcentraal.brp.domain.BewoningenApiRequest
1919
import nl.nlportal.haalcentraal.brp.domain.bewoning.Bewoning
2020
import nl.nlportal.haalcentraal.brp.domain.persoon.Persoon
21-
import nl.nlportal.haalcentraal.brp.domain.persoon.PersoonNaam
2221
import nl.nlportal.haalcentraal.client.HaalCentraalClientProvider
2322
import org.springframework.http.MediaType
2423
import org.springframework.security.core.Authentication
@@ -30,7 +29,7 @@ class HaalCentraalBrpClient(
3029
suspend fun getPersoon(
3130
bsn: String,
3231
authentication: Authentication,
33-
): Persoon {
32+
): Persoon? {
3433
return haalCentraalClientProvider.webClient(authentication)
3534
.get()
3635
.uri {
@@ -39,27 +38,7 @@ class HaalCentraalBrpClient(
3938
uriBuilder.build()
4039
}
4140
.retrieve()
42-
.awaitBody()
43-
}
44-
45-
suspend fun getPersoonNaam(
46-
bsn: String,
47-
authentication: Authentication,
48-
): PersoonNaam? {
49-
return haalCentraalClientProvider.webClient(authentication)
50-
.get()
51-
.uri {
52-
val uriBuilder =
53-
it.path("/brp/ingeschrevenpersonen/$bsn")
54-
.queryParam(
55-
"fields",
56-
"naam",
57-
)
58-
uriBuilder.build()
59-
}
60-
.retrieve()
6141
.awaitBody<Persoon>()
62-
.naam
6342
}
6443

6544
suspend fun getBewoningen(

‎haalcentraal/haalcentraal-brp/src/main/kotlin/nl/nlportal/haalcentraal/brp/domain/persoon/Persoon.kt

-21
Original file line numberDiff line numberDiff line change
@@ -45,25 +45,4 @@ data class Persoon(
4545
haalCentraalBrpService.getBewonersAantal(dfe.graphQlContext[AUTHENTICATION_KEY], it)
4646
}
4747
}
48-
49-
fun officialLastName(): String {
50-
if (naam.aanduidingNaamgebruik == null) {
51-
return naam.lastName()
52-
}
53-
val lastNamePartner = partners?.firstOrNull { it.naam != null }?.naam?.lastName() ?: ""
54-
return when (naam.aanduidingNaamgebruik) {
55-
AanduidingNaamGebruik.PARTNER -> {
56-
lastNamePartner
57-
}
58-
AanduidingNaamGebruik.PARTNER_EIGEN -> {
59-
"$lastNamePartner - ${naam.lastName()}"
60-
}
61-
AanduidingNaamGebruik.EIGEN_PARTNER -> {
62-
"${naam.lastName()} - $lastNamePartner"
63-
}
64-
else -> {
65-
naam.lastName()
66-
}
67-
}
68-
}
6948
}

‎haalcentraal/haalcentraal-brp/src/main/kotlin/nl/nlportal/haalcentraal/brp/domain/persoon/PersoonNaam.kt

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ data class PersoonNaam(
2424
val voorvoegsel: String? = null,
2525
val geslachtsnaam: String? = null,
2626
val aanduidingNaamgebruik: AanduidingNaamGebruik?,
27+
var officialLastName: String? = null,
2728
) {
2829
fun lastName(): String {
2930
return if (voorvoegsel != null && geslachtsnaam != null) {

‎haalcentraal/haalcentraal-brp/src/main/kotlin/nl/nlportal/haalcentraal/brp/service/HaalCentraalBrpService.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package nl.nlportal.haalcentraal.brp.service
1818
import nl.nlportal.commonground.authentication.CommonGroundAuthentication
1919
import nl.nlportal.haalcentraal.brp.domain.bewoning.Bewoning
2020
import nl.nlportal.haalcentraal.brp.domain.persoon.Persoon
21-
import nl.nlportal.haalcentraal.brp.domain.persoon.PersoonNaam
2221

2322
interface HaalCentraalBrpService {
2423
suspend fun getPersoon(authentication: CommonGroundAuthentication): Persoon?
@@ -33,5 +32,5 @@ interface HaalCentraalBrpService {
3332
adresseerbaarObjectIdentificatie: String,
3433
): Int?
3534

36-
suspend fun getGemachtigde(authentication: CommonGroundAuthentication): PersoonNaam?
35+
suspend fun getGemachtigde(authentication: CommonGroundAuthentication): Persoon?
3736
}

‎haalcentraal/haalcentraal-brp/src/main/kotlin/nl/nlportal/haalcentraal/brp/service/impl/HaalCentraalBrpServiceImpl.kt

+29-4
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import nl.nlportal.commonground.authentication.CommonGroundAuthentication
2121
import nl.nlportal.haalcentraal.brp.client.HaalCentraalBrpClient
2222
import nl.nlportal.haalcentraal.brp.domain.BewoningenApiRequest
2323
import nl.nlportal.haalcentraal.brp.domain.bewoning.Bewoning
24+
import nl.nlportal.haalcentraal.brp.domain.persoon.AanduidingNaamGebruik
2425
import nl.nlportal.haalcentraal.brp.domain.persoon.Persoon
25-
import nl.nlportal.haalcentraal.brp.domain.persoon.PersoonNaam
2626
import nl.nlportal.haalcentraal.brp.service.HaalCentraalBrpService
2727
import java.time.LocalDate
2828
import java.time.format.DateTimeFormatter
@@ -32,7 +32,9 @@ class HaalCentraalBrpServiceImpl(
3232
) : HaalCentraalBrpService {
3333
override suspend fun getPersoon(authentication: CommonGroundAuthentication): Persoon? {
3434
return if (authentication is BurgerAuthentication) {
35-
haalCentraalBrpClient.getPersoon(authentication.getBsn(), authentication)
35+
haalCentraalBrpClient.getPersoon(authentication.getBsn(), authentication)?.apply {
36+
naam.officialLastName = determineOfficialLastName(this)
37+
}
3638
} else {
3739
null
3840
}
@@ -72,11 +74,34 @@ class HaalCentraalBrpServiceImpl(
7274
return null
7375
}
7476

75-
override suspend fun getGemachtigde(authentication: CommonGroundAuthentication): PersoonNaam? {
77+
override suspend fun getGemachtigde(authentication: CommonGroundAuthentication): Persoon? {
7678
val authenticationGemachtigde = authentication.getGemachtigde()
7779

7880
return authenticationGemachtigde?.bsn?.let {
79-
haalCentraalBrpClient.getPersoonNaam(it, authentication)
81+
haalCentraalBrpClient.getPersoon(it, authentication)?.apply {
82+
naam.officialLastName = determineOfficialLastName(this)
83+
}
84+
}
85+
}
86+
87+
private fun determineOfficialLastName(persoon: Persoon): String {
88+
if (persoon.naam.aanduidingNaamgebruik == null) {
89+
return persoon.naam.lastName()
90+
}
91+
val lastNamePartner = persoon.partners?.firstOrNull { it.naam != null }?.naam?.lastName() ?: ""
92+
return when (persoon.naam.aanduidingNaamgebruik) {
93+
AanduidingNaamGebruik.PARTNER -> {
94+
lastNamePartner
95+
}
96+
AanduidingNaamGebruik.PARTNER_EIGEN -> {
97+
"$lastNamePartner - ${persoon.naam.lastName()}"
98+
}
99+
AanduidingNaamGebruik.EIGEN_PARTNER -> {
100+
"${persoon.naam.lastName()} - $lastNamePartner"
101+
}
102+
else -> {
103+
persoon.naam.lastName()
104+
}
80105
}
81106
}
82107

‎haalcentraal/haalcentraal-brp/src/test/kotlin/nl/nlportal/haalcentraal/brp/graphql/PersoonQueryIT.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ internal class PersoonQueryIT(
7373
geslachtsnaam,
7474
lastName,
7575
aanduidingNaamgebruik,
76-
},
77-
officialLastName
76+
officialLastName
77+
}
7878
}
7979
}
8080
""".trimIndent()

‎haalcentraal/haalcentraal-brp/src/test/kotlin/nl/nlportal/haalcentraal/brp/impl/HaalCentraalBrpServiceTest.kt

+25-15
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class HaalCentraalBrpServiceTest {
6262

6363
val persoon = haalCentraalBrpServiceImpl.getPersoon(authentication)!!
6464

65-
assertEquals("Achternaam", persoon.naam?.geslachtsnaam)
65+
assertEquals("Achternaam", persoon.naam.geslachtsnaam)
6666

6767
verify(haalCentraalBrpClient).getPersoon("123", authentication)
6868
}
@@ -77,29 +77,39 @@ class HaalCentraalBrpServiceTest {
7777
}
7878

7979
@Test
80-
fun `getGemachtigde calls client and gets PersoonNaam`() =
80+
fun `getGemachtigde calls client and gets Persoon`() =
8181
runTest {
8282
val authentication =
8383
JwtBuilder()
8484
.aanvragerBsn("123")
8585
.gemachtigdeBsn("456")
8686
.buildBurgerAuthentication()
87-
whenever(haalCentraalBrpClient.getPersoonNaam("456", authentication)).thenReturn(
88-
PersoonNaam(
89-
"Aanhef",
90-
"Voornaam",
91-
"V.",
92-
"van",
93-
"Achternaam",
94-
AanduidingNaamGebruik.EIGEN,
87+
whenever(haalCentraalBrpClient.getPersoon("456", authentication)).thenReturn(
88+
Persoon(
89+
"456",
90+
"geslacht",
91+
false,
92+
PersoonNaam(
93+
"Aanhef",
94+
"Voornaam",
95+
"V.",
96+
"van",
97+
"Achternaam",
98+
AanduidingNaamGebruik.EIGEN,
99+
),
100+
null,
101+
null,
102+
null,
103+
null,
104+
null,
95105
),
96106
)
97107

98-
val persoonNaam = haalCentraalBrpServiceImpl.getGemachtigde(authentication)!!
108+
val persoon = haalCentraalBrpServiceImpl.getGemachtigde(authentication)!!
99109

100-
assertEquals("Achternaam", persoonNaam.geslachtsnaam)
110+
assertEquals("Achternaam", persoon.naam.geslachtsnaam)
101111

102-
verify(haalCentraalBrpClient).getPersoonNaam("456", authentication)
112+
verify(haalCentraalBrpClient).getPersoon("456", authentication)
103113
}
104114

105115
@Test
@@ -110,8 +120,8 @@ class HaalCentraalBrpServiceTest {
110120
.aanvragerBsn("123")
111121
.gemachtigdeBsn("456")
112122
.buildBurgerAuthentication()
113-
val persoonNaam = haalCentraalBrpServiceImpl.getPersoon(authentication)
123+
val persoon = haalCentraalBrpServiceImpl.getGemachtigde(authentication)
114124

115-
assertNull(persoonNaam)
125+
assertNull(persoon)
116126
}
117127
}

‎haalcentraal/haalcentraal-brp/src/test/resources/data/get-ingeschreven-persoon.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"aanhef": "Geachte mevrouw Kooyman",
4747
"aanschrijfwijze": "M. Kooyman",
4848
"gebruikInLopendeTekst": "mevrouw Kooyman",
49-
"aanduidingNaamgebruik": "partner",
49+
"aanduidingNaamgebruik": "eigen_partner",
5050
"voornamen": "Merel",
5151
"voorletters": "M.",
5252
"voorvoegsel": "de",

0 commit comments

Comments
 (0)
Please sign in to comment.