Skip to content

Commit a951a5e

Browse files
committed
MODELINKS-267 Extend Authority fields
1 parent 19c6a9b commit a951a5e

File tree

12 files changed

+446
-2
lines changed

12 files changed

+446
-2
lines changed

NEWS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
* Fix authority record update and `updatedByUserId` field assignment ([MODELINKS-219](https://issues.folio.org/browse/MODELINKS-219))
5050
* Fix saving of Authority file with empty Base URL when another Authority file with empty Base URL already exists ([MODELINKS-216](https://issues.folio.org/browse/MODELINKS-216))
5151
* Fix handling of authority heading type change update event ([MODELINKS-242](https://issues.folio.org/browse/MODELINKS-242))
52+
* Extend authorities with additional fields for Advanced References Classification ([MODELINKS-248](https://issues.folio.org/browse/MODELINKS-248))
53+
* Extend Authority with saft* fields having custom mapping ([MODELINKS-267](https://issues.folio.org/browse/MODELINKS-267))
5254

5355
### Tech Dept
5456
* Create custom Mockito verifies for Hibernate entities ([MODELINKS-209](https://issues.folio.org/browse/MODELINKS-209))

src/main/java/org/folio/entlinks/controller/converter/AuthorityUtilityMapper.java

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,39 @@
33
import static org.apache.commons.collections4.CollectionUtils.isEmpty;
44
import static org.apache.commons.collections4.CollectionUtils.isNotEmpty;
55
import static org.folio.entlinks.domain.entity.AuthorityConstants.CORPORATE_NAME_HEADING;
6+
import static org.folio.entlinks.domain.entity.AuthorityConstants.CORPORATE_NAME_HEADING_TRUNC;
67
import static org.folio.entlinks.domain.entity.AuthorityConstants.CORPORATE_NAME_TITLE_HEADING;
8+
import static org.folio.entlinks.domain.entity.AuthorityConstants.CORPORATE_NAME_TITLE_HEADING_TRUNC;
79
import static org.folio.entlinks.domain.entity.AuthorityConstants.GENRE_TERM_HEADING;
10+
import static org.folio.entlinks.domain.entity.AuthorityConstants.GENRE_TERM_HEADING_TRUNC;
811
import static org.folio.entlinks.domain.entity.AuthorityConstants.GEOGRAPHIC_NAME_HEADING;
12+
import static org.folio.entlinks.domain.entity.AuthorityConstants.GEOGRAPHIC_NAME_HEADING_TRUNC;
913
import static org.folio.entlinks.domain.entity.AuthorityConstants.MEETING_NAME_HEADING;
14+
import static org.folio.entlinks.domain.entity.AuthorityConstants.MEETING_NAME_HEADING_TRUNC;
1015
import static org.folio.entlinks.domain.entity.AuthorityConstants.MEETING_NAME_TITLE_HEADING;
16+
import static org.folio.entlinks.domain.entity.AuthorityConstants.MEETING_NAME_TITLE_HEADING_TRUNC;
1117
import static org.folio.entlinks.domain.entity.AuthorityConstants.PERSONAL_NAME_HEADING;
18+
import static org.folio.entlinks.domain.entity.AuthorityConstants.PERSONAL_NAME_HEADING_TRUNC;
1219
import static org.folio.entlinks.domain.entity.AuthorityConstants.PERSONAL_NAME_TITLE_HEADING;
20+
import static org.folio.entlinks.domain.entity.AuthorityConstants.PERSONAL_NAME_TITLE_HEADING_TRUNC;
1321
import static org.folio.entlinks.domain.entity.AuthorityConstants.TOPICAL_TERM_HEADING;
22+
import static org.folio.entlinks.domain.entity.AuthorityConstants.TOPICAL_TERM_HEADING_TRUNC;
1423
import static org.folio.entlinks.domain.entity.AuthorityConstants.UNIFORM_TITLE_HEADING;
24+
import static org.folio.entlinks.domain.entity.AuthorityConstants.UNIFORM_TITLE_HEADING_TRUNC;
1525

1626
import java.util.ArrayList;
27+
import java.util.HashSet;
1728
import java.util.List;
1829
import java.util.Objects;
30+
import java.util.Set;
1931
import lombok.experimental.UtilityClass;
2032
import lombok.extern.log4j.Log4j2;
33+
import org.apache.commons.collections4.CollectionUtils;
2134
import org.folio.entlinks.domain.dto.AuthorityDto;
35+
import org.folio.entlinks.domain.dto.RelatedHeading;
2236
import org.folio.entlinks.domain.entity.AuthorityBase;
2337
import org.folio.entlinks.domain.entity.HeadingRef;
38+
import org.folio.entlinks.domain.entity.RelationshipType;
2439

2540
@UtilityClass
2641
@Log4j2
@@ -145,9 +160,66 @@ public static void extractAuthoritySaftHeadings(AuthorityDto source, AuthorityBa
145160
if (isNotEmpty(source.getSaftGenreTerm())) {
146161
saftHeadings.addAll(asSftHeadings(source.getSaftGenreTerm(), GENRE_TERM_HEADING));
147162
}
163+
extractAuthoritySaftHeadingsTruncated(source, saftHeadings);
164+
addRelationshipsToSaftHeadings(source, saftHeadings);
148165
target.setSaftHeadings(saftHeadings);
149166
}
150167

168+
private void extractAuthoritySaftHeadingsTruncated(AuthorityDto source, List<HeadingRef> saftHeadings) {
169+
if (isNotEmpty(source.getSaftPersonalNameTrunc())) {
170+
saftHeadings.addAll(asSftHeadings(source.getSaftPersonalNameTrunc(), PERSONAL_NAME_HEADING_TRUNC));
171+
}
172+
if (isNotEmpty(source.getSaftPersonalNameTitleTrunc())) {
173+
saftHeadings.addAll(asSftHeadings(source.getSaftPersonalNameTitleTrunc(), PERSONAL_NAME_TITLE_HEADING_TRUNC));
174+
}
175+
if (isNotEmpty(source.getSaftCorporateNameTrunc())) {
176+
saftHeadings.addAll(asSftHeadings(source.getSaftCorporateNameTrunc(), CORPORATE_NAME_HEADING_TRUNC));
177+
}
178+
if (isNotEmpty(source.getSaftCorporateNameTitleTrunc())) {
179+
saftHeadings.addAll(asSftHeadings(source.getSaftCorporateNameTitleTrunc(), CORPORATE_NAME_TITLE_HEADING_TRUNC));
180+
}
181+
if (isNotEmpty(source.getSaftMeetingNameTrunc())) {
182+
saftHeadings.addAll(asSftHeadings(source.getSaftMeetingNameTrunc(), MEETING_NAME_HEADING_TRUNC));
183+
}
184+
if (isNotEmpty(source.getSaftMeetingNameTitleTrunc())) {
185+
saftHeadings.addAll(asSftHeadings(source.getSaftMeetingNameTitleTrunc(), MEETING_NAME_TITLE_HEADING_TRUNC));
186+
}
187+
if (isNotEmpty(source.getSaftUniformTitleTrunc())) {
188+
saftHeadings.addAll(asSftHeadings(source.getSaftUniformTitleTrunc(), UNIFORM_TITLE_HEADING_TRUNC));
189+
}
190+
if (isNotEmpty(source.getSaftTopicalTermTrunc())) {
191+
saftHeadings.addAll(asSftHeadings(source.getSaftTopicalTermTrunc(), TOPICAL_TERM_HEADING_TRUNC));
192+
}
193+
if (isNotEmpty(source.getSaftGeographicNameTrunc())) {
194+
saftHeadings.addAll(asSftHeadings(source.getSaftGeographicNameTrunc(), GEOGRAPHIC_NAME_HEADING_TRUNC));
195+
}
196+
if (isNotEmpty(source.getSaftGenreTermTrunc())) {
197+
saftHeadings.addAll(asSftHeadings(source.getSaftGenreTermTrunc(), GENRE_TERM_HEADING_TRUNC));
198+
}
199+
}
200+
201+
private void addRelationshipsToSaftHeadings(final AuthorityDto source, final List<HeadingRef> headingRefs) {
202+
processRelationshipHeadings(source.getSaftBroaderTerm(), headingRefs, RelationshipType.BROADER_TERM);
203+
processRelationshipHeadings(source.getSaftNarrowerTerm(), headingRefs, RelationshipType.NARROWER_TERM);
204+
processRelationshipHeadings(source.getSaftEarlierHeading(), headingRefs, RelationshipType.EARLIER_HEADING);
205+
processRelationshipHeadings(source.getSaftLaterHeading(), headingRefs, RelationshipType.LATER_HEADING);
206+
}
207+
208+
private void processRelationshipHeadings(List<RelatedHeading> relationshipHeadings,
209+
final List<HeadingRef> headingRefs, final RelationshipType relationshipType) {
210+
if (isNotEmpty(relationshipHeadings)) {
211+
headingRefs.forEach(headingRef ->
212+
relationshipHeadings.forEach(relationshipHeading -> {
213+
if (relationshipHeading.getHeadingType().equals(headingRef.getHeadingType())
214+
&& relationshipHeading.getHeadingRef().equals(headingRef.getHeading())) {
215+
Set<RelationshipType> relationshipTypeSet = getOrCreateRelationshipTypeSet(headingRef);
216+
relationshipTypeSet.add(relationshipType);
217+
}
218+
})
219+
);
220+
}
221+
}
222+
151223
public static void extractAuthorityDtoHeadingValue(AuthorityBase source, AuthorityDto target) {
152224
if (source.getHeadingType() == null || source.getHeading() == null) {
153225
return;
@@ -215,13 +287,65 @@ private void extractAuthorityDtoSaftHeading(HeadingRef headingRef, AuthorityDto
215287
case TOPICAL_TERM_HEADING -> target.addSaftTopicalTermItem(headingRef.getHeading());
216288
case GEOGRAPHIC_NAME_HEADING -> target.addSaftGeographicNameItem(headingRef.getHeading());
217289
case GENRE_TERM_HEADING -> target.addSaftGenreTermItem(headingRef.getHeading());
290+
case PERSONAL_NAME_HEADING_TRUNC -> target.addSaftPersonalNameTruncItem(headingRef.getHeading());
291+
case PERSONAL_NAME_TITLE_HEADING_TRUNC -> target.addSaftPersonalNameTitleTruncItem(headingRef.getHeading());
292+
case CORPORATE_NAME_HEADING_TRUNC -> target.addSaftCorporateNameTruncItem(headingRef.getHeading());
293+
case CORPORATE_NAME_TITLE_HEADING_TRUNC -> target.addSaftCorporateNameTitleTruncItem(headingRef.getHeading());
294+
case MEETING_NAME_HEADING_TRUNC -> target.addSaftMeetingNameTruncItem(headingRef.getHeading());
295+
case MEETING_NAME_TITLE_HEADING_TRUNC -> target.addSaftMeetingNameTitleTruncItem(headingRef.getHeading());
296+
case UNIFORM_TITLE_HEADING_TRUNC -> target.addSaftUniformTitleTruncItem(headingRef.getHeading());
297+
case TOPICAL_TERM_HEADING_TRUNC -> target.addSaftTopicalTermTruncItem(headingRef.getHeading());
298+
case GEOGRAPHIC_NAME_HEADING_TRUNC -> target.addSaftGeographicNameTruncItem(headingRef.getHeading());
299+
case GENRE_TERM_HEADING_TRUNC -> target.addSaftGenreTermTruncItem(headingRef.getHeading());
218300
default -> log.warn("Invalid saft heading type - {} cannot be mapped", headingRef.getHeadingType());
219301
}
302+
extractSaftHeadingsRelationships(headingRef, target);
303+
}
304+
305+
private void extractSaftHeadingsRelationships(HeadingRef headingRef, AuthorityDto target) {
306+
if (CollectionUtils.isEmpty(target.getSaftNarrowerTerm())) {
307+
target.setSaftNarrowerTerm(new ArrayList<>());
308+
}
309+
if (CollectionUtils.isEmpty(target.getSaftBroaderTerm())) {
310+
target.setSaftBroaderTerm(new ArrayList<>());
311+
}
312+
if (CollectionUtils.isEmpty(target.getSaftEarlierHeading())) {
313+
target.setSaftEarlierHeading(new ArrayList<>());
314+
}
315+
if (CollectionUtils.isEmpty(target.getSaftLaterHeading())) {
316+
target.setSaftLaterHeading(new ArrayList<>());
317+
}
318+
if (isNotEmpty(headingRef.getRelationshipType())) {
319+
headingRef.getRelationshipType().forEach(
320+
relationshipType -> {
321+
switch (relationshipType) {
322+
case BROADER_TERM -> target.getSaftBroaderTerm()
323+
.add(new RelatedHeading(headingRef.getHeading(), headingRef.getHeadingType()));
324+
case NARROWER_TERM -> target.getSaftNarrowerTerm()
325+
.add(new RelatedHeading(headingRef.getHeading(), headingRef.getHeadingType()));
326+
case EARLIER_HEADING -> target.getSaftEarlierHeading()
327+
.add(new RelatedHeading(headingRef.getHeading(), headingRef.getHeadingType()));
328+
case LATER_HEADING -> target.getSaftLaterHeading()
329+
.add(new RelatedHeading(headingRef.getHeading(), headingRef.getHeadingType()));
330+
default -> log.warn("Invalid saft relationship type - {} cannot be mapped", relationshipType);
331+
}
332+
}
333+
);
334+
}
220335
}
221336

222337
private static List<HeadingRef> asSftHeadings(List<String> headingValues, String headingType) {
223338
return headingValues.stream()
224339
.map(headingValue -> new HeadingRef(headingType, headingValue))
225340
.toList();
226341
}
342+
343+
private static Set<RelationshipType> getOrCreateRelationshipTypeSet(HeadingRef heading) {
344+
Set<RelationshipType> relationshipTypeSet = heading.getRelationshipType();
345+
if (relationshipTypeSet == null) {
346+
relationshipTypeSet = new HashSet<>();
347+
heading.setRelationshipType(relationshipTypeSet);
348+
}
349+
return relationshipTypeSet;
350+
}
227351
}

src/main/java/org/folio/entlinks/domain/entity/AuthorityConstants.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,24 @@ public class AuthorityConstants {
2424
public static final String GEOGRAPHIC_NAME_HEADING = "geographicName";
2525

2626
public static final String GENRE_TERM_HEADING = "genreTerm";
27+
28+
public static final String PERSONAL_NAME_HEADING_TRUNC = "personalNameTrunc";
29+
30+
public static final String PERSONAL_NAME_TITLE_HEADING_TRUNC = "personalNameTitleTrunc";
31+
32+
public static final String CORPORATE_NAME_HEADING_TRUNC = "corporateNameTrunc";
33+
34+
public static final String CORPORATE_NAME_TITLE_HEADING_TRUNC = "corporateNameTitleTrunc";
35+
36+
public static final String MEETING_NAME_HEADING_TRUNC = "meetingNameTrunc";
37+
38+
public static final String MEETING_NAME_TITLE_HEADING_TRUNC = "meetingNameTitleTrunc";
39+
40+
public static final String UNIFORM_TITLE_HEADING_TRUNC = "uniformTitleTrunc";
41+
42+
public static final String TOPICAL_TERM_HEADING_TRUNC = "topicalTermTrunc";
43+
44+
public static final String GEOGRAPHIC_NAME_HEADING_TRUNC = "geographicNameTrunc";
45+
46+
public static final String GENRE_TERM_HEADING_TRUNC = "genreTermTrunc";
2747
}

src/main/java/org/folio/entlinks/domain/entity/HeadingRef.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.folio.entlinks.domain.entity;
22

3+
import com.fasterxml.jackson.annotation.JsonInclude;
34
import java.io.Serializable;
5+
import java.util.Set;
46
import lombok.AllArgsConstructor;
7+
import lombok.EqualsAndHashCode;
58
import lombok.Getter;
69
import lombok.NoArgsConstructor;
710
import lombok.Setter;
@@ -12,14 +15,24 @@
1215
@NoArgsConstructor
1316
@AllArgsConstructor
1417
@ToString
18+
@EqualsAndHashCode
19+
@JsonInclude(JsonInclude.Include.NON_NULL)
1520
public class HeadingRef implements Serializable {
1621

1722
private String headingType;
1823

1924
private String heading;
2025

26+
private Set<RelationshipType> relationshipType;
27+
2128
public HeadingRef(HeadingRef other) {
2229
this.heading = other.heading;
2330
this.headingType = other.headingType;
31+
this.relationshipType = other.relationshipType;
32+
}
33+
34+
public HeadingRef(String headingType, String heading) {
35+
this.headingType = headingType;
36+
this.heading = heading;
2437
}
2538
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.folio.entlinks.domain.entity;
2+
3+
public enum RelationshipType {
4+
5+
BROADER_TERM, NARROWER_TERM, EARLIER_HEADING, LATER_HEADING
6+
7+
}

src/main/resources/swagger.api/mod-entities-links.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,9 @@ components:
511511
linkStatus:
512512
$ref: schemas/authority/control/linkStatus.json
513513

514+
authorityRelatedHeading:
515+
$ref: schemas/authority-storage/relatedHeading.yaml
516+
514517
authorityDto:
515518
$ref: schemas/authority-storage/authorityDto.yaml
516519

src/main/resources/swagger.api/schemas/authority-storage/authorityDto.yaml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,90 @@ properties:
144144
description: See also from tracing genre/form term
145145
items:
146146
type: string
147+
saftBroaderTerm:
148+
type: array
149+
description: See also from tracing term that represents broader, more general concepts related to the authority record
150+
items:
151+
$ref: './relatedHeading.yaml'
152+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
153+
saftNarrowerTerm:
154+
type: array
155+
description: See also from tracing term that that represents narrower, more specific concepts derived from the authority record
156+
items:
157+
$ref: './relatedHeading.yaml'
158+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
159+
saftEarlierHeading:
160+
type: array
161+
description: See also from tracing heading that was previously used to represent the concept or entity described by the authority record. This field is used to track the evolution of terms or headings over time, facilitating the linking of historical and current data.
162+
items:
163+
$ref: './relatedHeading.yaml'
164+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
165+
saftLaterHeading:
166+
type: array
167+
description: See also from tracing heading that replaced the current heading used in the authority record. This field helps in maintaining the continuity of catalog records by linking past headings to their more current versions.
168+
items:
169+
$ref: './relatedHeading.yaml'
170+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
171+
saftPersonalNameTrunc:
172+
type: array
173+
description: See also from tracing personal name
174+
items:
175+
type: string
176+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
177+
saftPersonalNameTitleTrunc:
178+
type: array
179+
description: See also from tracing personal name title
180+
items:
181+
type: string
182+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
183+
saftCorporateNameTrunc:
184+
type: array
185+
description: See also from tracing corporate name
186+
items:
187+
type: string
188+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
189+
saftCorporateNameTitleTrunc:
190+
type: array
191+
description: See also from tracing corporate name title
192+
items:
193+
type: string
194+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
195+
saftMeetingNameTrunc:
196+
type: array
197+
description: See also from tracing meeting name
198+
items:
199+
type: string
200+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
201+
saftMeetingNameTitleTrunc:
202+
type: array
203+
description: See also from tracing meeting name title
204+
items:
205+
type: string
206+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
207+
saftUniformTitleTrunc:
208+
type: array
209+
description: See also from tracing uniform title
210+
items:
211+
type: string
212+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
213+
saftTopicalTermTrunc:
214+
type: array
215+
description: See also from tracing topical term
216+
items:
217+
type: string
218+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
219+
saftGenreTermTrunc:
220+
type: array
221+
description: See also from tracing genre/form term
222+
items:
223+
type: string
224+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
225+
saftGeographicNameTrunc:
226+
type: array
227+
description: See also from tracing geographic name
228+
items:
229+
type: string
230+
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)"
147231
identifiers:
148232
type: array
149233
description: An extensible set of name-value pairs of identifiers associated with the resource
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
description: An authority related heading for BroaderTerm/NarrowerTerm/LaterHeading/EarlierHeading
2+
type: object
3+
properties:
4+
headingRef:
5+
type: "string"
6+
description: "HeadingRef value"
7+
headingType:
8+
type: "string"
9+
description: "Heading type"
10+
required:
11+
- headingRef
12+
- headingType

src/test/java/org/folio/entlinks/controller/AuthorityControllerIT.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,7 @@ void updateAuthority_positive_entityUpdated() throws Exception {
495495
expected.setCorporateName("headingCorporateName");
496496
expected.setSftCorporateName(List.of("sftCorporateName"));
497497
expected.setSaftCorporateName(List.of("saftCorporateName"));
498+
expected.setSaftCorporateNameTrunc(List.of("saftCorporateNameTrunc"));
498499

499500
var headers = defaultHeaders();
500501
headers.put(XOkapiHeaders.USER_ID, List.of(UPDATER_USER_ID));
@@ -521,6 +522,9 @@ void updateAuthority_positive_entityUpdated() throws Exception {
521522
assertEquals(expected.getSaftPersonalName(), resultDto.getSaftPersonalName());
522523
assertEquals(expected.getSftCorporateName(), resultDto.getSftCorporateName());
523524
assertEquals(expected.getSaftCorporateName(), resultDto.getSaftCorporateName());
525+
assertEquals(expected.getSaftCorporateNameTrunc(), resultDto.getSaftCorporateNameTrunc());
526+
assertEquals(dto.getSaftNarrowerTerm(), resultDto.getSaftNarrowerTerm());
527+
assertEquals(dto.getSaftBroaderTerm(), resultDto.getSaftBroaderTerm());
524528

525529
var event = getConsumedEvent();
526530
awaitUntilAsserted(() ->

0 commit comments

Comments
 (0)