UNPKG

@hackplan/polaris

Version:

Shopify’s product component library

54 lines (53 loc) 2.39 kB
import * as tslib_1 from "tslib"; import React from 'react'; import { createMount } from '@shopify/react-testing'; // eslint-disable-next-line shopify/strict-component-boundaries import { createPolarisContext, AppProviderContext, } from '../components/AppProvider'; // eslint-disable-next-line shopify/strict-component-boundaries import { FrameContext } from '../components/Frame'; // eslint-disable-next-line shopify/strict-component-boundaries import { createThemeContext, ThemeProviderContext, } from '../components/ThemeProvider'; import merge from '../utilities/merge'; function noop() { } function TestProvider(_a) { var { children, polaris, themeProvider, frame } = _a, props = tslib_1.__rest(_a, ["children", "polaris", "themeProvider", "frame"]); const childWithProps = Object.keys(props).length > 0 ? React.cloneElement(children, props) : children; return (<AppProviderContext.Provider value={polaris}> <ThemeProviderContext.Provider value={themeProvider}> <FrameContext.Provider value={frame}> {childWithProps} </FrameContext.Provider> </ThemeProviderContext.Provider> </AppProviderContext.Provider>); } export const mountWithContext = createMount({ context({ polaris, themeProvider, frame }) { const polarisContextDefault = createPolarisContext(); const polarisContext = (polaris && merge(polarisContextDefault, polaris)) || polarisContextDefault; const themeproviderContextDefault = createThemeContext(); const themeProviderContext = (themeProvider && merge(themeproviderContextDefault, themeProvider)) || themeproviderContextDefault; const frameContextDefault = { showToast: noop, hideToast: noop, setContextualSaveBar: noop, removeContextualSaveBar: noop, startLoading: noop, stopLoading: noop, }; const frameContext = (frame && merge(frameContextDefault, frame)) || frameContextDefault; return { polaris: polarisContext, themeProvider: themeProviderContext, frame: frameContext, }; }, render(element, { polaris, themeProvider, frame }) { return (<TestProvider polaris={polaris} themeProvider={themeProvider} frame={frame}> {element} </TestProvider>); }, });