Skip to content
This repository has been archived by the owner on Feb 6, 2024. It is now read-only.

Commit

Permalink
test: add mock data from c# lib, fix issues found after test
Browse files Browse the repository at this point in the history
  • Loading branch information
justinemmanuelmercado committed Jul 2, 2020
1 parent c264821 commit 798faa7
Show file tree
Hide file tree
Showing 6 changed files with 275 additions and 8 deletions.
9 changes: 2 additions & 7 deletions src/sections/merchant-fulfillment/merchant-fulfillment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { CurrencyAmount } from '../codec'
import { getServiceStatusByResource } from '../shared'
import {
canonicalizeParametersGetEligibleShippingServiceParameters,
GetAdditionalSellerInputsParameters,
GetEligibleShippingServicesParameters,
PredefinedPackageDimensionsEnum,
} from './type'
Expand Down Expand Up @@ -75,12 +76,6 @@ const GetEligibleShippingServicesResponse = Codec.interface({
GetEligibleShippingServicesResult: GetEligibleShippingServices,
}),
})
interface GetAdditionalSellerInputsParameters {
OrderId: string
ShippingServiceId: string
ShipFromAddress: string
[key: string]: string
}

enum DataTypeEnum {
String = 'String',
Expand Down Expand Up @@ -148,7 +143,7 @@ const PackageDimensions = Codec.interface({
Width: optional(number),
Height: optional(number),
Unit: optional(DimensionsUnit),
PredefinedPackageDimensions,
PredefinedPackageDimensions: optional(PredefinedPackageDimensions),
})

const StoredValue = Codec.interface({
Expand Down
7 changes: 7 additions & 0 deletions src/sections/merchant-fulfillment/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -236,3 +236,10 @@ export const canonicalizeParametersGetEligibleShippingServiceParameters = (
/**
* END GetEligibleShippingServicesParameters
*/

export interface GetAdditionalSellerInputsParameters {
OrderId: string
ShippingServiceId: string
ShipFromAddress: Address
[key: string]: string | Address
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
<GetAdditionalSellerInputsResponse xmlns="https://mws.amazonservices.com/MerchantFulfillment/2015-06-01">
<GetAdditionalSellerInputsResult>
<ShipmentLevelFields>
<member>
<AdditionalInputFieldName>String</AdditionalInputFieldName>
<SellerInputDefinition>
<IsRequired>true</IsRequired>
<DataType>String</DataType>
<Constraints>
<member>
<ValidationRegEx>String</ValidationRegEx>
<ValidationString>String</ValidationString>
</member>
</Constraints>
<InputDisplayText>String</InputDisplayText>
<InputTarget>String</InputTarget>
<StoredValue>
<DataType>String</DataType>
<ValueAsString>String</ValueAsString>
<ValueAsBoolean>true</ValueAsBoolean>
<ValueAsInteger>1</ValueAsInteger>
<ValueAsTimestamp>1969-07-21T02:56:03Z</ValueAsTimestamp>
<ValueAsAddress>
<Name>String</Name>
<AddressLine1>String</AddressLine1>
<AddressLine2>String</AddressLine2>
<AddressLine3>String</AddressLine3>
<DistrictOrCounty>String</DistrictOrCounty>
<Email>String</Email>
<City>String</City>
<StateOrProvinceCode>String</StateOrProvinceCode>
<PostalCode>String</PostalCode>
<CountryCode>String</CountryCode>
<Phone>String</Phone>
</ValueAsAddress>
<ValueAsWeight>
<Value>100</Value>
<Unit>String</Unit>
</ValueAsWeight>
<ValueAsDimension>
<value>100</value>
<unit>String</unit>
</ValueAsDimension>
<ValueAsCurrency>
<CurrencyCode>String</CurrencyCode>
<Amount>100</Amount>
</ValueAsCurrency>
</StoredValue>
<RestrictedSetValues>
<member>String</member>
</RestrictedSetValues>
</SellerInputDefinition>
</member>
</ShipmentLevelFields>
<ItemLevelFieldsList>
<member>
<Asin>String</Asin>
<AdditionalInputs>
<member>
<AdditionalInputFieldName>String</AdditionalInputFieldName>
<SellerInputDefinition>
<IsRequired>true</IsRequired>
<DataType>String</DataType>
<Constraints>
<member>
<ValidationRegEx>String</ValidationRegEx>
<ValidationString>String</ValidationString>
</member>
</Constraints>
<InputDisplayText>String</InputDisplayText>
<InputTarget>String</InputTarget>
<StoredValue>
<DataType>String</DataType>
<ValueAsString>String</ValueAsString>
<ValueAsBoolean>true</ValueAsBoolean>
<ValueAsInteger>1</ValueAsInteger>
<ValueAsTimestamp>1969-07-21T02:56:03Z</ValueAsTimestamp>
<ValueAsAddress>
<Name>String</Name>
<AddressLine1>String</AddressLine1>
<AddressLine2>String</AddressLine2>
<AddressLine3>String</AddressLine3>
<DistrictOrCounty>String</DistrictOrCounty>
<Email>String</Email>
<City>String</City>
<StateOrProvinceCode>String</StateOrProvinceCode>
<PostalCode>String</PostalCode>
<CountryCode>String</CountryCode>
<Phone>String</Phone>
</ValueAsAddress>
<ValueAsWeight>
<Value>100</Value>
<Unit>String</Unit>
</ValueAsWeight>
<ValueAsDimension>
<value>100</value>
<unit>String</unit>
</ValueAsDimension>
<ValueAsCurrency>
<CurrencyCode>String</CurrencyCode>
<Amount>100</Amount>
</ValueAsCurrency>
</StoredValue>
<RestrictedSetValues>
<member>String</member>
</RestrictedSetValues>
</SellerInputDefinition>
</member>
</AdditionalInputs>
</member>
</ItemLevelFieldsList>
</GetAdditionalSellerInputsResult>
<ResponseMetadata>
<RequestId>String</RequestId>
</ResponseMetadata>
</GetAdditionalSellerInputsResponse>
113 changes: 113 additions & 0 deletions test/unit/__snapshots__/merchant-fulfillment.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,119 @@ Array [
]
`;

exports[`merchant-fulfillment getAdditionalSellerInputs should properly match complete response structure from c# 1`] = `
Array [
Object {
"ItemLevelFieldsList": Array [
Object {
"AdditionalInputs": Array [
Object {
"AdditionalInputFieldName": "String",
"SellerInputDefinition": Object {
"Constraints": Array [
Object {
"ValidationRegEx": "String",
"ValidationString": "String",
},
],
"DataType": "String",
"InputDisplayText": "String",
"InputTarget": "String",
"IsRequired": true,
"RestrictedSetValues": Array [
"String",
],
"StoredValue": Object {
"DataType": "String",
"ValueAsAddress": Object {
"AddressLine1": "String",
"AddressLine2": "String",
"AddressLine3": "String",
"City": "String",
"CountryCode": "String",
"DistrictOrCounty": "String",
"Email": "String",
"Name": "String",
"Phone": "String",
"PostalCode": "String",
"StateOrProvinceCode": "String",
},
"ValueAsBoolean": true,
"ValueAsCurrency": Object {
"CurrencyCode": "String",
},
"ValueAsDimension": Object {},
"ValueAsInteger": 1,
"ValueAsString": "String",
"ValueAsWeight": Object {
"Unit": "String",
"Value": 100,
},
},
},
},
],
"Asin": "String",
},
],
"ShipmentLevelFields": Array [
Object {
"AdditionalInputFieldName": "String",
"SellerInputDefinition": Object {
"Constraints": Array [
Object {
"ValidationRegEx": "String",
"ValidationString": "String",
},
],
"DataType": "String",
"InputDisplayText": "String",
"InputTarget": "String",
"IsRequired": true,
"RestrictedSetValues": Array [
"String",
],
"StoredValue": Object {
"DataType": "String",
"ValueAsAddress": Object {
"AddressLine1": "String",
"AddressLine2": "String",
"AddressLine3": "String",
"City": "String",
"CountryCode": "String",
"DistrictOrCounty": "String",
"Email": "String",
"Name": "String",
"Phone": "String",
"PostalCode": "String",
"StateOrProvinceCode": "String",
},
"ValueAsBoolean": true,
"ValueAsCurrency": Object {
"CurrencyCode": "String",
},
"ValueAsDimension": Object {},
"ValueAsInteger": 1,
"ValueAsString": "String",
"ValueAsWeight": Object {
"Unit": "String",
"Value": 100,
},
},
},
},
],
},
Object {
"quotaMax": 1000,
"quotaRemaining": 999,
"quotaResetOn": 2020-04-06T10:22:23.582Z,
"requestId": "0",
"timestamp": 2020-05-06T09:22:23.582Z,
},
]
`;

exports[`merchant-fulfillment getEligiblShippingServices returns lists of shipping services if succesful with additional input 1`] = `
Array [
Object {
Expand Down
38 changes: 37 additions & 1 deletion test/unit/merchant-fulfillment.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,26 @@ const mockAddress = {
CountryCode: '',
Phone: '',
}
function mockFunctions() {
/**
* Mock everything in purify-ts, restore it back to normal,
* except for `enumeration` which will be stubbed
* https://github.com/facebook/jest/issues/936#issuecomment-265074320
*/
const original = jest.requireActual('purify-ts')
return {
...original, // Pass down all the exported objects
enumeration: () => {
return original.Codec.custom({
decode: (input: string | number) => {
return original.Right(input)
},
encode: original.identity,
})
},
}
}
jest.mock('purify-ts', () => mockFunctions())

describe('merchant-fulfillment', () => {
describe('getAdditionalSellerInputs', () => {
Expand All @@ -24,11 +44,27 @@ describe('merchant-fulfillment', () => {
ShipFromAddress: mockAddress,
}

it('should properly match complete response structure from c#', async () => {
expect.assertions(1)

const mockGetAdditionalSellerInputs = createMockHttpClient(
'merchant_fulfillment_get_additional_seller_inputs_from_c_sharp',
)

expect(
await mockGetAdditionalSellerInputs.merchantFulfillment.getAddtionalSellerInputs(
parameters,
),
).toMatchSnapshot()

jest.clearAllMocks()
})

it('returns shipment level fields and item level fields if succesful', async () => {
expect.assertions(1)

const mockGetAdditionalSellerInputs = createMockHttpClient(
'merchant_get_additional_seller_inputs',
'merchant_fulfillment_get_additional_seller_inputs',
)

expect(
Expand Down

0 comments on commit 798faa7

Please sign in to comment.