test-order-utils.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. TestOrderFragmentFragment,
  11. TransitionToState,
  12. } from '../graphql/generated-e2e-shop-types';
  13. import {
  14. ADD_PAYMENT,
  15. GET_ELIGIBLE_SHIPPING_METHODS,
  16. SET_SHIPPING_ADDRESS,
  17. SET_SHIPPING_METHOD,
  18. TRANSITION_TO_STATE,
  19. } from '../graphql/shop-definitions';
  20. export async function proceedToArrangingPayment(shopClient: SimpleGraphQLClient): Promise<ID> {
  21. await shopClient.query<SetShippingAddress.Mutation, SetShippingAddress.Variables>(SET_SHIPPING_ADDRESS, {
  22. input: {
  23. fullName: 'name',
  24. streetLine1: '12 the street',
  25. city: 'foo',
  26. postalCode: '123456',
  27. countryCode: 'US',
  28. },
  29. });
  30. const { eligibleShippingMethods } = await shopClient.query<GetShippingMethods.Query>(
  31. GET_ELIGIBLE_SHIPPING_METHODS,
  32. );
  33. await shopClient.query<SetShippingMethod.Mutation, SetShippingMethod.Variables>(SET_SHIPPING_METHOD, {
  34. id: eligibleShippingMethods[1].id,
  35. });
  36. const { transitionOrderToState } = await shopClient.query<
  37. TransitionToState.Mutation,
  38. TransitionToState.Variables
  39. >(TRANSITION_TO_STATE, { state: 'ArrangingPayment' });
  40. return (transitionOrderToState as TestOrderFragmentFragment)!.id;
  41. }
  42. export async function addPaymentToOrder(
  43. shopClient: SimpleGraphQLClient,
  44. handler: PaymentMethodHandler,
  45. ): Promise<NonNullable<AddPaymentToOrder.Mutation['addPaymentToOrder']>> {
  46. const result = await shopClient.query<AddPaymentToOrder.Mutation, AddPaymentToOrder.Variables>(
  47. ADD_PAYMENT,
  48. {
  49. input: {
  50. method: handler.code,
  51. metadata: {
  52. baz: 'quux',
  53. },
  54. },
  55. },
  56. );
  57. const order = result.addPaymentToOrder!;
  58. return order as any;
  59. }
  60. /**
  61. * Sorts an array of entities by the id key. Useful for compensating for the fact that different DBs
  62. * return arrays in different orders.
  63. */
  64. export function sortById<T extends { id: string | number }>(a: T, b: T): 1 | -1 {
  65. return a.id < b.id ? -1 : 1;
  66. }