test-order-utils.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* tslint:disable:no-non-null-assertion */
  2. import { ID } from '@vendure/common/lib/shared-types';
  3. import { PaymentMethodHandler } from '@vendure/core';
  4. import { SimpleGraphQLClient } from '@vendure/testing';
  5. import {
  6. AddPaymentToOrder,
  7. GetShippingMethods,
  8. SetShippingAddress,
  9. SetShippingMethod,
  10. TransitionToState,
  11. } from '../graphql/generated-e2e-shop-types';
  12. import {
  13. ADD_PAYMENT,
  14. GET_ELIGIBLE_SHIPPING_METHODS,
  15. SET_SHIPPING_ADDRESS,
  16. SET_SHIPPING_METHOD,
  17. TRANSITION_TO_STATE,
  18. } from '../graphql/shop-definitions';
  19. export async function proceedToArrangingPayment(shopClient: SimpleGraphQLClient): Promise<ID> {
  20. await shopClient.query<SetShippingAddress.Mutation, SetShippingAddress.Variables>(SET_SHIPPING_ADDRESS, {
  21. input: {
  22. fullName: 'name',
  23. streetLine1: '12 the street',
  24. city: 'foo',
  25. postalCode: '123456',
  26. countryCode: 'US',
  27. },
  28. });
  29. const { eligibleShippingMethods } = await shopClient.query<GetShippingMethods.Query>(
  30. GET_ELIGIBLE_SHIPPING_METHODS,
  31. );
  32. await shopClient.query<SetShippingMethod.Mutation, SetShippingMethod.Variables>(SET_SHIPPING_METHOD, {
  33. id: eligibleShippingMethods[1].id,
  34. });
  35. const { transitionOrderToState } = await shopClient.query<
  36. TransitionToState.Mutation,
  37. TransitionToState.Variables
  38. >(TRANSITION_TO_STATE, { state: 'ArrangingPayment' });
  39. return transitionOrderToState!.id;
  40. }
  41. export async function addPaymentToOrder(
  42. shopClient: SimpleGraphQLClient,
  43. handler: PaymentMethodHandler,
  44. ): Promise<NonNullable<AddPaymentToOrder.Mutation['addPaymentToOrder']>> {
  45. const result = await shopClient.query<AddPaymentToOrder.Mutation, AddPaymentToOrder.Variables>(
  46. ADD_PAYMENT,
  47. {
  48. input: {
  49. method: handler.code,
  50. metadata: {
  51. baz: 'quux',
  52. },
  53. },
  54. },
  55. );
  56. const order = result.addPaymentToOrder!;
  57. return order as any;
  58. }