Search in sources :

Example 1 with PieceCollection

use of org.folio.rest.acq.model.PieceCollection in project mod-orders by folio-org.

the class MockServer method handleGetPieces.

private void handleGetPieces(RoutingContext ctx) {
    logger.info("handleGetPieces got: " + ctx.request().path());
    String query = ctx.request().getParam("query");
    if (query.contains(ID_FOR_PIECES_INTERNAL_SERVER_ERROR)) {
        addServerRqRsData(HttpMethod.GET, PIECES_STORAGE, new JsonObject());
        serverResponse(ctx, 500, APPLICATION_JSON, Response.Status.INTERNAL_SERVER_ERROR.getReasonPhrase());
    } else {
        PieceCollection pieces;
        if (getMockEntries(PIECES_STORAGE, Piece.class).isPresent()) {
            pieces = new PieceCollection().withPieces(getMockEntries(PIECES_STORAGE, Piece.class).get());
            pieces.setTotalRecords(pieces.getPieces().size());
        } else {
            try {
                if (query.contains("poLineId==")) {
                    List<String> conditions = StreamEx.split(query, " or ").flatMap(s -> StreamEx.split(s, " and ")).toList();
                    String polId = EMPTY;
                    String status = EMPTY;
                    for (String condition : conditions) {
                        if (condition.startsWith("poLineId")) {
                            polId = condition.split("poLineId==")[1];
                        } else if (condition.startsWith("receivingStatus")) {
                            status = condition.split("receivingStatus==")[1];
                        }
                    }
                    logger.info("poLineId: " + polId);
                    logger.info("receivingStatus: " + status);
                    String path = PIECE_RECORDS_MOCK_DATA_PATH + String.format("pieceRecords-%s.json", polId);
                    pieces = new JsonObject(getMockData(path)).mapTo(PieceCollection.class);
                    // Filter piece records by receiving status
                    if (StringUtils.isNotEmpty(status)) {
                        Piece.ReceivingStatus receivingStatus = Piece.ReceivingStatus.fromValue(status);
                        pieces.getPieces().removeIf(piece -> receivingStatus != piece.getReceivingStatus());
                    }
                } else if (query.contains("id==")) {
                    pieces = new JsonObject(getMockData(PIECE_RECORDS_MOCK_DATA_PATH + "pieceRecordsCollection.json")).mapTo(PieceCollection.class);
                    // if (query.contains("id==")) {
                    List<String> pieceIds = extractIdsFromQuery(query);
                    pieces.getPieces().removeIf(piece -> !pieceIds.contains(piece.getId()));
                    // fix consistency with titles: the piece's title id should be the same as one of the titles ids
                    // returned for the piece's po line
                    pieces.getPieces().forEach(piece -> {
                        String poLineId = piece.getPoLineId();
                        List<Title> titlesForPoLine = getTitlesByPoLineIds(List.of(poLineId)).mapTo(TitleCollection.class).getTitles();
                        if (titlesForPoLine.size() > 0 && titlesForPoLine.stream().noneMatch(title -> title.getId().equals(piece.getTitleId())))
                            piece.setTitleId(titlesForPoLine.get(0).getId());
                    });
                } else {
                    pieces = new PieceCollection();
                }
                pieces.setTotalRecords(pieces.getPieces().size());
            } catch (Exception e) {
                pieces = new PieceCollection();
                pieces.setTotalRecords(0);
            }
        }
        JsonObject data = JsonObject.mapFrom(pieces);
        addServerRqRsData(HttpMethod.GET, PIECES_STORAGE, data);
        ctx.response().setStatusCode(200).putHeader(HttpHeaders.CONTENT_TYPE, APPLICATION_JSON).end(data.encodePrettily());
    }
}
Also used : Arrays(java.util.Arrays) TestConstants(org.folio.TestConstants) LISTED_PRINT_MONOGRAPH_PATH(org.folio.rest.impl.PurchaseOrdersApiTest.LISTED_PRINT_MONOGRAPH_PATH) HttpServer(io.vertx.core.http.HttpServer) Header(io.restassured.http.Header) HashBasedTable(com.google.common.collect.HashBasedTable) FUND_ID(org.folio.orders.utils.HelperUtils.FUND_ID) StringUtils(org.apache.commons.lang3.StringUtils) TransactionCollection(org.folio.rest.acq.model.finance.TransactionCollection) REQUESTS(org.folio.service.inventory.InventoryManager.REQUESTS) Matcher(java.util.regex.Matcher) HelperUtils.convertIdsToCqlQuery(org.folio.orders.utils.HelperUtils.convertIdsToCqlQuery) JsonObject(io.vertx.core.json.JsonObject) PURCHASE_ORDER_ID(org.folio.rest.impl.PurchaseOrdersApiTest.PURCHASE_ORDER_ID) Budget(org.folio.rest.acq.model.finance.Budget) REASON_FOR_CLOSURE(org.folio.rest.impl.crud.CrudTestEntities.REASON_FOR_CLOSURE) Ledger(org.folio.rest.acq.model.finance.Ledger) Fund(org.folio.rest.acq.model.finance.Fund) Title(org.folio.rest.acq.model.Title) ORGANIZATION_NOT_VENDOR(org.folio.rest.impl.PurchaseOrdersApiTest.ORGANIZATION_NOT_VENDOR) TestUtils.encodePrettily(org.folio.TestUtils.encodePrettily) INACTIVE_VENDOR_ID(org.folio.rest.impl.PurchaseOrdersApiTest.INACTIVE_VENDOR_ID) Logger(org.apache.logging.log4j.Logger) Assertions.fail(org.assertj.core.api.Assertions.fail) BUDGET_IS_INACTIVE(org.folio.rest.core.exceptions.ErrorCodes.BUDGET_IS_INACTIVE) TEXT_PLAIN(javax.ws.rs.core.MediaType.TEXT_PLAIN) VENDOR_WITH_BAD_CONTENT(org.folio.rest.impl.PurchaseOrdersApiTest.VENDOR_WITH_BAD_CONTENT) ACQUISITIONS_UNIT_ID(org.folio.service.ProtectionService.ACQUISITIONS_UNIT_ID) Transaction(org.folio.rest.acq.model.finance.Transaction) Supplier(java.util.function.Supplier) BudgetCollection(org.folio.rest.acq.model.finance.BudgetCollection) ArrayList(java.util.ArrayList) StringUtils.isNotEmpty(org.apache.commons.lang3.StringUtils.isNotEmpty) NONEXISTING_PO_NUMBER(org.folio.rest.impl.PoNumberApiTest.NONEXISTING_PO_NUMBER) Lists(com.google.common.collect.Lists) ExchangeRate(org.folio.rest.acq.model.finance.ExchangeRate) ITEMS_NOT_FOUND(org.folio.rest.impl.PurchaseOrdersApiTest.ITEMS_NOT_FOUND) SequenceNumbers(org.folio.rest.acq.model.SequenceNumbers) ExpenseClassCollection(org.folio.rest.acq.model.finance.ExpenseClassCollection) ONLY_NEW_HOLDING_EXIST_ID(org.folio.service.inventory.InventoryManagerTest.ONLY_NEW_HOLDING_EXIST_ID) INTERNAL_SERVER_ERROR(javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR) EXISTING_PO_NUMBER(org.folio.rest.impl.PoNumberApiTest.EXISTING_PO_NUMBER) Vertx(io.vertx.core.Vertx) IOException(java.io.IOException) BUDGET_NOT_FOUND_FOR_TRANSACTION(org.folio.rest.core.exceptions.ErrorCodes.BUDGET_NOT_FOUND_FOR_TRANSACTION) COMPOSITE_PO_LINES(org.folio.orders.utils.HelperUtils.COMPOSITE_PO_LINES) ExecutionException(java.util.concurrent.ExecutionException) JsonArray(io.vertx.core.json.JsonArray) DAYS(java.time.temporal.ChronoUnit.DAYS) IsbnUtil(org.folio.isbn.IsbnUtil) Piece(org.folio.rest.acq.model.Piece) BudgetExpenseClassCollection(org.folio.rest.acq.model.finance.BudgetExpenseClassCollection) TestUtils.getMinimalContentCompositePoLine(org.folio.TestUtils.getMinimalContentCompositePoLine) TestUtils.getMockAsJson(org.folio.TestUtils.getMockAsJson) AbstractHelper(org.folio.helper.AbstractHelper) NoSuchFileException(java.nio.file.NoSuchFileException) FUND_CANNOT_BE_PAID(org.folio.rest.core.exceptions.ErrorCodes.FUND_CANNOT_BE_PAID) Date(java.util.Date) DEFAULT_POLINE_LIMIT(org.folio.orders.utils.HelperUtils.DEFAULT_POLINE_LIMIT) Router(io.vertx.ext.web.Router) TimeoutException(java.util.concurrent.TimeoutException) RoutingContext(io.vertx.ext.web.RoutingContext) BodyHandler(io.vertx.ext.web.handler.BodyHandler) SequenceNumber(org.folio.rest.acq.model.SequenceNumber) OrderInvoiceRelationshipCollection(org.folio.rest.acq.model.OrderInvoiceRelationshipCollection) NEW_LOCATION_ID(org.folio.service.inventory.InventoryManagerTest.NEW_LOCATION_ID) InvoiceLineCollection(org.folio.rest.acq.model.invoice.InvoiceLineCollection) TestUtils.getMinimalContentCompositePurchaseOrder(org.folio.TestUtils.getMinimalContentCompositePurchaseOrder) APPLICATION_JSON(javax.ws.rs.core.MediaType.APPLICATION_JSON) HOLDING_INSTANCE_ID_2_HOLDING(org.folio.service.inventory.InventoryManagerTest.HOLDING_INSTANCE_ID_2_HOLDING) OLD_LOCATION_ID(org.folio.service.inventory.InventoryManagerTest.OLD_LOCATION_ID) LEDGER_NOT_FOUND_FOR_TRANSACTION(org.folio.rest.core.exceptions.ErrorCodes.LEDGER_NOT_FOUND_FOR_TRANSACTION) HttpHeaders(io.vertx.core.http.HttpHeaders) UUID(java.util.UUID) Instant(java.time.Instant) Tag(org.folio.rest.acq.model.tag.Tag) Collectors(java.util.stream.Collectors) FUND_ENCUMBRANCE_ERROR(org.folio.rest.impl.PurchaseOrdersApiTest.FUND_ENCUMBRANCE_ERROR) Objects(java.util.Objects) List(java.util.List) Response(javax.ws.rs.core.Response) ACTIVE_VENDOR_ID(org.folio.rest.impl.PurchaseOrdersApiTest.ACTIVE_VENDOR_ID) StreamEx(one.util.streamex.StreamEx) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) NON_EXIST_VENDOR_ID(org.folio.rest.impl.PurchaseOrdersApiTest.NON_EXIST_VENDOR_ID) PieceCollection(org.folio.rest.acq.model.PieceCollection) MOD_VENDOR_INTERNAL_ERROR_ID(org.folio.rest.impl.PurchaseOrdersApiTest.MOD_VENDOR_INTERNAL_ERROR_ID) HttpException(org.folio.rest.core.exceptions.HttpException) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) OKAPI_HEADER_TENANT(org.folio.rest.RestVerticle.OKAPI_HEADER_TENANT) FiscalYear(org.folio.rest.acq.model.finance.FiscalYear) TestUtils.getMockData(org.folio.TestUtils.getMockData) LedgerCollection(org.folio.rest.acq.model.finance.LedgerCollection) ITEM_PURCHASE_ORDER_LINE_IDENTIFIER(org.folio.service.inventory.InventoryManager.ITEM_PURCHASE_ORDER_LINE_IDENTIFIER) OrderTransactionSummary(org.folio.rest.acq.model.finance.OrderTransactionSummary) TestUtils.getTitle(org.folio.TestUtils.getTitle) Encumbrance(org.folio.rest.acq.model.finance.Encumbrance) EMPTY(org.apache.commons.lang3.StringUtils.EMPTY) ITEMS(org.folio.service.inventory.InventoryManager.ITEMS) Iterator(java.util.Iterator) PREFIX(org.folio.rest.impl.crud.CrudTestEntities.PREFIX) org.folio.rest.jaxrs.model(org.folio.rest.jaxrs.model) TimeUnit(java.util.concurrent.TimeUnit) Error(org.folio.rest.jaxrs.model.Error) SUFFIX(org.folio.rest.impl.crud.CrudTestEntities.SUFFIX) Collectors.toList(java.util.stream.Collectors.toList) ID_FOR_PRINT_MONOGRAPH_ORDER(org.folio.rest.impl.PurchaseOrdersApiTest.ID_FOR_PRINT_MONOGRAPH_ORDER) HttpMethod(io.vertx.core.http.HttpMethod) HelperUtils.calculateEstimatedPrice(org.folio.orders.utils.HelperUtils.calculateEstimatedPrice) HttpStatus(org.folio.HttpStatus) RECEIVING_HISTORY_PURCHASE_ORDER_ID(org.folio.rest.impl.ReceivingHistoryApiTest.RECEIVING_HISTORY_PURCHASE_ORDER_ID) FundCollection(org.folio.rest.acq.model.finance.FundCollection) InvoiceLine(org.folio.rest.acq.model.invoice.InvoiceLine) Table(com.google.common.collect.Table) LogManager(org.apache.logging.log4j.LogManager) TitleCollection(org.folio.rest.acq.model.TitleCollection) Collections(java.util.Collections) ResourcePathResolver(org.folio.orders.utils.ResourcePathResolver) ORDER_DELETE_ERROR_TENANT(org.folio.rest.impl.PurchaseOrdersApiTest.ORDER_DELETE_ERROR_TENANT) NON_EXISTED_NEW_HOLDING_ID(org.folio.service.inventory.InventoryManagerTest.NON_EXISTED_NEW_HOLDING_ID) PieceCollection(org.folio.rest.acq.model.PieceCollection) Piece(org.folio.rest.acq.model.Piece) JsonObject(io.vertx.core.json.JsonObject) ArrayList(java.util.ArrayList) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) NoSuchFileException(java.nio.file.NoSuchFileException) TimeoutException(java.util.concurrent.TimeoutException) HttpException(org.folio.rest.core.exceptions.HttpException)

