d2-ui
Version:
140 lines (128 loc) • 4.25 kB
JavaScript
import React from 'react';
import { shallow } from 'enzyme';
import IconButton from 'material-ui/IconButton';
import PermissionOption from '../PermissionOption.component';
import PermissionPicker from '../PermissionPicker.component';
import { getStubContext } from '../../../../config/inject-theme';
const permissionPickerProps = {
access: {
meta: { canView: true, canEdit: true },
data: { canView: true, canEdit: true },
},
accessOptions: {
meta: { canView: true, canEdit: true, noAccess: true },
data: { canView: true, canEdit: true, noAccess: true },
},
onChange: () => {},
disabled: false,
};
describe('Sharing: PermissionPicker component', () => {
let permissionPickerComponent;
const renderComponent = (props = {}) =>
shallow(<PermissionPicker {...props} />, {
context: getStubContext(),
});
beforeEach(() => {
permissionPickerComponent = renderComponent(permissionPickerProps);
});
it('should render an IconButton', () => {
expect(permissionPickerComponent.find(IconButton)).toHaveLength(1);
});
it('should render three PermissionOptions if no data options, but all metadata options are available', () => {
permissionPickerComponent = renderComponent({
...permissionPickerProps,
accessOptions: {
meta: { canView: true, canEdit: true, noAccess: true },
},
});
expect(permissionPickerComponent.find(PermissionOption)).toHaveLength(
3
);
});
it('should render six PermissionOptions if all access options are available', () => {
expect(permissionPickerComponent.find(PermissionOption)).toHaveLength(
6
);
});
it('should render the checkmark SvgIcon according to the permission values', () => {
expect(
permissionPickerComponent
.find(PermissionOption)
.at(0)
.props().isSelected
).toBe(true);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(1)
.props().isSelected
).toBe(false);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(2)
.props().isSelected
).toBe(false);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(3)
.props().isSelected
).toBe(true);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(4)
.props().isSelected
).toBe(false);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(5)
.props().isSelected
).toBe(false);
permissionPickerComponent = renderComponent({
...permissionPickerProps,
access: {
data: { canView: false, canEdit: false },
meta: { canView: false, canEdit: false },
},
});
expect(
permissionPickerComponent
.find(PermissionOption)
.at(0)
.props().isSelected
).toBe(false);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(1)
.props().isSelected
).toBe(false);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(2)
.props().isSelected
).toBe(true);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(3)
.props().isSelected
).toBe(false);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(4)
.props().isSelected
).toBe(false);
expect(
permissionPickerComponent
.find(PermissionOption)
.at(5)
.props().isSelected
).toBe(true);
});
});