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]); + }); }); });