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