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()
+ })
+})