Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSEARCH-958: Additional 147/447/547 to search #750

Merged
merged 1 commit into from
Feb 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
* Call Numbers Browse: Implement Browsing Endpoint for Call-Numbers ([MSEARCH-865](https://folio-org.atlassian.net/browse/MSEARCH-865))
* Call Numbers Browse: Support aliases for callNumberTypeId filters ([MSEARCH-942](https://folio-org.atlassian.net/browse/MSEARCH-942))
* Call Numbers Browse: Support showing instance title in browse results list ([MSEARCH-948](https://folio-org.atlassian.net/browse/MSEARCH-948))
* Authority search: Add namedEvent, sftNamedEvent, saftNamedEvent to possible search options ([MSEARCH-958](https://folio-org.atlassian.net/browse/MSEARCH-958))

### Bug fixes
* Remove shelving order calculation for local call-number types
Expand Down
24 changes: 24 additions & 0 deletions src/main/resources/model/authority.json
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,30 @@
"headingType": "Uniform Title",
"authRefType": "Auth/Ref"
},
"namedEvent": {
"type": "authority",
"index": "standard",
"searchAliases": [ "keyword" ],
"distinctType": "namedEvent",
"headingType": "Named Event",
"authRefType": "Authorized"
},
"sftNamedEvent": {
"type": "authority",
"index": "standard",
"searchAliases": [ "keyword" ],
"distinctType": "sftNamedEvent",
"headingType": "Named Event",
"authRefType": "Reference"
},
"saftNamedEvent": {
"type": "authority",
"index": "standard",
"searchAliases": [ "keyword" ],
"distinctType": "saftNamedEvent",
"headingType": "Named Event",
"authRefType": "Auth/Ref"
},
"topicalTerm": {
"type": "authority",
"index": "standard",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,19 @@ properties:
items:
type: "string"
description: "See also from tracing uniform title"
namedEvent:
type: "string"
description: "Heading named event"
sftNamedEvent:
type: "array"
description: "See from tracing named event"
items:
type: "string"
saftNamedEvent:
type: "array"
description: "See also from tracing named event"
items:
type: "string"
topicalTerm:
type: "string"
description: "Heading topical term"
Expand Down Expand Up @@ -189,4 +202,4 @@ properties:
description: "Generated field by mod-search, used to easily identity the heading/reference of the record that provides authority information"
numberOfTitles:
type: "integer"
description: "Generated field by mod-search, used to count the total number of bib records linked to this authority record"
description: "Generated field by mod-search, used to count the total number of bib records linked to this authority record"
87 changes: 46 additions & 41 deletions src/test/java/org/folio/search/controller/BrowseAuthorityIT.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class SearchAuthorityIT extends BaseIntegrationTest {

@BeforeAll
static void prepare() {
setUpTenant(Authority.class, 30, getAuthoritySampleAsMap());
setUpTenant(Authority.class, 33, getAuthoritySampleAsMap());

//set up linked instances
var instance1 = new Instance().id(randomId()).title("test-resource")
Expand Down Expand Up @@ -95,7 +95,7 @@ void searchByAuthoritiesCaseInsensitive_parameterized(String query, String value
@ParameterizedTest(name = "[{index}] query={0}, value=''{1}''")
@DisplayName("search by authorities (check that they are divided correctly)")
void searchByAuthorities_parameterized_all(String query, String value) throws Exception {
var response = doSearchByAuthorities(prepareQuery(query, value)).andExpect(jsonPath("$.totalRecords", is(30)));
var response = doSearchByAuthorities(prepareQuery(query, value)).andExpect(jsonPath("$.totalRecords", is(33)));
var actual = parseResponse(response, AuthoritySearchResult.class);
assertThat(actual.getAuthorities()).asInstanceOf(InstanceOfAssertFactories. LIST).containsOnly(
authority("Personal Name", AUTHORIZED_TYPE, "Gary A. Wills", 4),
Expand Down Expand Up @@ -130,6 +130,10 @@ void searchByAuthorities_parameterized_all(String query, String value) throws Ex
authority("Uniform Title", REFERENCE_TYPE, "a sft uniform title", null),
authority("Uniform Title", AUTH_REF_TYPE, "a saft uniform title", null),

authority("Named Event", AUTHORIZED_TYPE, "a named event", 4),
authority("Named Event", REFERENCE_TYPE, "a sft named event", null),
authority("Named Event", AUTH_REF_TYPE, "a saft named event", null),

authority("Topical", AUTHORIZED_TYPE, "a topical term", 4),
authority("Topical", REFERENCE_TYPE, "a sft topical term", null),
authority("Topical", AUTH_REF_TYPE, "a saft topical term", null),
Expand Down Expand Up @@ -157,6 +161,9 @@ private static Stream<Arguments> testDataProvider() {
arguments("keyword == {value}", "\"an uniform title\""),
arguments("keyword all {value}", "\"a sft uniform title\""),
arguments("keyword all {value}", "\"a saft uniform title\""),
arguments("keyword == {value}", "\"a named event\""),
arguments("keyword all {value}", "\"a sft named event\""),
arguments("keyword all {value}", "\"a saft named event\""),
arguments("keyword == {value}", "\"a topical term\""),
arguments("keyword all {value}", "\"a sft topical term\""),
arguments("keyword all {value}", "\"a saft topical term\""),
Expand Down Expand Up @@ -228,6 +235,16 @@ private static Stream<Arguments> testDataProvider() {
arguments("saftUniformTitle = {value} ", "\"title saft\""),
arguments("saftUniformTitle == {value} ", "\"saft uniform title\""),

arguments("namedEvent all {value}", "\"a named event\""),
arguments("namedEvent all {value}", "named"),
arguments("namedEvent == {value}", "\"a nam*\""),
arguments("namedEvent == {value} and headingType==\"Named Event\"", "\"a nam*\""),
arguments("sftNamedEvent = {value}", "\"sft named event\""),
arguments("sftNamedEvent == {value}", "\"sft named event\""),
arguments("sftNamedEvent == {value}", "\"*nam*\""),
arguments("saftNamedEvent = {value}", "\"saft event\""),
arguments("saftNamedEvent == {value}", "\"*saft nam*\""),

arguments("topicalTerm all {value}", "\"a topical term\""),
arguments("topicalTerm all {value}", "topical"),
arguments("topicalTerm == {value}", "\"a top*\""),
Expand Down Expand Up @@ -345,6 +362,14 @@ private static Stream<Arguments> testCaseInsensitiveDataProvider() {
arguments("saftUniformTitle = {value} ", "\"TITLE SAFT\""),
arguments("saftUniformTitle == {value} ", "\"SAFT UNIFORM TITLE\""),

arguments("namedEvent all {value}", "\"A NAMED EVENT\""),
arguments("namedEvent all {value}", "NAMED"),
arguments("namedEvent == {value}", "\"A NAM*\""),
arguments("sftNamedEvent = {value}", "\"SFT NAMED EVENT\""),
arguments("sftNamedEvent == {value}", "\"*NAM*\""),
arguments("saftNamedEvent = {value}", "\"SAFT EVENT\""),
arguments("saftNamedEvent == {value}", "\"*SAFT NAM*\""),

arguments("topicalTerm all {value}", "\"A TOPICAL TERM\""),
arguments("topicalTerm all {value}", "TOPICAL"),
arguments("topicalTerm == {value}", "\"A TOP*\""),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
class StreamResourceIdsIT extends BaseIntegrationTest {

private static final int SAVED_INSTANCES_AMOUNT = 1;
private static final int SAVED_AUTHORITIES_AMOUNT = 30;
private static final int SAVED_AUTHORITIES_AMOUNT = 33;

@BeforeAll
static void prepare() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,10 @@ void process_positive() {
event("saftCorporateNameTitle1", expectedAuthorityAsMap(authority, "saftCorporateNameTitle[1]")),
event("uniformTitle0", expectedAuthorityAsMap(authority, "uniformTitle")),
event("sftUniformTitle0", expectedAuthorityAsMap(authority, "sftUniformTitle[0]")),
event("saftUniformTitle0", expectedAuthorityAsMap(authority, "saftUniformTitle[0]"))
event("saftUniformTitle0", expectedAuthorityAsMap(authority, "saftUniformTitle[0]")),
event("namedEvent0", expectedAuthorityAsMap(authority, "namedEvent")),
event("sftNamedEvent0", expectedAuthorityAsMap(authority, "sftNamedEvent[0]")),
event("saftNamedEvent0", expectedAuthorityAsMap(authority, "saftNamedEvent[0]"))
));
}

Expand Down Expand Up @@ -162,6 +165,9 @@ private static Authority fullAuthorityRecord() {
.uniformTitle("an uniform title")
.sftUniformTitle(List.of("a sft uniform title"))
.saftUniformTitle(List.of("a saft uniform title"))
.namedEvent("a named event")
.sftNamedEvent(List.of("a sft named event"))
.saftNamedEvent(List.of("a saft named event"))
.subjectHeadings("a subject heading")
.identifiers(List.of(new Identifier()
.value("an identifier value")
Expand Down Expand Up @@ -191,6 +197,9 @@ private static ResourceDescription authorityResourceDescription() {
"uniformTitle", authorityField("uniformTitle"),
"sftUniformTitle", authorityField("sftUniformTitle"),
"saftUniformTitle", authorityField("saftUniformTitle"),
"namedEvent", authorityField("namedEvent"),
"sftNamedEvent", authorityField("sftNamedEvent"),
"saftNamedEvent", authorityField("saftNamedEvent"),
"shared", standardField()
));
}
Expand Down
3 changes: 3 additions & 0 deletions src/test/resources/samples/authority-sample/authority.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
"uniformTitle": "an uniform title",
"sftUniformTitle": [ "a sft uniform title" ],
"saftUniformTitle": [ "a saft uniform title" ],
"namedEvent": "a named event",
"sftNamedEvent": [ "a sft named event" ],
"saftNamedEvent": [ "a saft named event" ],
"topicalTerm": "a topical term",
"sftTopicalTerm": [ "a sft topical term" ],
"saftTopicalTerm": [ "a saft topical term" ],
Expand Down