@kiwicom/smart-faq
Version:
54 lines (47 loc) • 1.47 kB
JavaScript
// @flow
import * as React from 'react';
import { mount } from 'enzyme';
import PageVariantContext from '../../context/PageVariant';
import { SidebarVersion, FullPageVersion } from '../PageVariant';
const FakeComponent = () => <div>Hello World!</div>;
const PrepareComponentForTest = Component => {
const PreparedComponent = ({ variant }) => (
<PageVariantContext.Provider value={{ variant }}>
<Component>
<FakeComponent />
</Component>
</PageVariantContext.Provider>
);
return PreparedComponent;
};
const TestCases = [
{
Component: PrepareComponentForTest(SidebarVersion),
componentName: 'SidebarVersion',
cases: [
{ variant: 'sidebar', shouldRender: true },
{ variant: 'fullPage', shouldRender: false },
],
},
{
Component: PrepareComponentForTest(FullPageVersion),
componentName: 'FullPageVersion',
cases: [
{ variant: 'sidebar', shouldRender: false },
{ variant: 'fullPage', shouldRender: true },
],
},
];
describe('PageVariant', () => {
TestCases.forEach(({ Component, componentName, cases }) => {
describe(`variant for ${componentName}`, () => {
cases.forEach(({ variant, shouldRender }) => {
it(`should${shouldRender ? '' : ' not'} render on ${variant}`, () => {
expect(
mount(<Component variant={variant} />).find(FakeComponent),
).toHaveLength(shouldRender ? 1 : 0);
});
});
});
});
});