Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.apache.logging.log4j.Logger;
import org.folio.ActionProfile.FolioRecord;
import org.folio.Authority;
import org.folio.AuthorityExtended;
import org.folio.inventory.common.Context;
import org.folio.inventory.dataimport.exceptions.DataImportException;
import org.folio.inventory.dataimport.exceptions.OptimisticLockingException;
Expand Down Expand Up @@ -109,7 +110,9 @@ private Future<Authority> mergeRecords(Authority existingRecord, Authority mappe
mappedRecord.setId(existingRecord.getId());
mappedRecord.setVersion(existingRecord.getVersion());
JsonObject mapped = JsonObject.mapFrom(mappedRecord);
Authority mergedAuthorityRecord = mapped.mapTo(Authority.class);
Authority mergedAuthorityRecord = getIsAuthorityExtended()
? mapped.mapTo(AuthorityExtended.class)
: mapped.mapTo(Authority.class);
mergedAuthorityRecord.setSource(Authority.Source.MARC);
return Future.succeededFuture(mergedAuthorityRecord);
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import io.vertx.core.json.JsonObject;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.folio.ActionProfile;
import org.folio.Authority;
import org.folio.DataImportEventPayload;
Expand Down Expand Up @@ -80,6 +82,7 @@ public class UpdateAuthorityEventHandlerTest {

private static final String MAPPING_RULES_PATH = "src/test/resources/handlers/marc-authority-rules.json";
private static final String PARSED_AUTHORITY_RECORD = "src/test/resources/marc/authority/parsed-authority-record.json";
private static final String PARSED_AUTHORITY_EXTENDED_RECORD = "src/test/resources/marc/authority/parsed-authority-extended-record.json";
private static final String MAPPING_METADATA_URL = "/mapping-metadata";
private final boolean isAuthorityExtended;

Expand Down Expand Up @@ -408,4 +411,39 @@ public void shouldNotProcessEventIfOLErrorExist() throws IOException, ExecutionE
CompletableFuture<DataImportEventPayload> future = eventHandler.handle(dataImportEventPayload);
future.get(5, TimeUnit.SECONDS);
}

@Test
public void shouldProcessAuthorityExtendedEvent() throws IOException, InterruptedException, ExecutionException, TimeoutException {
AbstractAuthorityEventHandler.setAuthorityExtendedMode(true);
when(storage.getAuthorityRecordCollection(any())).thenReturn(authorityCollection);
when(authorityCollection.findById(anyString())).thenReturn(CompletableFuture.completedFuture(new Authority().withVersion(1)));

var parsedAuthorityRecord = new JsonObject(TestUtil.readFileFromPath(PARSED_AUTHORITY_EXTENDED_RECORD));
Record parsedRecord = new Record().withParsedRecord(new ParsedRecord().withContent(parsedAuthorityRecord.encode()));
HashMap<String, String> context = new HashMap<>();
context.put(MARC_AUTHORITY.value(), Json.encode(parsedRecord));

DataImportEventPayload dataImportEventPayload = new DataImportEventPayload()
.withEventType(DI_INVENTORY_AUTHORITY_MATCHED.value())
.withJobExecutionId(UUID.randomUUID().toString())
.withOkapiUrl(mockServer.baseUrl())
.withContext(context)
.withCurrentNode(profileSnapshotWrapper.getChildSnapshotWrappers().get(0));

CompletableFuture<DataImportEventPayload> future = eventHandler.handle(dataImportEventPayload);
DataImportEventPayload actualDataImportEventPayload = future.get(5, TimeUnit.SECONDS);

verify(publisher, times(1)).publish(dataImportEventPayload);

assertEquals(DI_INVENTORY_AUTHORITY_UPDATED.value(), actualDataImportEventPayload.getEventType());
assertNotNull(actualDataImportEventPayload.getContext().get(AUTHORITY.value()));
JsonObject authority = new JsonObject(actualDataImportEventPayload.getContext().get(AUTHORITY.value()));
assertNotNull(authority.getString("id"));
assertEquals("1", authority.getString("_version"));
assertEquals(List.of("Editor: C. W. Dugmore."), authority.getJsonArray("saftPersonalNameTrunc").getList());
assertEquals(List.of("e Church history--linkText"), authority.getJsonArray("saftCorporateNameTrunc").getList());
assertEquals(List.of("Church history", "nga Broader-earlier - 511", "h Some narrower term - 511"), authority.getJsonArray("saftMeetingNameTrunc").getList());
assertEquals(List.of(Map.of("headingRef", "nga Broader-earlier - 511", "headingType", "meetingNameTrunc")), authority.getJsonArray("saftBroaderTerm").getList());
assertEquals(List.of(Map.of("headingRef", "h Some narrower term - 511", "headingType", "meetingNameTrunc")), authority.getJsonArray("saftNarrowerTerm").getList());
}
}
Loading