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

Bugfix release 1.2.3 #122

Merged
merged 40 commits into from
Dec 2, 2024
Merged
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
b727da7
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Feb 18, 2024
240830a
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Feb 20, 2024
6f456c2
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Feb 23, 2024
9486870
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 4, 2024
3f9d4c4
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 4, 2024
2f2a8ca
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 4, 2024
67d5ddd
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 4, 2024
308262c
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 7, 2024
ae1c381
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 7, 2024
a8c3f84
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 7, 2024
0ff140d
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 7, 2024
3f9d6ff
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 11, 2024
4ca665c
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 12, 2024
758246a
Update src/main/java/org/folio/dcb/service/impl/EcsRequestTransaction…
MagzhanArtykov Mar 13, 2024
2426147
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 15, 2024
aea378c
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 15, 2024
97644bb
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 15, 2024
a04fc14
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 18, 2024
2c0e912
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 18, 2024
44fb716
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 18, 2024
d293c44
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 18, 2024
4785c92
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 18, 2024
dce3ca0
MODDCB-90 Accept existing circulation request ID
MagzhanArtykov Mar 18, 2024
3851b69
[MODDCB-105] Accept existing circulation request ID (borrowing trans…
MagzhanArtykov Jul 5, 2024
3c7e748
MODDCB-111: Allow manual transaction status change CREATED -> OPEN (#85)
OleksandrVidinieiev Jul 8, 2024
73436cc
MODDCB-117 ecsRequestPhase to moddcb circulation request schema
MagzhanArtykov Aug 7, 2024
4ff843b
MODDCB-117 ecsRequestPhase to moddcb circulation request schema
MagzhanArtykov Aug 7, 2024
bed4ab8
MODDCB-117 ecsRequestPhase to moddcb circulation request schema
MagzhanArtykov Aug 8, 2024
f8618a7
MODDCB-117 ecsRequestPhase to moddcb circulation request schema
MagzhanArtykov Aug 9, 2024
1d6ff53
MODDCB-117 ecsRequestPhase to moddcb circulation request schema
MagzhanArtykov Aug 9, 2024
7da92e8
MODDCB-117 ecsRequestPhase to moddcb circulation request schema
MagzhanArtykov Aug 9, 2024
b1d2af6
MODTLR-62 add position to request schema
roman-barannyk Aug 30, 2024
fd8d91f
MODDCB-124 Remove duplicate permissions
OleksandrVidinieiev Nov 4, 2024
20322f6
MODDCB-124 Fix indentation
OleksandrVidinieiev Nov 4, 2024
7de9854
MODDCB-124 Fix formatting
OleksandrVidinieiev Nov 4, 2024
259c600
MODDCB-153 Post-cherry-pick fix
alexanderkurash Dec 2, 2024
7ab54f0
Update NEWS
alexanderkurash Dec 2, 2024
9b20d5a
MODDCB-153 Post-cherry-pick fix #2
alexanderkurash Dec 2, 2024
b8ca4be
[maven-release-plugin] prepare release v1.2.3
alexanderkurash Dec 2, 2024
bccd028
[maven-release-plugin] prepare for next development iteration
alexanderkurash Dec 2, 2024
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
Prev Previous commit
Next Next commit
MODDCB-90 Accept existing circulation request ID
(cherry picked from commit 3ad3189)
MagzhanArtykov authored and alexanderkurash committed Dec 2, 2024
commit 308262c6963e3d69d6114d5bf13a82ce9b723094
Original file line number Diff line number Diff line change
@@ -4,8 +4,6 @@
import lombok.extern.log4j.Log4j2;
import org.folio.dcb.domain.dto.DcbTransaction;
import org.folio.dcb.domain.entity.TransactionAuditEntity;
import org.folio.dcb.domain.entity.TransactionEntity;
import org.folio.dcb.domain.mapper.TransactionMapper;
import org.folio.dcb.repository.TransactionAuditRepository;
import org.folio.dcb.service.TransactionAuditService;
import org.springframework.stereotype.Service;
@@ -20,7 +18,6 @@ public class TransactionAuditServiceImpl implements TransactionAuditService {
private static final String DUPLICATE_ERROR_ACTION = "DUPLICATE_ERROR";
private static final String DUPLICATE_ERROR_TRANSACTION_ID = "-1";

private final TransactionMapper transactionMapper;
private final TransactionAuditRepository transactionAuditRepository;
@Override
public void logErrorIfTransactionAuditExists(String dcbTransactionId, String errorMsg) {
@@ -44,8 +41,7 @@ public void logErrorIfTransactionAuditExists(String dcbTransactionId, String err
@Override
public void logErrorIfTransactionAuditNotExists(String dcbTransactionId, DcbTransaction dcbTransaction, String errorMsg) {
TransactionAuditEntity auditExisting = transactionAuditRepository.findLatestTransactionAuditEntityByDcbTransactionId(dcbTransactionId).orElse(null);
TransactionEntity transactionMapped = transactionMapper.mapToEntity(dcbTransactionId, dcbTransaction);
TransactionAuditEntity auditError = generateTrnAuditEntityByTrnEntityWithError(dcbTransactionId, transactionMapped, errorMsg);
TransactionAuditEntity auditError = generateTrnAuditEntityByTrnEntityWithError(dcbTransactionId, dcbTransaction, errorMsg);

if (auditExisting != null) {
log.debug("logTheErrorForNotExistedTransactionAudit:: dcbTransactionId = {}, dcbTransaction = {}, err = {}", dcbTransactionId, dcbTransaction, errorMsg);
@@ -68,7 +64,7 @@ private TransactionAuditEntity generateTrnAuditEntityFromTheFoundOneWithError(Tr
return auditError;
}

private TransactionAuditEntity generateTrnAuditEntityByTrnEntityWithError(String dcbTransactionId, TransactionEntity trnE, String errorMsg) {
private TransactionAuditEntity generateTrnAuditEntityByTrnEntityWithError(String dcbTransactionId, DcbTransaction trnE, String errorMsg) {
String errorMessage = String.format("dcbTransactionId = %s; dcb transaction content = %s; error message = %s.", dcbTransactionId, trnE.toString(), errorMsg);

TransactionAuditEntity auditError = new TransactionAuditEntity();
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package org.folio.dcb.controller;

import org.folio.dcb.domain.entity.TransactionAuditEntity;
import org.folio.dcb.repository.TransactionAuditRepository;
import org.folio.dcb.repository.TransactionRepository;
import org.folio.spring.service.SystemUserScopedExecutionService;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.LENDER;
import static org.folio.dcb.utils.EntityUtils.DCB_TRANSACTION_ID;
import static org.folio.dcb.utils.EntityUtils.createEcsRequestTransactionByRole;
import static org.hamcrest.Matchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

public class EcsRequestTransactionsApiControllerTest extends BaseIT {

private static final String TRANSACTION_AUDIT_DUPLICATE_ERROR_ACTION = "DUPLICATE_ERROR";
private static final String DUPLICATE_ERROR_TRANSACTION_ID = "-1";

@Autowired
private TransactionRepository transactionRepository;
@Autowired
private TransactionAuditRepository transactionAuditRepository;
@Autowired
private SystemUserScopedExecutionService systemUserScopedExecutionService;

@Test
void createLendingEcsRequestTest() throws Exception {
removeExistedTransactionFromDbIfSoExists();

this.mockMvc.perform(
post("/ecs-request-transactions/" + DCB_TRANSACTION_ID)
.content(asJsonString(createEcsRequestTransactionByRole(LENDER)))
.headers(defaultHeaders())
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isCreated());

//Trying to create another transaction with same transaction id
this.mockMvc.perform(
post("/ecs-request-transactions/" + DCB_TRANSACTION_ID)
.content(asJsonString(createEcsRequestTransactionByRole(LENDER)))
.headers(defaultHeaders())
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON))
.andExpectAll(status().is4xxClientError(),
jsonPath("$.errors[0].code", is("DUPLICATE_ERROR")));

// check for DUPLICATE_ERROR propagated into transactions_audit.
systemUserScopedExecutionService.executeAsyncSystemUserScoped(
TENANT,
() -> {
TransactionAuditEntity auditExisting = transactionAuditRepository
.findLatestTransactionAuditEntityByDcbTransactionId(DCB_TRANSACTION_ID)
.orElse(null);
Assertions.assertNotNull(auditExisting);
Assertions.assertNotEquals(TRANSACTION_AUDIT_DUPLICATE_ERROR_ACTION, auditExisting.getAction());
Assertions.assertNotEquals(DUPLICATE_ERROR_TRANSACTION_ID, auditExisting.getTransactionId()); }
);
}

private void removeExistedTransactionFromDbIfSoExists() {
systemUserScopedExecutionService.executeAsyncSystemUserScoped(TENANT, () -> {
if (transactionRepository.existsById(DCB_TRANSACTION_ID)){
transactionRepository.deleteById(DCB_TRANSACTION_ID);
}
});
}
}
9 changes: 9 additions & 0 deletions src/test/java/org/folio/dcb/utils/EntityUtils.java
Original file line number Diff line number Diff line change
@@ -60,6 +60,7 @@ public class EntityUtils {
public static String DCB_TYPE_USER_ID = "910c512c-ebc5-40c6-96a5-a20bfd81e154";
public static String EXISTED_INVENTORY_ITEM_BARCODE = "INVENTORY_ITEM";
public static String PATRON_TYPE_USER_ID = "18c1741d-e678-4c8e-9fe7-cfaeefab5eea";
public static String REQUEST_ID = "398501a2-5c97-4ba6-9ee7-d1cd6433cb98";

public static DcbTransaction createDcbTransactionByRole(DcbTransaction.RoleEnum role) {
return DcbTransaction.builder()
@@ -74,6 +75,14 @@ public static DcbTransaction createDcbTransactionByRole(DcbTransaction.RoleEnum
.build();
}

public static DcbTransaction createEcsRequestTransactionByRole(DcbTransaction.RoleEnum role) {
return DcbTransaction.builder()
.requestId(REQUEST_ID)
.role(role)
.pickup(createDcbPickup())
.build();
}

public static org.folio.dcb.domain.dto.ServicePointRequest createServicePointRequest() {
return org.folio.dcb.domain.dto.ServicePointRequest.builder()
.id(PICKUP_SERVICE_POINT_ID)
17 changes: 17 additions & 0 deletions src/test/resources/mappings/requests.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"mappings": [
{
"request": {
"method": "GET",
"url": "/request-storage/requests/398501a2-5c97-4ba6-9ee7-d1cd6433cb98"
},
"response": {
"status": 200,
"body": "{\n \"id\" : \"05f09b87-9022-4036-a94b-3dca1bc11f70\",\n \"requestLevel\" : \"Item\",\n \"requestType\" : \"Page\",\n \"requestDate\" : \"2024-03-07T13:54:08.655+00:00\",\n \"requesterId\" : \"2205005b-ca51-4a04-87fd-938eefa8f6de\",\n \"instanceId\" : \"5bf370e0-8cca-4d9c-82e4-5170ab2a0a39\",\n \"holdingsRecordId\" : \"e3ff6133-b9a2-4d4c-a1c9-dc1867d4df19\",\n \"itemId\" : \"100d10bf-2f06-4aa0-be15-0b95b2d9f9e3\",\n \"status\" : \"Open - Not yet filled\",\n \"position\" : 1,\n \"instance\" : {\n \"title\" : \"A semantic web primer\",\n \"identifiers\" : [ {\n \"identifierTypeId\" : \"8261054f-be78-422d-bd51-4ed9f33c3422\",\n \"value\" : \"0262012103\"\n }, {\n \"identifierTypeId\" : \"8261054f-be78-422d-bd51-4ed9f33c3422\",\n \"value\" : \"9780262012102\"\n }, {\n \"identifierTypeId\" : \"c858e4f2-2b6b-4385-842b-60732ee14abb\",\n \"value\" : \"2003065165\"\n } ],\n \"contributorNames\" : [ {\n \"name\" : \"Antoniou, Grigoris\"\n }, {\n \"name\" : \"Van Harmelen, Frank\"\n } ],\n \"publication\" : [ {\n \"publisher\" : \"MIT Press\",\n \"place\" : \"Cambridge, Mass. \",\n \"dateOfPublication\" : \"c2004\",\n \"role\" : \"Publisher\"\n } ]\n },\n \"item\" : {\n \"barcode\" : \"90000\",\n \"location\" : {\n \"name\" : \"Annex\",\n \"libraryName\" : \"Datalogisk Institut\",\n \"code\" : \"KU/CC/DI/A\"\n },\n \"enumeration\" : \"\",\n \"status\" : \"Paged\",\n \"callNumber\" : \"TK5105.88815 . A58 2004 FT MEADE\",\n \"callNumberComponents\" : {\n \"callNumber\" : \"TK5105.88815 . A58 2004 FT MEADE\"\n }\n },\n \"requester\" : {\n \"lastName\" : \"rick\",\n \"firstName\" : \"psych\",\n \"barcode\" : \"123\",\n \"patronGroup\" : {\n \"id\" : \"3684a786-6671-4268-8ed0-9db82ebca60b\",\n \"group\" : \"staff\",\n \"desc\" : \"Staff Member\"\n },\n \"patronGroupId\" : \"3684a786-6671-4268-8ed0-9db82ebca60b\"\n },\n \"fulfillmentPreference\" : \"Hold Shelf\",\n \"pickupServicePointId\" : \"3a40852d-49fd-4df2-a1f9-6e2641a6e91f\",\n \"metadata\" : {\n \"createdDate\" : \"2024-03-07T13:54:13.484+00:00\",\n \"createdByUserId\" : \"5600bae3-4ca8-42dd-bef5-4502aaea6dc7\",\n \"updatedDate\" : \"2024-03-07T13:54:14.768+00:00\",\n \"updatedByUserId\" : \"5600bae3-4ca8-42dd-bef5-4502aaea6dc7\"\n },\n \"pickupServicePoint\" : {\n \"name\" : \"Circ Desk 1\",\n \"code\" : \"cd1\",\n \"discoveryDisplayName\" : \"Circulation Desk -- Hallway\",\n \"description\" : null,\n \"shelvingLagTime\" : null,\n \"pickupLocation\" : true\n }\n }",
"headers": {
"Content-Type": "application/json"
}
}
}
]
}