From 4453d794e79fabe056bcdd48ca3fa926c70f3be3 Mon Sep 17 00:00:00 2001 From: unix Date: Wed, 22 Apr 2020 15:08:55 +0800 Subject: [PATCH] test(popover): add testcase --- .../__snapshots__/index.test.tsx.snap | 27 ++++++ components/popover/__tests__/index.test.tsx | 97 +++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 components/popover/__tests__/__snapshots__/index.test.tsx.snap create mode 100644 components/popover/__tests__/index.test.tsx diff --git a/components/popover/__tests__/__snapshots__/index.test.tsx.snap b/components/popover/__tests__/__snapshots__/index.test.tsx.snap new file mode 100644 index 0000000..998aa07 --- /dev/null +++ b/components/popover/__tests__/__snapshots__/index.test.tsx.snap @@ -0,0 +1,27 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Popover should render react-node 1`] = ` +"
" +`; + +exports[`Popover should work with different placement 1`] = ` +"
" +`; diff --git a/components/popover/__tests__/index.test.tsx b/components/popover/__tests__/index.test.tsx new file mode 100644 index 0000000..26851ae --- /dev/null +++ b/components/popover/__tests__/index.test.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import { mount, ReactWrapper } from 'enzyme' +import { Popover } from 'components' +import { nativeEvent, updateWrapper } from 'tests/utils' + +const expectPopoverIsShow = (wrapper: ReactWrapper) => { + expect(wrapper.find('.inner').length).not.toBe(0) +} + +const expectPopoverIsHidden = (wrapper: ReactWrapper) => { + expect(wrapper.find('.inner').length).toBe(0) +} + +describe('Popover', () => { + it('should render correctly', async () => { + const wrapper = mount( + +
+ + ) + expectPopoverIsHidden(wrapper) + + wrapper.find('.tooltip').simulate('click', nativeEvent) + await updateWrapper(wrapper, 350) + expectPopoverIsShow(wrapper) + + wrapper.find('.tooltip').simulate('click', nativeEvent) + await updateWrapper(wrapper, 350) + expectPopoverIsHidden(wrapper) + + expect(() => wrapper.unmount()).not.toThrow() + }) + + it('should render react-node', async () => { + const wrapper = mount( + custom-content

}> +
+ + ) + wrapper.find('.tooltip').simulate('click', nativeEvent) + await updateWrapper(wrapper, 350) + expectPopoverIsShow(wrapper) + expect(wrapper.html()).toMatchSnapshot() + + const testNode = wrapper.find('#test') + expect(testNode.length).not.toBe(0) + expect(testNode.text()).toContain('custom-content') + }) + + it('should work with different triggers', async () => { + const wrapper = mount( + +
+ + ) + wrapper.find('.tooltip').simulate('mouseEnter') + await updateWrapper(wrapper, 350) + expectPopoverIsShow(wrapper) + }) + + it('should work with different placement', async () => { + const wrapper = mount( + +
+ + ) + wrapper.find('.tooltip').simulate('click', nativeEvent) + await updateWrapper(wrapper, 350) + expectPopoverIsShow(wrapper) + expect(wrapper.html()).toMatchSnapshot() + expect(() => wrapper.unmount()).not.toThrow() + }) + + it('should be render each popover item', async () => { + const content = () => ( +
+ + settings + + + + Command-Line + +
+ ) + const wrapper = mount(
) + wrapper.find('.tooltip').simulate('click', nativeEvent) + await updateWrapper(wrapper, 350) + expectPopoverIsShow(wrapper) + + const title = wrapper.find('.inner').find('.title') + const line = wrapper.find('.inner').find('.line') + expect(title.text()).toContain('settings') + expect(line.length).not.toBe(0) + expect(() => wrapper.unmount()).not.toThrow() + }) +})