-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MODTLR-12 Create a client for DCB transaction creation (#15)
* MODTLR-12 Initial implementation * MODTLR-12 Rename endpoint to be consistent * MODTLR-12 Rename copied schemas * MODTLR-12 Rename component in yaml * MODTLR-12 Fix code smells in unit tests * MODTLR-12 Change schema, response type * MODTLR-12 Add transaction ID
- Loading branch information
1 parent
74109eb
commit 63ffa5e
Showing
9 changed files
with
147 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package org.folio.client.feign; | ||
|
||
import org.folio.domain.dto.DcbTransaction; | ||
import org.folio.domain.dto.TransactionStatusResponse; | ||
import org.folio.spring.config.FeignClientConfiguration; | ||
import org.springframework.cloud.openfeign.FeignClient; | ||
import org.springframework.web.bind.annotation.PathVariable; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
|
||
@FeignClient(name = "dcb", url = "${folio.okapi-url}", configuration = FeignClientConfiguration.class) | ||
public interface DcbClient { | ||
|
||
@PostMapping("/ecs-tlr-transactions/{dcbTransactionId}") | ||
TransactionStatusResponse createDcbTransaction(@PathVariable String dcbTransactionId, | ||
@RequestBody DcbTransaction dcbTransaction); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
DcbItem: | ||
description: Item metadata required for the transaction | ||
type: object | ||
properties: | ||
id: | ||
description: The unique item identifier | ||
$ref: "uuid.yaml" | ||
title: | ||
description: The title of the item that has been requested | ||
type: string | ||
barcode: | ||
description: The barcode of the item as specified in the lending library | ||
type: string | ||
materialType: | ||
description: The “hub-normalized” form of the item item type, used in the circulation rules for determining the correct loan policy. | ||
type: string | ||
lendingLibraryCode: | ||
description: The code which identifies the lending library | ||
type: string |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
DcbPatron: | ||
description: Patron metadata required for the transaction | ||
type: object | ||
properties: | ||
id: | ||
description: The unique identifier for the patron making the request as known in the requesting library | ||
$ref: "uuid.yaml" | ||
group: | ||
description: The patron group associated with the requesting patron | ||
type: string | ||
barcode: | ||
description: The barcode of the patron | ||
type: string |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
DcbPickup: | ||
description: Pickup Location metadata required for the pickup service point | ||
type: object | ||
properties: | ||
libraryCode: | ||
description: The code which identifies the pickup library | ||
type: string | ||
servicePointId: | ||
description: UUID of the pickup service point | ||
type: string | ||
servicePointName: | ||
description: The name of the pickup service point | ||
type: string |
15 changes: 15 additions & 0 deletions
15
src/main/resources/swagger.api/schemas/dcbTransaction.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
DcbTransaction: | ||
type: object | ||
properties: | ||
item: | ||
$ref: 'dcbItem.yaml#/DcbItem' | ||
role: | ||
type: string | ||
enum: | ||
- LENDER | ||
- BORROWER | ||
- PICKUP | ||
- BORROWING-PICKUP | ||
requestId: | ||
description: ID of the existing request | ||
$ref: "uuid.yaml" |
16 changes: 16 additions & 0 deletions
16
src/main/resources/swagger.api/schemas/transactionStatus.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
TransactionStatus: | ||
type: object | ||
properties: | ||
status: | ||
type: string | ||
enum: | ||
- CREATED #Created by DCB | ||
- OPEN #Item checked in at lending library | ||
- AWAITING_PICKUP #Item checked in at borrowing/Pickup library | ||
- ITEM_CHECKED_OUT #Item checkout by patron. Request is fulfilled and loan is created | ||
- ITEM_CHECKED_IN #Item returned to borrowing/Pickup library | ||
- CLOSED #Item returned to lending library | ||
- CANCELLED #Request was cancelled | ||
- ERROR #Error occurred | ||
message: | ||
type: string |
4 changes: 4 additions & 0 deletions
4
src/main/resources/swagger.api/schemas/transactionStatusResponse.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
TransactionStatusResponse: | ||
allOf: | ||
- $ref: 'transactionStatus.yaml#/TransactionStatus' | ||
- $ref: 'dcbTransaction.yaml#/DcbTransaction' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package org.folio.client; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
import static org.junit.jupiter.api.Assertions.assertNotNull; | ||
import static org.mockito.Mockito.when; | ||
|
||
import java.util.UUID; | ||
|
||
import org.folio.client.feign.DcbClient; | ||
import org.folio.domain.dto.DcbTransaction; | ||
import org.folio.domain.dto.TransactionStatusResponse; | ||
import org.junit.jupiter.api.Test; | ||
import org.junit.jupiter.api.extension.ExtendWith; | ||
import org.mockito.Mock; | ||
import org.mockito.junit.jupiter.MockitoExtension; | ||
|
||
@ExtendWith(MockitoExtension.class) | ||
class DcbClientTest { | ||
@Mock | ||
private DcbClient dcbClient; | ||
|
||
@Test | ||
void canCreateDcbTransaction() { | ||
String requestId = UUID.randomUUID().toString(); | ||
String dcbTransactionId = UUID.randomUUID().toString(); | ||
DcbTransaction dcbTransaction = new DcbTransaction() | ||
.role(DcbTransaction.RoleEnum.BORROWER) | ||
.requestId(requestId); | ||
TransactionStatusResponse transactionStatusResponse = new TransactionStatusResponse() | ||
.status(TransactionStatusResponse.StatusEnum.CANCELLED) | ||
.message("test message") | ||
.item(dcbTransaction.getItem()) | ||
.role(TransactionStatusResponse.RoleEnum.BORROWER) | ||
.requestId(requestId); | ||
when(dcbClient.createDcbTransaction(dcbTransactionId, dcbTransaction)) | ||
.thenReturn(transactionStatusResponse); | ||
var response = dcbClient.createDcbTransaction(dcbTransactionId, | ||
dcbTransaction); | ||
assertNotNull(response); | ||
assertEquals(TransactionStatusResponse.RoleEnum.BORROWER, response.getRole()); | ||
assertEquals(requestId, response.getRequestId()); | ||
} | ||
} |