import React from 'react';
import { forEach, has } from 'lodash';
import { shallow } from 'enzyme';
import { common } from '../../util/generic-tests';
import { Grid } from './Grid';
describe('Grid', () => {
common(Grid);
describe('props', () => {
let wrapper: any;
beforeEach(() => {
const props = {
className: 'wut',
children: ,
style: { marginRight: 10 },
initialState: { test: true },
callbackId: 1,
'data-testid': 10,
};
wrapper = shallow();
});
afterEach(() => {
wrapper.unmount();
});
describe('isVertical', () => {
it('Explicitly set the primary axis of the grid to Y', () => {
wrapper = shallow();
expect(wrapper.find('.lucid-Grid-is-vertical').length).toBe(1);
});
});
describe('isHorizontal', () => {
it('Explicitly set the primary axis of the grid to X', () => {
wrapper = shallow();
expect(wrapper.find('.lucid-Grid-is-horizontal').length).toBe(1);
});
});
describe('isGutterless', () => {
it('Creates a grid without padding separating grid cells', () => {
wrapper = shallow();
expect(wrapper.find('.lucid-Grid-is-gutterless').length).toBe(1);
});
});
describe('isMultiline', () => {
it('Allow Grids to wrap multiple lines ', () => {
wrapper = shallow();
expect(wrapper.find('.lucid-Grid-is-multiline').length).toBe(1);
});
});
describe('section pass throughs', () => {
it('passes through props not defined in `propTypes` to the root section element', () => {
const sectionRootProps = wrapper.find('.lucid-Grid').props();
// 'className' is destructured from the props object
// but still appear becuase it is also directly passed to the root element as a prop
forEach(
[
'className',
'data-testid',
'style',
'children',
'initialState',
'callbackId',
],
(prop) => {
expect(has(sectionRootProps, prop)).toBe(true);
}
);
});
it('does not pass through any props destructured from the root section element', () => {
const sectionRootProps = wrapper.find('.lucid-Grid').props();
// 'className' is destructured from the props object
// but still appear becuase it is also directly applied to the root element as a prop
forEach(
['isVertical', 'isHorizontal', 'isGutterless', 'isMultiline'],
(prop) => {
expect(has(sectionRootProps, prop)).toBe(false);
}
);
});
});
describe('article pass throughs', () => {
it('passes through specific child props to the article', () => {
const articleRootProps = wrapper.find('.lucid-Grid-Cell').props();
// class name is directly applied to the article
forEach(['className', 'children'], (prop) => {
expect(has(articleRootProps, prop)).toBe(true);
});
});
it('does not pass through the the article element any of the props defined in `Grid.Cell.propTypes` (and, in addition, omits `initialState`, and `callbackId`)', () => {
const articleRootProps = wrapper.find('.lucid-Grid-Cell').props();
forEach(
[
'isFull',
'isHalf',
'isThird',
'isQuarter',
'is2',
'is3',
'is4',
'is5',
'is6',
'is7',
'is8',
'is9',
'is10',
'is11',
'isOffsetQuarter',
'isOffsetThird',
'isOffsetHalf',
'initialState',
'callbackId',
],
(prop) => {
expect(has(articleRootProps, prop)).toBe(false);
}
);
});
});
});
});