From 27d7efc45ecd8498c93a525a2847652ad57c55c7 Mon Sep 17 00:00:00 2001 From: Jeremiah Olufayo Date: Fri, 3 Apr 2020 08:19:10 +0100 Subject: [PATCH 1/3] test: add tests for orderNumber --- .../test/create-service.spec.js | 7 +++++++ .../api-request-builder/test/query-id.spec.js | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/packages/api-request-builder/test/create-service.spec.js b/packages/api-request-builder/test/create-service.spec.js index 98f330a66..94654641c 100644 --- a/packages/api-request-builder/test/create-service.spec.js +++ b/packages/api-request-builder/test/create-service.spec.js @@ -37,6 +37,7 @@ const expectedServiceProperties = [ 'byCurrency', 'byCountry', 'byState', + 'byOrderNumber', ] const projectKey = 'my-project1' @@ -423,6 +424,12 @@ describe('createService', () => { ) }) + test('should mix orderNumber and queryParams', () => { + expect(service.byOrderNumber(123).expand('baz').build()).toBe( + '/my-project1/test?orderNumber=123&expand=baz' + ) + }) + test('should mix cartId and queryParams', () => { expect(service.byCartId('foo').expand('baz').build()).toBe( '/my-project1/test?cartId=foo&expand=baz' diff --git a/packages/api-request-builder/test/query-id.spec.js b/packages/api-request-builder/test/query-id.spec.js index e7f2d1b7e..e13a81c91 100644 --- a/packages/api-request-builder/test/query-id.spec.js +++ b/packages/api-request-builder/test/query-id.spec.js @@ -34,12 +34,29 @@ describe('queryId', () => { expect(service.params.customerId).toBe('myCustomer') }) + test('should set the orderNumber param', () => { + service.byOrderNumber(123) + expect(service.params.orderNumber).toBe(123) + }) + test('should throw if customerId is missing', () => { expect(() => service.byCustomerId()).toThrow( /Required argument for `byCustomerId` is missing/ ) }) + test('should throw if orderNumber is missing', () => { + expect(() => service.byOrderNumber()).toThrow( + /Required argument for `byOrderNumber` is missing or invalid/ + ) + }) + + test('should throw if orderNumber is invalid', () => { + expect(() => service.byOrderNumber('hi')).toThrow( + /Required argument for `byCustomerId` is missing/ + ) + }) + test('should set the cartId param', () => { service.byCartId('myCart') expect(service.params.cartId).toBe('myCart') From 854e503917b0a4e446ad6bb2b787b2cdda2a71fe Mon Sep 17 00:00:00 2001 From: Jeremiah Olufayo Date: Fri, 3 Apr 2020 09:44:26 +0100 Subject: [PATCH 2/3] feat(request-builder): add orderNumber support on order service --- .../api-request-builder/src/create-service.js | 1 + .../api-request-builder/src/default-params.js | 2 ++ packages/api-request-builder/src/query-id.js | 18 ++++++++++++++++++ .../test/create-service.spec.js | 2 +- .../api-request-builder/test/query-id.spec.js | 2 +- types/sdk.js | 3 +++ 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/api-request-builder/src/create-service.js b/packages/api-request-builder/src/create-service.js index f7318e220..28946be81 100644 --- a/packages/api-request-builder/src/create-service.js +++ b/packages/api-request-builder/src/create-service.js @@ -35,6 +35,7 @@ const requiredDefinitionProps = ['type', 'endpoint', 'features'] function getIdOrKey(params: Object): string { if (params.id) return `/${params.id}` + if (params.orderNumber) return `/order-number=${params.orderNumber}` if (params.key && !params.container) return `/key=${params.key}` if (params.key && params.container) return `/${params.container}/${params.key}` diff --git a/packages/api-request-builder/src/default-params.js b/packages/api-request-builder/src/default-params.js index 95aa5dd9a..8ce411d31 100644 --- a/packages/api-request-builder/src/default-params.js +++ b/packages/api-request-builder/src/default-params.js @@ -133,6 +133,7 @@ export function setParams(params: ServiceBuilderParams) { 'withTotal', 'applyOrderEditTo', 'container', + 'orderNumber', ] Object.keys(params).forEach((key: string) => { if (!knownKeys.includes(key)) throw new Error(`Unknown key "${key}"`) @@ -173,6 +174,7 @@ export function setParams(params: ServiceBuilderParams) { if (hasKey(params, 'priceCustomerGroup')) this.priceCustomerGroup(params.priceCustomerGroup) if (hasKey(params, 'priceChannel')) this.priceChannel(params.priceChannel) + if (hasKey(params, 'orderNumber')) this.byOrderNumber(params.orderNumber) // query-search if (params.text) this.text(params.text.value, params.text.language) diff --git a/packages/api-request-builder/src/query-id.js b/packages/api-request-builder/src/query-id.js index 711b9ac8b..89405e318 100644 --- a/packages/api-request-builder/src/query-id.js +++ b/packages/api-request-builder/src/query-id.js @@ -69,6 +69,24 @@ export function byCustomerId(custId: string): Object { return this } +/** + * Set the given `orderNumber` to the `orderNumber` internal state of the service instance. + * For querying orders + * + * @param {number} orderNumber - An order number + * @throws If `orderNumber` is missing or invalid + * @return {Object} The instance of the service, can be chained. + */ +export function byOrderNumber(orderNumber: number): Object { + if (typeof orderNumber !== 'number') + throw new Error( + 'Required argument for `byOrderNumber` is missing or invalid' + ) + + this.params.orderNumber = orderNumber + return this +} + /** * Set the given `id` to the `cartId` internal state of the service instance. * For querying shipping methods by cart id diff --git a/packages/api-request-builder/test/create-service.spec.js b/packages/api-request-builder/test/create-service.spec.js index 94654641c..581a7f0ed 100644 --- a/packages/api-request-builder/test/create-service.spec.js +++ b/packages/api-request-builder/test/create-service.spec.js @@ -426,7 +426,7 @@ describe('createService', () => { test('should mix orderNumber and queryParams', () => { expect(service.byOrderNumber(123).expand('baz').build()).toBe( - '/my-project1/test?orderNumber=123&expand=baz' + '/my-project1/test/order-number=123?expand=baz' ) }) diff --git a/packages/api-request-builder/test/query-id.spec.js b/packages/api-request-builder/test/query-id.spec.js index e13a81c91..ba647bbe9 100644 --- a/packages/api-request-builder/test/query-id.spec.js +++ b/packages/api-request-builder/test/query-id.spec.js @@ -53,7 +53,7 @@ describe('queryId', () => { test('should throw if orderNumber is invalid', () => { expect(() => service.byOrderNumber('hi')).toThrow( - /Required argument for `byCustomerId` is missing/ + /Required argument for `byOrderNumber` is missing/ ) }) diff --git a/types/sdk.js b/types/sdk.js index a094a082b..962b87666 100644 --- a/types/sdk.js +++ b/types/sdk.js @@ -377,6 +377,9 @@ export type ServiceBuilderParams = { // container container?: ?string, + + // params + orderNumber?: number, } export type ServiceBuilder = { type: string, From 9f874c4e6898f3c1771d0b17c12cc133c59e8233 Mon Sep 17 00:00:00 2001 From: Jeremiah Olufayo Date: Fri, 3 Apr 2020 10:22:30 +0100 Subject: [PATCH 3/3] feat(request-builder): re-organise test --- packages/api-request-builder/test/query-id.spec.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/api-request-builder/test/query-id.spec.js b/packages/api-request-builder/test/query-id.spec.js index ba647bbe9..b97a694c6 100644 --- a/packages/api-request-builder/test/query-id.spec.js +++ b/packages/api-request-builder/test/query-id.spec.js @@ -34,20 +34,20 @@ describe('queryId', () => { expect(service.params.customerId).toBe('myCustomer') }) - test('should set the orderNumber param', () => { - service.byOrderNumber(123) - expect(service.params.orderNumber).toBe(123) - }) - test('should throw if customerId is missing', () => { expect(() => service.byCustomerId()).toThrow( /Required argument for `byCustomerId` is missing/ ) }) + test('should set the orderNumber param', () => { + service.byOrderNumber(123) + expect(service.params.orderNumber).toBe(123) + }) + test('should throw if orderNumber is missing', () => { expect(() => service.byOrderNumber()).toThrow( - /Required argument for `byOrderNumber` is missing or invalid/ + /Required argument for `byOrderNumber` is missing/ ) })