From 2b3239ccb114cb9117c4bae2780846a5de5e8e74 Mon Sep 17 00:00:00 2001 From: EJ Mercado Date: Tue, 14 Jul 2020 20:54:30 +0800 Subject: [PATCH] feat: made voidTransportRequest --- .../fulfillment-inbound-shipment/codec.ts | 12 ++++++++++ .../fulfillment-inbound-shipment.ts | 23 +++++++++++++++++++ .../fulfillment-inbound-shipment/type.ts | 17 ++++++-------- .../fulfillment-inbound-shipment.test.ts.snap | 17 ++++++++++++++ 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/src/sections/fulfillment-inbound-shipment/codec.ts b/src/sections/fulfillment-inbound-shipment/codec.ts index 92740bfd..229d3890 100644 --- a/src/sections/fulfillment-inbound-shipment/codec.ts +++ b/src/sections/fulfillment-inbound-shipment/codec.ts @@ -417,3 +417,15 @@ export const ConfirmTransportRequestResponse = Codec.interface({ ConfirmTransportRequestResult: ConfirmTransportRequest, }), }) + +const VoidTransportRequest = Codec.interface({ + TransportResult, +}) + +export type VoidTransportRequest = GetInterface + +export const VoidTransportRequestResponse = Codec.interface({ + VoidTransportRequestResponse: Codec.interface({ + VoidTransportRequestResult: VoidTransportRequest, + }), +}) diff --git a/src/sections/fulfillment-inbound-shipment/fulfillment-inbound-shipment.ts b/src/sections/fulfillment-inbound-shipment/fulfillment-inbound-shipment.ts index 52c21031..7c52eabf 100644 --- a/src/sections/fulfillment-inbound-shipment/fulfillment-inbound-shipment.ts +++ b/src/sections/fulfillment-inbound-shipment/fulfillment-inbound-shipment.ts @@ -29,6 +29,8 @@ import { UpdateInboundShipment, UpdateInboundShipmentParameters, UpdateInboundShipmentResponse, + VoidTransportRequest, + VoidTransportRequestResponse, } from './codec' import { canonicalizeParametersCreateInboUpdateundShipmentPlan, @@ -46,6 +48,7 @@ import { GetPrepInstructionsForSKUParameters, GetTransportContentParameters, PutTransportContentParameters, + VoidTransportRequestParameters, } from './type' const FULFILLMENT_INBOUND_SHIPMENT_API_VERSION = '2010-10-01' @@ -53,6 +56,26 @@ const FULFILLMENT_INBOUND_SHIPMENT_API_VERSION = '2010-10-01' export class FulfillmentInboundShipment { constructor(private httpClient: HttpClient) {} + async voidTransportRequest( + parameters: VoidTransportRequestParameters, + ): Promise<[VoidTransportRequest, RequestMeta]> { + const [response, meta] = await this.httpClient.request('POST', { + resource: Resource.FulfillmentInboundShipment, + version: FULFILLMENT_INBOUND_SHIPMENT_API_VERSION, + action: 'VoidTransportRequest', + parameters: { + ShipmentId: parameters.ShipmentId, + }, + }) + + return VoidTransportRequestResponse.decode(response).caseOf({ + Right: (x) => [x.VoidTransportRequestResponse.VoidTransportRequestResult, meta], + Left: (error) => { + throw new ParsingError(error) + }, + }) + } + async confirmTransportRequest( parameters: ConfirmTransportRequestParameters, ): Promise<[ConfirmTransportRequest, RequestMeta]> { diff --git a/src/sections/fulfillment-inbound-shipment/type.ts b/src/sections/fulfillment-inbound-shipment/type.ts index cba62a8e..b9b7f139 100644 --- a/src/sections/fulfillment-inbound-shipment/type.ts +++ b/src/sections/fulfillment-inbound-shipment/type.ts @@ -188,9 +188,7 @@ export interface CreateInboundShipmentParameters { InboundShipmentItems: InboundShipmentItem[] } -export interface GetPreorderInfoParameters { - ShipmentId: string -} +export type GetPreorderInfoParameters = SingleShipmentIdParameters export interface ConfirmPreorderParameters { ShipmentId: string @@ -363,14 +361,13 @@ export const canonicalizePutTransportContentParameters = ( } } -export interface EstimateTransportRequestParameters { +interface SingleShipmentIdParameters { ShipmentId: string } +export type EstimateTransportRequestParameters = SingleShipmentIdParameters -export interface GetTransportContentParameters { - ShipmentId: string -} +export type GetTransportContentParameters = SingleShipmentIdParameters -export interface ConfirmTransportRequestParameters { - ShipmentId: string -} +export type ConfirmTransportRequestParameters = SingleShipmentIdParameters + +export type VoidTransportRequestParameters = SingleShipmentIdParameters diff --git a/test/unit/__snapshots__/fulfillment-inbound-shipment.test.ts.snap b/test/unit/__snapshots__/fulfillment-inbound-shipment.test.ts.snap index b841948a..d21cf1d6 100644 --- a/test/unit/__snapshots__/fulfillment-inbound-shipment.test.ts.snap +++ b/test/unit/__snapshots__/fulfillment-inbound-shipment.test.ts.snap @@ -383,3 +383,20 @@ Array [ }, ] `; + +exports[`fulfillmentInboundShipment voidTransportRequest returns the transport result if voiding is succesful 1`] = ` +Array [ + Object { + "TransportResult": Object { + "TransportStatus": "VOIDING", + }, + }, + Object { + "quotaMax": 1000, + "quotaRemaining": 999, + "quotaResetOn": 2020-04-06T10:22:23.582Z, + "requestId": "0", + "timestamp": 2020-05-06T09:22:23.582Z, + }, +] +`;