Example 2 with PieceCollection

use of org.folio.rest.acq.model.PieceCollection in project mod-orders by folio-org.

the class CheckinReceivingApiTest method verifyProperQuantityOfHoldingsCreated.

private void verifyProperQuantityOfHoldingsCreated(ReceivingCollection receivingRq) throws IOException {
    Set<String> expectedHoldings = new HashSet<>();
    // get processed poline
    PoLineCollection poLineCollection = new JsonObject(getMockData(POLINES_COLLECTION)).mapTo(PoLineCollection.class);
    PoLine poline = poLineCollection.getPoLines().stream().filter(poLine -> poLine.getId().equals(receivingRq.getToBeReceived().get(0).getPoLineId())).findFirst().get();
    CompositePoLine compPOL = PoLineCommonUtil.convertToCompositePoLine(poline);
    // get processed pieces for receiving
    PieceCollection pieces = new JsonObject(getMockData(PIECE_RECORDS_MOCK_DATA_PATH + "pieceRecordsCollection.json")).mapTo(PieceCollection.class);
    List<String> pieceIds = new ArrayList<>();
    receivingRq.getToBeReceived().get(0).getReceivedItems().forEach(recItem -> pieceIds.add(recItem.getPieceId()));
    // get processed pieces from mock collection
    pieces.getPieces().removeIf(piece -> !pieceIds.contains(piece.getId()));
    for (org.folio.rest.acq.model.Piece piece : pieces.getPieces()) {
        for (ReceivedItem receivedItem : receivingRq.getToBeReceived().get(0).getReceivedItems()) {
            if (receivedItem.getPieceId().equals(piece.getId()) && !receivedItem.getLocationId().equals(piece.getLocationId()) && isHoldingsUpdateRequired(piece, compPOL)) {
                expectedHoldings.add(getInstanceId(poline) + receivedItem.getLocationId());
            }
        }
    }
    assertEquals(expectedHoldings.size(), getCreatedHoldings().size());
}
Also used : PieceCollection(org.folio.rest.acq.model.PieceCollection) ArrayList(java.util.ArrayList) JsonObject(io.vertx.core.json.JsonObject) CompositePoLine(org.folio.rest.jaxrs.model.CompositePoLine) TestUtils.getMinimalContentCompositePoLine(org.folio.TestUtils.getMinimalContentCompositePoLine) Matchers.emptyString(org.hamcrest.Matchers.emptyString) PoLineCollection(org.folio.rest.jaxrs.model.PoLineCollection) ReceivedItem(org.folio.rest.jaxrs.model.ReceivedItem) CompositePoLine(org.folio.rest.jaxrs.model.CompositePoLine) TestUtils.getMinimalContentCompositePoLine(org.folio.TestUtils.getMinimalContentCompositePoLine) PoLine(org.folio.rest.jaxrs.model.PoLine) HashSet(java.util.HashSet)

Aggregations

JsonObject (io.vertx.core.json.JsonObject)2 ArrayList (java.util.ArrayList)2 TestUtils.getMinimalContentCompositePoLine (org.folio.TestUtils.getMinimalContentCompositePoLine)2 PieceCollection (org.folio.rest.acq.model.PieceCollection)2 HashBasedTable (com.google.common.collect.HashBasedTable)1 Lists (com.google.common.collect.Lists)1 Table (com.google.common.collect.Table)1 Header (io.restassured.http.Header)1 Vertx (io.vertx.core.Vertx)1 HttpHeaders (io.vertx.core.http.HttpHeaders)1 HttpMethod (io.vertx.core.http.HttpMethod)1 HttpServer (io.vertx.core.http.HttpServer)1 JsonArray (io.vertx.core.json.JsonArray)1 Router (io.vertx.ext.web.Router)1 RoutingContext (io.vertx.ext.web.RoutingContext)1 BodyHandler (io.vertx.ext.web.handler.BodyHandler)1 IOException (java.io.IOException)1 NoSuchFileException (java.nio.file.NoSuchFileException)1 Instant (java.time.Instant)1 DAYS (java.time.temporal.ChronoUnit.DAYS)1