@patreon/studio
Version:
Patreon Studio Design System
32 lines • 1.37 kB
JSX
import { render } from '@testing-library/react';
import React, { useState } from 'react';
import { StudioProvider } from '~/components/StudioProvider';
import { IS_HAPPO } from './env';
/**
* Uses `@testing-library/react` to render components with the theme.
*/
export const renderWithTheme = (children, config) => render(<StudioProvider tokenColorMode={config?.tokenColorMode}>{children}</StudioProvider>);
/**
* The `happoCompatibleState` function is a utility for creating stories
* that are compatible with both Storybook and Happo. This papers over the
* differences between the two environments by providing a consistent API
* for managing basic state.
*/
export function happoCompatibleState(story, initialState) {
if (IS_HAPPO) {
return function Render() {
return story({
isOpen: initialState?.isOpen ?? true,
setIsOpen: () => null,
selectedItem: initialState?.selectedItem ?? 0,
setSelectedItem: () => null,
});
};
}
return function Render() {
const [isOpen, setIsOpen] = useState(initialState?.isOpen ?? false);
const [selectedItem, setSelectedItem] = useState(initialState?.selectedItem ?? 0);
return story({ isOpen, setIsOpen, selectedItem, setSelectedItem });
};
}
//# sourceMappingURL=testing-helpers.jsx.map