Skip to content

Commit

Permalink
feat: #56 (api) setOrderForCustomer
Browse files Browse the repository at this point in the history
  • Loading branch information
Baroshem committed Aug 22, 2021
1 parent f9d76f8 commit d9d6837
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 1 deletion.
26 changes: 26 additions & 0 deletions packages/api-client/__tests__/api/setCustomerForOrder.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import setCustomerForOrder from '../../src/api/setCustomerForOrder';
import setCustomerForOrderMutation from '../../src/api/setCustomerForOrder/setCustomerForOrderMutation';
import { Context } from '../../src/types';

describe('[vendure-api-client] setCustomerForOrder', () => {
it('sets customer for certain order', async () => {
const givenVariables = { firstName: 'test', lastName: 'test', emailAddress: 'test@test.com' };

const context = {
config: {},
client: {
mutate: ({ variables, mutation }) => {
expect(variables).toEqual({ input: givenVariables });
expect(mutation).toEqual(setCustomerForOrderMutation);

return { data: 'set customer for order response' };
}
},
extendQuery: (customQuery, args) => args
} as unknown as Context;

const { data } = await setCustomerForOrder(context, givenVariables);

expect(data).toBe('set customer for order response');
});
});
1 change: 1 addition & 0 deletions packages/api-client/src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ export { default as getShippingMethods } from './getShippingMethods';
export { default as setShippingMethod } from './setShippingMethod';
export { default as setPaymentMethod } from './setPaymentMethod';
export { default as transitionOrderToState } from './transitionOrderToState';
export { default as setCustomerForOrder } from './setCustomerForOrder';
24 changes: 24 additions & 0 deletions packages/api-client/src/api/setCustomerForOrder/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import setCustomerForOrderMutation from './setCustomerForOrderMutation';
import { CustomQuery } from '@vue-storefront/core';
import gql from 'graphql-tag';
import { Context, CreateCustomerInput, SetCustomerForOrderResponse } from '../../types';

const setCustomerForOrder = async (context: Context, params: CreateCustomerInput, customQuery?: CustomQuery): Promise<SetCustomerForOrderResponse> => {
const setCustomerForOrderVariables = {
input: params
};

const { setCustomerForOrder } = context.extendQuery(
customQuery, { setCustomerForOrder: { query: setCustomerForOrderMutation, variables: setCustomerForOrderVariables } }
);

const request = await context.client.mutate({
mutation: gql`${setCustomerForOrder.query}`,
variables: setCustomerForOrder.variables,
fetchPolicy: 'no-cache'
}) as SetCustomerForOrderResponse;

return request;
};

export default setCustomerForOrder;
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import gql from 'graphql-tag';
import { CartFragment, ErrorResultFragment } from '../../fragments';

export default gql`
${CartFragment}
${ErrorResultFragment}
mutation setCustomerForOrder($input: CreateCustomerInput!) {
setCustomerForOrder(input: $input) {
...Cart
...ErrorResult
}
}
`;
4 changes: 3 additions & 1 deletion packages/api-client/src/types/API.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { CustomQuery } from '@vue-storefront/core';
import { ApolloQueryResult } from 'apollo-client';
import { FetchResult } from 'apollo-link';
import { ActiveOrderResult, ApplyCouponCodeResult, CollectionList, Customer, Order, PaymentInput, Product, RemoveOrderItemsResult, SearchResponse, ShippingMethodQuote, UpdateOrderItemsResult } from './GraphQL';
import { ActiveOrderResult, ApplyCouponCodeResult, CollectionList, CreateCustomerInput, Customer, Order, PaymentInput, Product, RemoveOrderItemsResult, SearchResponse, SetCustomerForOrderResult, ShippingMethodQuote, UpdateOrderItemsResult } from './GraphQL';
import { AddToCartParams, CartCouponParams, CollectionParams, ProductParams, RemoveFromCartParams, SearchParams, SetShippingMethodParams, TransitionOrderToStateParams, UpdateAddressDetailsParams, UpdateCartParams } from './types';

export type QueryResponse<K extends string, V> = ApolloQueryResult<Record<K, V>>;
Expand All @@ -23,6 +23,7 @@ export type UpdateAddressDetailsResponse = MutationResponse<'setOrderShippingAdd
export type SetShippingMethodResponse = MutationResponse<'setOrderShippingMethod', Order>;
export type SetPaymentMethodResponse = MutationResponse<'setPaymentShippingMethod', Order>;
export type TransitionOrderToState = MutationResponse<'transitionOrderToState', Order>;
export type SetCustomerForOrderResponse = MutationResponse<'setCustomerForOrder', SetCustomerForOrderResult>;

export interface VendureApiMethods {
getProduct(params: ProductParams, customQuery?: CustomQuery): Promise<GetProductResponse>;
Expand All @@ -40,4 +41,5 @@ export interface VendureApiMethods {
setShippingMethod(params: SetShippingMethodParams, customQuery?: CustomQuery): Promise<SetShippingMethodResponse>;
setPaymentMethod(params: PaymentInput, customQuery?: CustomQuery): Promise<SetPaymentMethodResponse>;
transitionOrderToState(params: TransitionOrderToStateParams, customQuery?: CustomQuery): Promise<TransitionOrderToState>;
setCustomerForOrder(params: CreateCustomerInput, customQuery?: CustomQuery): Promise<SetCustomerForOrderResponse>;
}

0 comments on commit d9d6837

Please sign in to comment.