All files / src/api/getProduct index.ts

100% Statements 14/14
100% Branches 2/2
100% Functions 2/2
100% Lines 12/12

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 3654x 54x   54x 54x 54x           54x 2x 2x                   2x 2x             2x     54x  
import gql from 'graphql-tag';
import { apolloClient, getSettings } from './../../index';
import { ProductQueryResult } from './../../types/GraphQL';
import defaultQuery from './defaultQuery';
import { buildProductWhere } from './../../helpers/search';
import { getCustomQuery } from './../../helpers/queries';
 
export interface ProductData {
  products: ProductQueryResult;
}
 
const getProduct = async (params, customQueryFn?) => {
  const { locale, acceptLanguage, currency, country } = getSettings();
  const defaultVariables = {
    where: buildProductWhere(params),
    skus: params.skus,
    limit: params.limit,
    offset: params.offset,
    locale,
    acceptLanguage,
    currency,
    country
  };
  const { query, variables } = getCustomQuery(customQueryFn, { defaultQuery, defaultVariables });
  const request = await apolloClient.query<ProductData>({
    query: gql`${query}`,
    variables,
    // temporary, seems like bug in apollo:
    // @link: https://github.com/apollographql/apollo-client/issues/3234
    fetchPolicy: 'no-cache'
  });
  return request;
};
 
export default getProduct;