diff --git a/NEWS.md b/NEWS.md index 32bde4bee..f955e1e0e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,7 @@ ## Unreleased v3.5.0 ### Stories * [MODEXPW-576](https://folio-org.atlassian.net/browse/MODEXPW-576) Enhance "MARC authority headings update" Report with Record Type Column Based on Consortium Environment. +* [MODEXPW-619](https://folio-org.atlassian.net/browse/MODEXPW-619) Remove the Linked bib fields column for the Authority headings change report ### Bug fixes * [MODEXPW-617](https://folio-org.atlassian.net/browse/MODEXPW-617) Update Apache Kafka topic template to prevent ambiguous env name matches. diff --git a/descriptors/ModuleDescriptor-template.json b/descriptors/ModuleDescriptor-template.json index a9fba9638..cbe3ff735 100644 --- a/descriptors/ModuleDescriptor-template.json +++ b/descriptors/ModuleDescriptor-template.json @@ -40,7 +40,7 @@ }, { "id": "instance-authority-links-statistics", - "version": "2.1" + "version": "2.1 3.0" }, { "id": "holdings-note-types", diff --git a/folio-export-common b/folio-export-common index 87127ad84..d98ac2205 160000 --- a/folio-export-common +++ b/folio-export-common @@ -1 +1 @@ -Subproject commit 87127ad84065ee9b1ea4ca7107b0d046b3336a1a +Subproject commit d98ac22051c12c7bbfa5f099f67b8222e6feca0e diff --git a/src/main/java/org/folio/dew/ModDataExportWorkerApplication.java b/src/main/java/org/folio/dew/ModDataExportWorkerApplication.java index d4542ac3f..b6a73009e 100644 --- a/src/main/java/org/folio/dew/ModDataExportWorkerApplication.java +++ b/src/main/java/org/folio/dew/ModDataExportWorkerApplication.java @@ -6,7 +6,10 @@ import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.cloud.openfeign.EnableFeignClients; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = { + "org.folio.dew", + "org.folio.spring.scope" +}) @EnableFeignClients(basePackages = "org.folio.dew.client") @EnableBatchProcessing(isolationLevelForCreate = "ISOLATION_READ_COMMITTED") @EntityScan("org.folio.de.entity") diff --git a/src/main/java/org/folio/dew/batch/authoritycontrol/AuthorityControlToExportFormatMapper.java b/src/main/java/org/folio/dew/batch/authoritycontrol/AuthorityControlToExportFormatMapper.java index 7065ba356..93e5703e2 100644 --- a/src/main/java/org/folio/dew/batch/authoritycontrol/AuthorityControlToExportFormatMapper.java +++ b/src/main/java/org/folio/dew/batch/authoritycontrol/AuthorityControlToExportFormatMapper.java @@ -38,7 +38,6 @@ public AuthUpdateHeadingExportFormat convertToAuthUpdateHeadingsExportFormat(Aut exportFormat.setOriginalHeadingType(dto.getHeadingTypeOld()); exportFormat.setIdentifier(dto.getNaturalIdNew()); exportFormat.setAuthoritySourceFileName(dto.getSourceFileNew()); - exportFormat.setNumberOfBibliographicRecordsLinked(dto.getLbTotal().toString()); if (folioTenantService.isConsortiumTenant()) { exportFormat.setSource(Boolean.TRUE.equals(dto.getShared()) ? "shared" : "local"); } diff --git a/src/main/java/org/folio/dew/batch/authoritycontrol/readers/AuthUpdateHeadingsItemReader.java b/src/main/java/org/folio/dew/batch/authoritycontrol/readers/AuthUpdateHeadingsItemReader.java index 1da46c5ce..13fb15c5e 100644 --- a/src/main/java/org/folio/dew/batch/authoritycontrol/readers/AuthUpdateHeadingsItemReader.java +++ b/src/main/java/org/folio/dew/batch/authoritycontrol/readers/AuthUpdateHeadingsItemReader.java @@ -2,11 +2,17 @@ import static org.folio.dew.domain.dto.authority.control.AuthorityDataStatDto.ActionEnum.UPDATE_HEADING; +import java.time.OffsetDateTime; +import java.util.ArrayDeque; +import java.util.Deque; import org.folio.dew.client.EntitiesLinksStatsClient; import org.folio.dew.config.properties.AuthorityControlJobProperties; import org.folio.dew.domain.dto.authority.control.AuthorityControlExportConfig; import org.folio.dew.domain.dto.authority.control.AuthorityDataStatDto; import org.folio.dew.domain.dto.authority.control.AuthorityDataStatDtoCollection; +import org.folio.dew.service.FolioTenantService; +import org.folio.spring.FolioExecutionContext; +import org.folio.spring.scope.FolioExecutionContextService; import org.springframework.batch.core.configuration.annotation.StepScope; import org.springframework.stereotype.Component; @@ -14,14 +20,99 @@ @Component public class AuthUpdateHeadingsItemReader extends AuthorityControlItemReader { + private final FolioExecutionContext context; + private final FolioExecutionContextService executionService; + private final String consortiumCentralTenant; + private final boolean isConsortiumMemberTenant; + private final boolean isConsortiumCentralTenant; + private OffsetDateTime toConsortiumDate; + + private final Deque memberTenantStats = new ArrayDeque<>(); + private final Deque centralTenantStats = new ArrayDeque<>(); + public AuthUpdateHeadingsItemReader(EntitiesLinksStatsClient entitiesLinksStatsClient, AuthorityControlExportConfig exportConfig, - AuthorityControlJobProperties jobProperties) { + AuthorityControlJobProperties jobProperties, + FolioTenantService folioTenantService, + FolioExecutionContext context, + FolioExecutionContextService executionService) { super(entitiesLinksStatsClient, exportConfig, jobProperties); + this.context = context; + this.executionService = executionService; + this.consortiumCentralTenant = folioTenantService.getConsortiumCentralTenant(); + this.isConsortiumMemberTenant = consortiumCentralTenant != null && !consortiumCentralTenant.equals(this.context.getTenantId()); + this.isConsortiumCentralTenant = consortiumCentralTenant != null && consortiumCentralTenant.equals(this.context.getTenantId()); + this.toConsortiumDate = this.toDate; + } + + @Override + protected AuthorityDataStatDto doRead() { + if (!isConsortiumMemberTenant) { + return super.doRead(); + } + return getConsortiumAuthorityDataStat(limit); } @Override protected AuthorityDataStatDtoCollection getCollection(int limit) { - return entitiesLinksStatsClient.getAuthorityStats(limit, UPDATE_HEADING, fromDate(), toDate()); + var authorityStats = entitiesLinksStatsClient.getAuthorityStats(limit, UPDATE_HEADING, fromDate(), toDate()); + if (isConsortiumCentralTenant && authorityStats != null && !authorityStats.getStats().isEmpty()) { + authorityStats.getStats().forEach(stat -> stat.setShared(true)); + } + return authorityStats; + } + + private AuthorityDataStatDto getConsortiumAuthorityDataStat(int limit) { + if (memberTenantStats.isEmpty()) { + loadNextMemberTenantStatsPage(limit); + } + if (centralTenantStats.isEmpty()) { + loadNextCentralTenantStatsPage(limit); + } + // if there are no stats in both member and central tenant return null to finish reading + if (memberTenantStats.isEmpty() && centralTenantStats.isEmpty()) { + return null; + } + + if (memberTenantStats.isEmpty()) { + return centralTenantStats.pollFirst(); + } + if (centralTenantStats.isEmpty()) { + return memberTenantStats.pollFirst(); + } + + var memberStat = memberTenantStats.peekFirst(); + var centralStat = centralTenantStats.peekFirst(); + + return memberStat.getMetadata().getStartedAt().isAfter(centralStat.getMetadata().getStartedAt()) + ? memberTenantStats.pollFirst() + : centralTenantStats.pollFirst(); + } + + private void loadNextMemberTenantStatsPage(int limit) { + if (toDate() != null) { + var authorityStats = entitiesLinksStatsClient.getAuthorityStats(limit, UPDATE_HEADING, fromDate(), toDate()); + if (authorityStats != null) { + toDate = authorityStats.getNext(); + memberTenantStats.addAll(authorityStats.getStats()); + } + } + } + + private void loadNextCentralTenantStatsPage(int limit) { + if (formatConsortiumDate() != null) { + var authorityStats = executionService.execute(consortiumCentralTenant, context, () -> + entitiesLinksStatsClient.getAuthorityStats(limit, UPDATE_HEADING, fromDate(), formatConsortiumDate())); + + if (authorityStats != null && !authorityStats.getStats().isEmpty()) { + authorityStats.getStats().forEach(stat -> stat.setShared(true)); + toConsortiumDate = authorityStats.getNext(); + centralTenantStats.addAll(authorityStats.getStats()); + } + } + } + + private String formatConsortiumDate() { + return toConsortiumDate == null ? null : toConsortiumDate.toString(); } } diff --git a/src/main/java/org/folio/dew/batch/authoritycontrol/readers/AuthorityControlItemReader.java b/src/main/java/org/folio/dew/batch/authoritycontrol/readers/AuthorityControlItemReader.java index f2d41b17d..eefdfb10f 100644 --- a/src/main/java/org/folio/dew/batch/authoritycontrol/readers/AuthorityControlItemReader.java +++ b/src/main/java/org/folio/dew/batch/authoritycontrol/readers/AuthorityControlItemReader.java @@ -16,11 +16,11 @@ public abstract class AuthorityControlItemReader extends AbstractItemCountingItemStreamItemReader { protected final EntitiesLinksStatsClient entitiesLinksStatsClient; - private final int limit; - private OffsetDateTime fromDate; - private OffsetDateTime toDate; + protected final int limit; private int currentChunkOffset; private List currentChunk; + private OffsetDateTime fromDate; + protected OffsetDateTime toDate; protected AuthorityControlItemReader(EntitiesLinksStatsClient entitiesLinksStatsClient, AuthorityControlExportConfig exportConfig, @@ -54,7 +54,6 @@ protected T doRead() { if (currentChunk.isEmpty()) { return null; } - return currentChunk.get(currentChunkOffset++); } diff --git a/src/main/java/org/folio/dew/domain/dto/authoritycontrol/exportformat/AuthUpdateHeadingExportFormat.java b/src/main/java/org/folio/dew/domain/dto/authoritycontrol/exportformat/AuthUpdateHeadingExportFormat.java index f46af0cb4..90cfe2a90 100644 --- a/src/main/java/org/folio/dew/domain/dto/authoritycontrol/exportformat/AuthUpdateHeadingExportFormat.java +++ b/src/main/java/org/folio/dew/domain/dto/authoritycontrol/exportformat/AuthUpdateHeadingExportFormat.java @@ -20,7 +20,6 @@ public class AuthUpdateHeadingExportFormat implements AuthorityControlExportForm @ExportHeader(NEW_1XX) private String newHeadingType; private String authoritySourceFileName; - private String numberOfBibliographicRecordsLinked; @ExportHeader(AUTHORITY_RECORD_TYPE) private String source; private String updater; diff --git a/src/main/java/org/folio/dew/service/FolioTenantService.java b/src/main/java/org/folio/dew/service/FolioTenantService.java index da5c806ec..fb547b3c5 100644 --- a/src/main/java/org/folio/dew/service/FolioTenantService.java +++ b/src/main/java/org/folio/dew/service/FolioTenantService.java @@ -63,7 +63,17 @@ protected boolean tenantExists() { * Check if current context tenant is a part of consortium * */ public boolean isConsortiumTenant() { - var centralTenant = userTenantsService.getCentralTenant(context.getTenantId()); + var centralTenant = userTenantsService.getCentralTenant(context.getTenantId()); return centralTenant.isPresent() && StringUtils.isNotEmpty(centralTenant.get()); } + + /** + * Get consortium central tenant if current context tenant is a part of consortium + * + * @return consortium central tenant or null if current context tenant is not a part of consortium + */ + public String getConsortiumCentralTenant() { + var centralTenant = userTenantsService.getCentralTenant(context.getTenantId()); + return centralTenant.orElse(null); + } } diff --git a/src/test/java/org/folio/dew/AuthorityControlConsortiumTest.java b/src/test/java/org/folio/dew/AuthorityControlConsortiumTest.java index 426197910..5062592b2 100644 --- a/src/test/java/org/folio/dew/AuthorityControlConsortiumTest.java +++ b/src/test/java/org/folio/dew/AuthorityControlConsortiumTest.java @@ -15,6 +15,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import java.io.File; import java.time.LocalDate; +import java.util.List; import java.util.UUID; import lombok.SneakyThrows; import org.apache.commons.io.FileUtils; @@ -40,10 +41,12 @@ class AuthorityControlConsortiumTest extends BaseBatchTest { - private static final String EXPECTED_AUTH_HEADING_UPDATE_OUTPUT = + private static final String EXPECTED_CONSORTIUM_OUTPUT = "src/test/resources/output/authority_control/auth_heading_update_consortium.csv"; + private static final String EXPECTED_CONSORTIUM_MEMBER_TENANT_OUTPUT = + "src/test/resources/output/authority_control/auth_heading_update_consortium_member_tenant.csv"; private static final String EXPECTED_S3_FILE_PATH = - "mod-data-export-worker/authority_control_export/consortium/"; + "mod-data-export-worker/authority_control_export/college/"; @Autowired private Job getAuthHeadingJob; @Autowired @@ -55,12 +58,12 @@ class AuthorityControlConsortiumTest extends BaseBatchTest { @BeforeAll static void beforeAll() { - setUpTenant(CONSORTIUM_TENANT); + setUpConsortiumTenant(CONSORTIUM_TENANT, List.of(CONSORTIUM_MEMBER_TENANT), CONSORTIUM_MEMBER_TENANT); } @Test @DisplayName("Run AuthHeadingJob export in the consortium tenant successfully") - void authHeadingJobTest() throws Exception { + void authHeadingJobTestReceiveStatsFromMemberAndCentralTenantTest() throws Exception { var exportConfig = buildExportConfig("2024-01-01", "2024-12-01"); var testLauncher = createTestLauncher(getAuthHeadingJob); var jobParameters = prepareJobParameters(exportConfig); @@ -69,27 +72,46 @@ void authHeadingJobTest() throws Exception { assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED); - verifyFile(jobExecution); + verifyFile(jobExecution, EXPECTED_CONSORTIUM_OUTPUT); wireMockServer.verify(getRequestedFor(urlEqualTo( "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2024-01-01T00%3A00Z&toDate=2024-12-01T23%3A59%3A59.999999999Z"))); wireMockServer.verify(getRequestedFor(urlEqualTo( - "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2024-01-01T00%3A00Z&toDate=2024-08-01T12%3A00Z"))); + "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2024-01-01T00%3A00Z&toDate=2024-08-01T11%3A00Z"))); verifyJobEvent(); } - private void verifyFile(JobExecution jobExecution) throws Exception { + @Test + @DisplayName("Run AuthHeadingJob export in the consortium tenant successfully") + void authHeadingJobReceiveStatsOnlyFromMemberTenantTest() throws Exception { + var exportConfig = buildExportConfig("2025-02-14", "2025-02-17"); + var testLauncher = createTestLauncher(getAuthHeadingJob); + var jobParameters = prepareJobParameters(exportConfig); + + var jobExecution = testLauncher.launchJob(jobParameters); + + assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED); + + verifyFile(jobExecution, EXPECTED_CONSORTIUM_MEMBER_TENANT_OUTPUT); + wireMockServer.verify(getRequestedFor(urlEqualTo( + "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2025-02-14T00%3A00Z&toDate=2025-02-17T23%3A59%3A59.999999999Z"))); + wireMockServer.verify(getRequestedFor(urlEqualTo( + "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2025-02-14T00%3A00Z&toDate=2025-02-15T11%3A00Z"))); + verifyJobEvent(); + } + + private void verifyFile(JobExecution jobExecution, String expectedReportOutput) throws Exception { var executionContext = jobExecution.getExecutionContext(); var fileInStorage = executionContext.getString(OUTPUT_FILES_IN_STORAGE); var fileName = executionContext.getString(AUTHORITY_CONTROL_FILE_NAME); assertEquals(EXPECTED_S3_FILE_PATH + fileName, fileInStorage); - verifyFileOutput(fileInStorage); + verifyFileOutput(fileInStorage, expectedReportOutput); } - private void verifyFileOutput(String fileInStorage) throws Exception { + private void verifyFileOutput(String fileInStorage, String expectedReportOutput) throws Exception { var presignedUrl = remoteFilesStorage.objectToPresignedObjectUrl(fileInStorage); var actualOutput = actualFileOutput(presignedUrl); - var expectedOutput = new FileSystemResource(EXPECTED_AUTH_HEADING_UPDATE_OUTPUT); + var expectedOutput = new FileSystemResource(expectedReportOutput); assertTrue(FileUtils.contentEqualsIgnoreEOL(expectedOutput.getFile(), actualOutput.getFile(), "UTF-8") , "Files are not identical!"); } diff --git a/src/test/java/org/folio/dew/BaseBatchTest.java b/src/test/java/org/folio/dew/BaseBatchTest.java index ebbe319b2..f04cf029f 100644 --- a/src/test/java/org/folio/dew/BaseBatchTest.java +++ b/src/test/java/org/folio/dew/BaseBatchTest.java @@ -1,5 +1,10 @@ package org.folio.dew; +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; +import static org.apache.http.HttpStatus.SC_OK; +import static org.folio.spring.integration.XOkapiHeaders.TENANT; +import static org.folio.spring.integration.XOkapiHeaders.URL; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -10,6 +15,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.WireMock; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; @@ -27,6 +33,7 @@ import lombok.SneakyThrows; import org.folio.dew.batch.ExportJobManager; import org.folio.dew.batch.ExportJobManagerSync; +import org.folio.dew.client.UserTenantsClient; import org.folio.dew.repository.RemoteFilesStorage; import org.folio.dew.service.JobCommandsReceiverService; import org.folio.spring.DefaultFolioExecutionContext; @@ -54,6 +61,7 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.kafka.test.context.EmbeddedKafka; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.DynamicPropertyRegistry; @@ -81,6 +89,7 @@ public abstract class BaseBatchTest { protected static final String TOKEN = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkaWt1X2FkbWluIiwidXNlcl9pZCI6IjFkM2I1OGNiLTA3YjUtNWZjZC04YTJhLTNjZTA2YTBlYjkwZiIsImlhdCI6MTYxNjQyMDM5MywidGVuYW50IjoiZGlrdSJ9.2nvEYQBbJP1PewEgxixBWLHSX_eELiBEBpjufWiJZRs"; protected static final String NON_CONSORTIUM_TENANT = "diku"; protected static final String CONSORTIUM_TENANT = "consortium"; + protected static final String CONSORTIUM_MEMBER_TENANT = "college"; public static final int WIRE_MOCK_PORT = TestSocketUtils.findAvailableTcpPort(); private static String tenant = NON_CONSORTIUM_TENANT; @@ -172,6 +181,15 @@ protected static void setUpTenant(String tenant) { .configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) .registerModule(new JavaTimeModule()); + @SneakyThrows + protected static void setUpConsortiumTenant(String centralTenantId, + List memberTenantIds, + String currentTenant) { + BaseBatchTest.tenant = currentTenant; + setUpNewTenant(centralTenantId); + setUpConsortiumMemberTenants(centralTenantId, memberTenantIds); + } + @SneakyThrows public static String asJsonString(Object value) { return OBJECT_MAPPER.writeValueAsString(value); @@ -242,4 +260,47 @@ static void tearDown() { wireMockServer.stop(); } + @SneakyThrows + private static void setUpConsortiumMemberTenants(String centralTenantId, + List memberTenantIds) { + memberTenantIds.forEach(BaseBatchTest::setUpNewTenant); + var consortiumId = UUID.randomUUID().toString(); + var userTenants = new UserTenantsClient.UserTenants( + List.of(new UserTenantsClient.UserTenant(centralTenantId, consortiumId))); + mockGet("/user-tenants", OBJECT_MAPPER.writeValueAsString(userTenants), SC_OK, wireMockServer); + var consortiumTenantList = memberTenantIds.stream() + .map(s -> new ConsortiumTenant(s, false)) + .collect(Collectors.toList()); + consortiumTenantList.add(new ConsortiumTenant(centralTenantId, true)); + var consortiumTenants = new ConsortiumTenants(consortiumTenantList); + mockGet("/consortia/" + consortiumId + "/tenants", OBJECT_MAPPER.writeValueAsString(consortiumTenants), SC_OK, + wireMockServer); + } + + @SneakyThrows + private static void setUpNewTenant(String tenant) { + var httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(APPLICATION_JSON); + httpHeaders.add(TENANT, tenant); + httpHeaders.add(XOkapiHeaders.USER_ID, UUID.randomUUID().toString()); + httpHeaders.add(URL, wireMockServer.baseUrl()); + + mockMvc.perform(post("/_/tenant").content(asJsonString(new TenantAttributes().moduleTo("mod-data-export-worker"))) + .headers(httpHeaders) + .contentType(APPLICATION_JSON)).andExpect(status().isNoContent()); + mockGet("/user-tenants", "{\"userTenants\": [],\"totalRecords\": 0}", SC_OK, wireMockServer); + } + + private static void mockGet(String url, String body, int status, WireMockServer mockServer) { + mockServer.stubFor(WireMock.get(urlPathEqualTo(url)) + .willReturn(aResponse().withBody(body) + .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .withStatus(status))); + } + + record ConsortiumTenant(String id, boolean isCentral) { + } + + record ConsortiumTenants(List tenants) { + } } diff --git a/src/test/resources/mappings/entitesLinksStats.json b/src/test/resources/mappings/entitesLinksStats.json index 975a0d763..d523d268f 100644 --- a/src/test/resources/mappings/entitesLinksStats.json +++ b/src/test/resources/mappings/entitesLinksStats.json @@ -12,7 +12,7 @@ }, "response": { "status": 200, - "body": "{\"stats\": [{\"id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles, Prince of Wales\",\"headingNew\": \"Charles III, King\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"lbTotal\": 105,\"lbUpdated\": 55,\"lbFailed\": 50,\"metadata\": {\"startedAt\": \"2023-10-01T12:00:00Z\",\"completedAt\": \"2023-10-01T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Diku\",\"startedByUserLastName\": \"Admin\"}},{\"id\": \"500f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"DELETE\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles, Prince of Wales\",\"headingNew\": \"Charles III, King\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"lbTotal\": 105,\"lbUpdated\": 55,\"lbFailed\": 50,\"metadata\": {\"startedAt\": \"2023-10-01T12:00:00Z\",\"completedAt\": \"2023-09-01T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Diku\",\"startedByUserLastName\": \"Admin\"}}],\"next\": \"2023-08-01T12:00:00.000000Z\"}", + "body": "{\"stats\": [{\"id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles, Prince of Wales\",\"headingNew\": \"Charles III, King\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"metadata\": {\"startedAt\": \"2023-10-01T12:00:00Z\",\"completedAt\": \"2023-10-01T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Diku\",\"startedByUserLastName\": \"Admin\"}},{\"id\": \"500f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"DELETE\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles, Prince of Wales\",\"headingNew\": \"Charles III, King\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"metadata\": {\"startedAt\": \"2023-10-01T12:00:00Z\",\"completedAt\": \"2023-09-01T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Diku\",\"startedByUserLastName\": \"Admin\"}}],\"next\": \"2023-08-01T12:00:00.000000Z\"}", "headers": { "Content-Type": "application/json" } @@ -30,7 +30,7 @@ }, "response": { "status": 200, - "body": "{\"stats\": [{\"id\": \"0b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"100\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"lbTotal\": 10,\"lbUpdated\": 10,\"lbFailed\": 0,\"metadata\": {\"startedAt\": \"2023-08-01T12:00:00Z\",\"completedAt\": \"2023-08-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812333\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Test\"}},{\"id\": \"1b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"100\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"lbTotal\": 10,\"lbUpdated\": 10,\"lbFailed\": 0,\"metadata\": {\"startedAt\": \"2023-08-01T12:00:00Z\",\"completedAt\": \"2023-07-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812333\",\"startedByUserLastName\": \"Test\"}},{\"id\": \"1b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"100\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"lbTotal\": 10,\"lbUpdated\": 10,\"lbFailed\": 0,\"metadata\": {\"startedAt\": \"2023-08-01T12:00:00Z\",\"completedAt\": \"2023-07-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812334\",\"startedByUserLastName\": \"\",\"startedByUserFirstName\": null}}]}", + "body": "{\"stats\": [{\"id\": \"0b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"100\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"metadata\": {\"startedAt\": \"2023-08-01T12:00:00Z\",\"completedAt\": \"2023-08-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812333\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Test\"}},{\"id\": \"1b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"100\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"metadata\": {\"startedAt\": \"2023-08-01T12:00:00Z\",\"completedAt\": \"2023-07-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812333\",\"startedByUserLastName\": \"Test\"}},{\"id\": \"1b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"100\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"metadata\": {\"startedAt\": \"2023-08-01T12:00:00Z\",\"completedAt\": \"2023-07-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812334\",\"startedByUserLastName\": \"\",\"startedByUserFirstName\": null}}]}", "headers": { "Content-Type": "application/json" } diff --git a/src/test/resources/mappings/entitesLinksStatsConsortium.json b/src/test/resources/mappings/entitesLinksStatsConsortium.json index 05b5c7d20..cb37992c6 100644 --- a/src/test/resources/mappings/entitesLinksStatsConsortium.json +++ b/src/test/resources/mappings/entitesLinksStatsConsortium.json @@ -4,6 +4,42 @@ "request": { "method": "GET", "url": "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2024-01-01T00%3A00Z&toDate=2024-12-01T23%3A59%3A59.999999999Z", + "headers": { + "x-okapi-tenant": { + "equalTo": "college" + } + } + }, + "response": { + "status": 200, + "body": "{\"stats\": [{\"id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles, Prince of Wales\",\"headingNew\": \"Charles III, King\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"metadata\": {\"startedAt\": \"2024-10-01T12:00:01Z\",\"completedAt\": \"2024-10-01T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Test\"}},{\"id\": \"500f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"DELETE\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles, Prince of Wales\",\"headingNew\": \"Charles III, King\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"111\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"metadata\": {\"startedAt\": \"2024-10-01T12:00:00Z\",\"completedAt\": \"2024-09-01T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Admin\"}} ], \"next\": null}", + "headers": { + "Content-Type": "application/json" + } + } + }, + { + "request": { + "method": "GET", + "url": "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2024-01-01T00%3A00Z&toDate=2024-12-01T23%3A59%3A59.999999999Z", + "headers": { + "x-okapi-tenant": { + "equalTo": "consortium" + } + } + }, + "response": { + "status": 200, + "body": "{\"stats\": [{\"id\": \"1b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"metadata\": {\"startedAt\": \"2024-08-01T12:00:00Z\",\"completedAt\": \"2024-07-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812333\",\"startedByUserLastName\": \"Consortium\"}},{\"id\": \"1b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"111\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"metadata\": {\"startedAt\": \"2024-08-01T12:00:00Z\",\"completedAt\": \"2024-07-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812334\",\"startedByUserLastName\": \"\",\"startedByUserFirstName\": null}}],\"next\": \"2024-08-01T11:00:00.000000Z\"}", + "headers": { + "Content-Type": "application/json" + } + } + }, + { + "request": { + "method": "GET", + "url": "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2024-01-01T00%3A00Z&toDate=2024-08-01T11%3A00Z", "headers": { "x-okapi-tenant": { "equalTo": "consortium" @@ -12,7 +48,43 @@ }, "response": { "status": 200, - "body": "{\"stats\": [{\"id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles, Prince of Wales\",\"headingNew\": \"Charles III, King\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"lbTotal\": 105,\"lbUpdated\": 55,\"lbFailed\": 50,\"shared\": false,\"metadata\": {\"startedAt\": \"2024-10-01T12:00:00Z\",\"completedAt\": \"2024-10-01T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Test\"}},{\"id\": \"500f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"DELETE\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles, Prince of Wales\",\"headingNew\": \"Charles III, King\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"111\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"lbTotal\": 105,\"lbUpdated\": 55,\"lbFailed\": 50,\"shared\": false,\"metadata\": {\"startedAt\": \"2024-10-01T12:00:00Z\",\"completedAt\": \"2024-09-01T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Admin\"}} ], \"next\": \"2024-08-01T12:00:00.000000Z\"}", + "body": "{\"stats\": [{\"id\": \"0b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"100\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"metadata\": {\"startedAt\": \"2024-08-01T11:00:00Z\",\"completedAt\": \"2024-08-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812333\",\"startedByUserFirstName\": \"Consortium\",\"startedByUserLastName\": \"Admin\"}}],\"next\": null}", + "headers": { + "Content-Type": "application/json" + } + } + }, + { + "request": { + "method": "GET", + "url": "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2025-02-14T00%3A00Z&toDate=2025-02-17T23%3A59%3A59.999999999Z", + "headers": { + "x-okapi-tenant": { + "equalTo": "college" + } + } + }, + "response": { + "status": 200, + "body": "{\"stats\": [{\"id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles III, King upd2\",\"headingNew\": \"Charles III, King upd3\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"metadata\": {\"startedAt\": \"2025-02-16T12:00:01Z\",\"completedAt\": \"2022-02-16T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Test\"}},{\"id\": \"500f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"n1234567\",\"naturalIdNew\": \"n1234567\",\"headingOld\": \"Charles III, King upd1\",\"headingNew\": \"Charles III, King upd2\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"111\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"metadata\": {\"startedAt\": \"2025-02-16T12:00:00Z\",\"completedAt\": \"2025-02-16T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Admin\"}} ], \"next\": \"2025-02-15T11:00:00.000000Z\"}", + "headers": { + "Content-Type": "application/json" + } + } + }, + { + "request": { + "method": "GET", + "url": "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2025-02-14T00%3A00Z&toDate=2025-02-15T11%3A00Z", + "headers": { + "x-okapi-tenant": { + "equalTo": "college" + } + } + }, + "response": { + "status": 200, + "body": "{\"stats\": [{\"id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\"authorityId\": \"f4d72275-fbca-44d0-9214-72647a812332\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"n12345678\",\"naturalIdNew\": \"n12345678\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"Charles III, King upd1\",\"headingTypeOld\": \"150\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"LC Name Authority file (LCNAF)\",\"metadata\": {\"startedAt\": \"2025-02-15T12:05:00Z\",\"completedAt\": \"2025-02-15T15:00:00Z\",\"startedByUserId\": \"c8f721bd-38ac-411d-82c8-a5902fb19deb\",\"startedByUserFirstName\": \"Folio\",\"startedByUserLastName\": \"Test\"}}], \"next\": null}", "headers": { "Content-Type": "application/json" } @@ -21,7 +93,7 @@ { "request": { "method": "GET", - "url": "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2024-01-01T00%3A00Z&toDate=2024-08-01T12%3A00Z", + "url": "/links/stats/authority?limit=2&action=UPDATE_HEADING&fromDate=2025-02-14T00%3A00Z&toDate=2025-02-17T23%3A59%3A59.999999999Z", "headers": { "x-okapi-tenant": { "equalTo": "consortium" @@ -30,7 +102,7 @@ }, "response": { "status": 200, - "body": "{\"stats\": [{\"id\": \"0b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"100\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"lbTotal\": 10,\"lbUpdated\": 10,\"lbFailed\": 0,\"shared\": true,\"metadata\": {\"startedAt\": \"2024-08-01T12:00:00Z\",\"completedAt\": \"2024-08-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812333\",\"startedByUserFirstName\": \"Consortium\",\"startedByUserLastName\": \"Admin\"}},{\"id\": \"1b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"110\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"lbTotal\": 10,\"lbUpdated\": 10,\"lbFailed\": 0,\"shared\": true,\"metadata\": {\"startedAt\": \"2024-08-01T12:00:00Z\",\"completedAt\": \"2024-07-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812333\",\"startedByUserLastName\": \"Consortium\"}},{\"id\": \"1b1e3760-f689-493e-a98e-9cc9dadb7e83\",\"authorityId\": \"c8f721bd-38ac-411d-82c8-a5902fb20deb\",\"action\": \"UPDATE_HEADING\",\"naturalIdOld\": \"mo34056\",\"naturalIdNew\": \"mo34056\",\"headingOld\": \"Charles III, King\",\"headingNew\": \"King Charles III\",\"headingTypeOld\": \"100\",\"headingTypeNew\": \"111\",\"sourceFileOld\": \"Not specified\",\"sourceFileNew\": \"Not specified\",\"lbTotal\": 10,\"lbUpdated\": 10,\"lbFailed\": 0,\"shared\": true,\"metadata\": {\"startedAt\": \"2024-08-01T12:00:00Z\",\"completedAt\": \"2024-07-01T15:00:00Z\",\"startedByUserId\": \"f4d72275-fbca-44d0-9214-72647a812334\",\"startedByUserLastName\": \"\",\"startedByUserFirstName\": null}}]}", + "body": "{\"stats\": []}", "headers": { "Content-Type": "application/json" } diff --git a/src/test/resources/output/authority_control/auth_heading_update.csv b/src/test/resources/output/authority_control/auth_heading_update.csv index d17d94d08..da4f81915 100644 --- a/src/test/resources/output/authority_control/auth_heading_update.csv +++ b/src/test/resources/output/authority_control/auth_heading_update.csv @@ -1,6 +1,6 @@ -Last updated,Original heading,New heading,Identifier,Original 1XX,New 1XX,Authority source file name,Number of bibliographic records linked,Updater -2023-10-01 12:00:00.000Z,"Charles, Prince of Wales","Charles III, King",n1234567,150,110,LC Name Authority file (LCNAF),105,"Admin, Diku" -2023-10-01 12:00:00.000Z,"Charles, Prince of Wales","Charles III, King",n1234567,150,110,LC Name Authority file (LCNAF),105,"Admin, Diku" -2023-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,100,Not specified,10,"Test, Folio" -2023-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,100,Not specified,10,Test -2023-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,100,Not specified,10,Unknown User \ No newline at end of file +Last updated,Original heading,New heading,Identifier,Original 1XX,New 1XX,Authority source file name,Updater +2023-10-01 12:00:00.000Z,"Charles, Prince of Wales","Charles III, King",n1234567,150,110,LC Name Authority file (LCNAF),"Admin, Diku" +2023-10-01 12:00:00.000Z,"Charles, Prince of Wales","Charles III, King",n1234567,150,110,LC Name Authority file (LCNAF),"Admin, Diku" +2023-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,100,Not specified,"Test, Folio" +2023-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,100,Not specified,Test +2023-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,100,Not specified,Unknown User diff --git a/src/test/resources/output/authority_control/auth_heading_update_consortium.csv b/src/test/resources/output/authority_control/auth_heading_update_consortium.csv index a47698265..930dd1902 100644 --- a/src/test/resources/output/authority_control/auth_heading_update_consortium.csv +++ b/src/test/resources/output/authority_control/auth_heading_update_consortium.csv @@ -1,6 +1,6 @@ -Last updated,Original heading,New heading,Identifier,Original 1XX,New 1XX,Authority source file name,Number of bibliographic records linked,Authority record type,Updater -2024-10-01 12:00:00.000Z,"Charles, Prince of Wales","Charles III, King",n1234567,150,110,LC Name Authority file (LCNAF),105,local,"Test, Folio" -2024-10-01 12:00:00.000Z,"Charles, Prince of Wales","Charles III, King",n1234567,150,111,LC Name Authority file (LCNAF),105,local,"Admin, Folio" -2024-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,100,Not specified,10,shared,"Admin, Consortium" -2024-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,110,Not specified,10,shared,Consortium -2024-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,111,Not specified,10,shared,Unknown User +Last updated,Original heading,New heading,Identifier,Original 1XX,New 1XX,Authority source file name,Authority record type,Updater +2024-10-01 12:00:01.000Z,"Charles, Prince of Wales","Charles III, King",n1234567,150,110,LC Name Authority file (LCNAF),local,"Test, Folio" +2024-10-01 12:00:00.000Z,"Charles, Prince of Wales","Charles III, King",n1234567,150,111,LC Name Authority file (LCNAF),local,"Admin, Folio" +2024-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,110,Not specified,shared,Consortium +2024-08-01 12:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,111,Not specified,shared,Unknown User +2024-08-01 11:00:00.000Z,"Charles III, King",King Charles III,mo34056,100,100,Not specified,shared,"Admin, Consortium" diff --git a/src/test/resources/output/authority_control/auth_heading_update_consortium_member_tenant.csv b/src/test/resources/output/authority_control/auth_heading_update_consortium_member_tenant.csv new file mode 100644 index 000000000..ca794fd63 --- /dev/null +++ b/src/test/resources/output/authority_control/auth_heading_update_consortium_member_tenant.csv @@ -0,0 +1,4 @@ +Last updated,Original heading,New heading,Identifier,Original 1XX,New 1XX,Authority source file name,Authority record type,Updater +2025-02-16 12:00:01.000Z,"Charles III, King upd2","Charles III, King upd3",n1234567,150,110,LC Name Authority file (LCNAF),local,"Test, Folio" +2025-02-16 12:00:00.000Z,"Charles III, King upd1","Charles III, King upd2",n1234567,150,111,LC Name Authority file (LCNAF),local,"Admin, Folio" +2025-02-15 12:05:00.000Z,"Charles III, King","Charles III, King upd1",n12345678,150,110,LC Name Authority file (LCNAF),local,"Test, Folio" diff --git a/src/test/resources/output/authority_control/auth_heading_update_empty.csv b/src/test/resources/output/authority_control/auth_heading_update_empty.csv index 2743772f9..d104f00da 100644 --- a/src/test/resources/output/authority_control/auth_heading_update_empty.csv +++ b/src/test/resources/output/authority_control/auth_heading_update_empty.csv @@ -1,2 +1,2 @@ -Last updated,Original heading,New heading,Identifier,Original 1XX,New 1XX,Authority source file name,Number of bibliographic records linked,Updater +Last updated,Original heading,New heading,Identifier,Original 1XX,New 1XX,Authority source file name,Updater No records found