wix-style-react
Version:
115 lines (106 loc) • 2.8 kB
JavaScript
import React from 'react';
import { storiesOf } from '@storybook/react';
import { uniTestkitFactoryCreator } from 'wix-ui-test-utils/vanilla';
import { editableTitleUniDriverFactory } from '../EditableTitle.uni.driver';
import WixStyleReactProvider from '../../WixStyleReactProvider';
import EditableTitle from '../EditableTitle';
const tests = [
{
describe: 'values',
its: [
{
it: 'Initial Value',
props: {
initialValue: 'Initial Value',
},
},
{
it: 'Default value',
props: {
defaultValue: 'default value',
},
},
{
it: 'Default value & Initial value',
props: {
defaultValue: 'default value',
initialValue: 'Initial Value',
},
},
],
},
{
describe: 'ellipsis',
its: [
{
it: 'Initial Value',
props: {
initialValue:
'Some Title Some Title Some Title Some Title Some Title Some Title',
},
},
{
it: 'Default value',
props: {
defaultValue:
'Some Title Some Title Some Title Some Title Some Title Some Title',
},
},
],
},
];
const interactiveDataHook = 'interactive-editable-title';
const createDriver = dataHook =>
uniTestkitFactoryCreator(editableTitleUniDriverFactory)({
wrapper: document.body,
dataHook,
});
class ClickedEditableTitle extends React.Component {
async componentDidMount() {
const driver = createDriver(interactiveDataHook);
await driver.clickHeading();
}
render() {
return <EditableTitle {...this.props} dataHook={interactiveDataHook} />;
}
}
const componentsVariations = [
{
testTitle: 'EditableTitle',
Component: props => <EditableTitle {...props} />,
},
{
testTitle: 'EditableTitle/clicked',
Component: props => <ClickedEditableTitle {...props} />,
},
{
testTitle: 'Layout And Spacing| EditableTitle',
Component: props => (
<WixStyleReactProvider
features={{ reducedSpacingAndImprovedLayout: true }}
>
<EditableTitle {...props} />
</WixStyleReactProvider>
),
},
{
testTitle: 'Layout And Spacing| EditableTitle/clicked',
Component: props => (
<WixStyleReactProvider
features={{ reducedSpacingAndImprovedLayout: true }}
>
<ClickedEditableTitle {...props} />
</WixStyleReactProvider>
),
},
];
componentsVariations.forEach(({ testTitle, Component }) => {
tests.forEach(({ describe, its }) => {
its.forEach(({ it, props }) => {
storiesOf(`${testTitle}${describe ? '/' + describe : ''}`, module).add(
it,
() => <div style={{ width: '300px' }}>{<Component {...props} />}</div>,
);
});
});
});