diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/FeaturePicker/tests/index.test.js b/packages/strapi-plugin-content-type-builder/admin/src/components/FeaturePicker/tests/index.test.js
index ef3c543c06..cc21695bcd 100644
--- a/packages/strapi-plugin-content-type-builder/admin/src/components/FeaturePicker/tests/index.test.js
+++ b/packages/strapi-plugin-content-type-builder/admin/src/components/FeaturePicker/tests/index.test.js
@@ -1,28 +1,81 @@
import React from 'react';
-import Enzyme from 'enzyme';
+import { shallow } from 'enzyme';
+import { Dropdown, DropdownItem, DropdownToggle } from 'reactstrap';
import FeaturePicker from '../index';
-describe('', () => {
- let wrapper;
- const setOpen = jest.fn();
- const useStateSpy = jest.spyOn(React, 'useState');
- useStateSpy.mockImplementation(init => [init, setOpen]);
+describe('CTB ', () => {
+ it('should use the defaultProps', () => {
+ const {
+ defaultProps: { onClick },
+ } = FeaturePicker;
- beforeEach(() => {
- wrapper = Enzyme.shallow();
+ expect(onClick).toBeDefined();
+ expect(onClick()).toBe(undefined);
});
+ describe(' render', () => {
+ let wrapper;
+ const setOpen = jest.fn();
+ const useStateSpy = jest.spyOn(React, 'useState');
+ useStateSpy.mockImplementation(init => [init, setOpen]);
+ let props = {
+ features: [
+ {
+ icon: 'fa-cube',
+ name: 'group1',
+ description: '',
+ fields: 2,
+ source: null,
+ isTemporary: false,
+ },
+ {
+ icon: 'fa-cube',
+ name: 'group2',
+ description: '',
+ fields: 2,
+ source: null,
+ isTemporary: false,
+ },
+ ],
+ };
- afterEach(() => {
- jest.clearAllMocks();
- });
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+ it('should display source if it exists', () => {
+ props.main = true;
+ props.plugin = 'users-permissions';
- describe('SetOpen', () => {
- it('calls setOpen with true param', () => {
- const buttonProps = wrapper.find('button').props();
+ wrapper = shallow();
- buttonProps.onClick();
+ const span = wrapper
+ .find(DropdownToggle)
+ .find('p')
+ .at(0)
+ .find('span');
+
+ expect(span.text()).toContain('users-permissions');
+ });
+
+ it('should call setOpen with true param', () => {
+ wrapper = shallow();
+
+ const button = wrapper.find(Dropdown);
+ const { toggle } = button.props();
+
+ toggle();
expect(setOpen).toHaveBeenCalledWith(true);
});
+
+ it('should call onClick with true param on dropdown item click', () => {
+ props.selectedFeature = 'group2';
+ props.onClick = jest.fn();
+ wrapper = shallow();
+
+ const item = wrapper.find(DropdownItem).first();
+ item.simulate('click');
+
+ expect(props.onClick).toHaveBeenCalledWith(props.features[0]);
+ });
});
});