All files / src/helpers/cart actions.ts

86.36% Statements 19/22
100% Branches 34/34
72.73% Functions 8/11
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113    50x               50x             50x             50x                                                         50x           50x       50x                                                         50x               50x       50x       50x        
import { ProductVariant, Address, LineItem, ReferenceInput, ResourceIdentifierInput, AddressInput } from './../../types/GraphQL';
 
export const createAddLineItemAction = (variant: ProductVariant, quantity: number) => ({
  addLineItem: {
    variantId: variant.id,
    quantity: quantity,
    sku: variant.sku
  }
});
 
export const createRemoveLineItemAction = (product: LineItem) => ({
  removeLineItem: {
    lineItemId: product.id,
    quantity: product.quantity
  }
});
 
export const createChangeLineItemQuantityAction = (product: LineItem) => ({
  changeLineItemQuantity: {
    lineItemId: product.id,
    quantity: product.quantity
  }
});
 
export const setShippingAddressAction = (shippingDetails: Address): { setShippingAddress: { address: AddressInput } } => ({
  setShippingAddress: {
    address: {
      title: shippingDetails.title,
      salutation: shippingDetails.salutation,
      firstName: shippingDetails.firstName,
      lastName: shippingDetails.lastName,
      streetName: shippingDetails.streetName,
      streetNumber: shippingDetails.streetNumber,
      additionalStreetInfo: shippingDetails.additionalStreetInfo,
      postalCode: shippingDetails.postalCode,
      city: shippingDetails.city,
      region: shippingDetails.region,
      state: shippingDetails.state,
      country: shippingDetails.country,
      company: shippingDetails.company,
      department: shippingDetails.department,
      building: shippingDetails.building,
      apartment: shippingDetails.apartment,
      pOBox: shippingDetails.pOBox,
      phone: shippingDetails.contactInfo?.phone,
      mobile: shippingDetails.contactInfo?.mobile,
      email: shippingDetails.contactInfo?.email,
      fax: shippingDetails.contactInfo?.fax,
      additionalAddressInfo: shippingDetails.additionalAddressInfo
    }
  }
});
 
export const setShippingMethodAction = (shippingMethodId?: string) => ({
  setShippingMethod: {
    shippingMethod: shippingMethodId ? { id: shippingMethodId } : null
  }
});
 
export const addPayment = (payment: ResourceIdentifierInput) => ({
  addPayment: { payment }
});
 
export const setBillingAddressAction = (billingDetails: Address): { setBillingAddress: { address: AddressInput } } => ({
  setBillingAddress: {
    address: {
      title: billingDetails.title,
      salutation: billingDetails.salutation,
      firstName: billingDetails.firstName,
      lastName: billingDetails.lastName,
      streetName: billingDetails.streetName,
      streetNumber: billingDetails.streetNumber,
      additionalStreetInfo: billingDetails.additionalStreetInfo,
      postalCode: billingDetails.postalCode,
      city: billingDetails.city,
      region: billingDetails.region,
      state: billingDetails.state,
      country: billingDetails.country,
      company: billingDetails.company,
      department: billingDetails.department,
      building: billingDetails.building,
      apartment: billingDetails.apartment,
      pOBox: billingDetails.pOBox,
      phone: billingDetails.contactInfo?.phone,
      mobile: billingDetails.contactInfo?.mobile,
      email: billingDetails.contactInfo?.email,
      fax: billingDetails.contactInfo?.fax,
      additionalAddressInfo: billingDetails.additionalAddressInfo
    }
  }
});
 
export const addPaymentAction = (paymentMethodId: string) => ({
  addPayment: {
    payment: {
      id: paymentMethodId
    }
  }
});
 
export const addDiscountCodeAction = (code: string) => ({
  addDiscountCode: { code }
});
 
export const removeDiscountCodeAction = (discountCode: ReferenceInput) => ({
  removeDiscountCode: { discountCode }
});
 
export const setCustomerEmail = (email: string) => ({
  setCustomerEmail: { email }
});