From dd7583e23f6209761a4bbdadefda1137ed3a6377 Mon Sep 17 00:00:00 2001
From: chenjiahan <chenjiahan@youzan.com>
Date: Sat, 9 Jan 2021 15:38:03 +0800
Subject: [PATCH] test(Tab): update test cases

---
 .../test/__snapshots__/insert.legacy.js.snap  |  63 -------
 .../test/__snapshots__/insert.spec.js.snap    | 162 ++++++++++++++++++
 src/tab/test/insert.legacy.js                 |  75 --------
 src/tab/test/insert.spec.js                   |  85 +++++++++
 4 files changed, 247 insertions(+), 138 deletions(-)
 delete mode 100644 src/tab/test/__snapshots__/insert.legacy.js.snap
 create mode 100644 src/tab/test/__snapshots__/insert.spec.js.snap
 delete mode 100644 src/tab/test/insert.legacy.js
 create mode 100644 src/tab/test/insert.spec.js

diff --git a/src/tab/test/__snapshots__/insert.legacy.js.snap b/src/tab/test/__snapshots__/insert.legacy.js.snap
deleted file mode 100644
index bd82b97fe..000000000
--- a/src/tab/test/__snapshots__/insert.legacy.js.snap
+++ /dev/null
@@ -1,63 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`insert tab dynamically 1`] = `
-<div class="van-tabs van-tabs--line">
-  <div class="van-tabs__wrap">
-    <div role="tablist" class="van-tabs__nav van-tabs__nav--line">
-      <div role="tab" class="van-tab"><span class="van-tab__text van-tab__text--ellipsis">1</span></div>
-      <div role="tab" aria-selected="true" class="van-tab van-tab--active"><span class="van-tab__text van-tab__text--ellipsis">2</span></div>
-      <div role="tab" class="van-tab"><span class="van-tab__text van-tab__text--ellipsis">3</span></div>
-      <div class="van-tabs__line" style="transform: translateX(0px) translateX(-50%);"></div>
-    </div>
-  </div>
-  <div class="van-tabs__content">
-    <div role="tabpanel" class="van-tab__pane" style="display: none;">
-      <!---->
-    </div>
-    <div>
-      <div role="tabpanel" class="van-tab__pane">2</div>
-    </div>
-    <div role="tabpanel" class="van-tab__pane" style="display: none;">3</div>
-  </div>
-</div>
-`;
-
-exports[`insert tab with child component 1`] = `
-<div class="van-tabs van-tabs--line">
-  <div class="van-tabs__wrap">
-    <div role="tablist" class="van-tabs__nav van-tabs__nav--line">
-      <div role="tab" aria-selected="true" class="van-tab van-tab--active"><span class="van-tab__text van-tab__text--ellipsis">1</span></div>
-      <div role="tab" class="van-tab"><span class="van-tab__text van-tab__text--ellipsis">2</span></div>
-      <div role="tab" class="van-tab"><span class="van-tab__text van-tab__text--ellipsis">3</span></div>
-      <div class="van-tabs__line"></div>
-    </div>
-  </div>
-  <div class="van-tabs__content">
-    <div role="tabpanel" class="van-tab__pane">1</div>
-    <div role="tabpanel" class="van-tab__pane" style="display: none;">
-      <!---->
-    </div>
-    <div role="tabpanel" class="van-tab__pane" style="display: none;">
-      <!---->
-    </div>
-  </div>
-</div>
-`;
-
-exports[`insert tab with name dynamically 1`] = `
-<div class="van-tabs van-tabs--line">
-  <div class="van-tabs__wrap">
-    <div role="tablist" class="van-tabs__nav van-tabs__nav--line">
-      <div role="tab" class="van-tab"><span class="van-tab__text van-tab__text--ellipsis">1</span></div>
-      <div role="tab" aria-selected="true" class="van-tab van-tab--active"><span class="van-tab__text van-tab__text--ellipsis">2</span></div>
-      <div class="van-tabs__line" style="transform: translateX(0px) translateX(-50%);"></div>
-    </div>
-  </div>
-  <div class="van-tabs__content">
-    <div role="tabpanel" class="van-tab__pane" style="display: none;">
-      <!---->
-    </div>
-    <div role="tabpanel" class="van-tab__pane" style="">1</div>
-  </div>
-</div>
-`;
diff --git a/src/tab/test/__snapshots__/insert.spec.js.snap b/src/tab/test/__snapshots__/insert.spec.js.snap
new file mode 100644
index 000000000..1fe777803
--- /dev/null
+++ b/src/tab/test/__snapshots__/insert.spec.js.snap
@@ -0,0 +1,162 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render Tab inside a component correctly 1`] = `
+<div class="van-tabs van-tabs--line">
+  <div class="van-tabs__wrap">
+    <div role="tablist"
+         class="van-tabs__nav van-tabs__nav--line"
+    >
+      <div role="tab"
+           class="van-tab"
+           aria-selected="false"
+      >
+        <span class="van-tab__text van-tab__text--ellipsis">
+          2
+        </span>
+      </div>
+      <div role="tab"
+           class="van-tab van-tab--active"
+           aria-selected="true"
+      >
+        <span class="van-tab__text van-tab__text--ellipsis">
+          1
+        </span>
+      </div>
+      <div role="tab"
+           class="van-tab"
+           aria-selected="false"
+      >
+        <span class="van-tab__text van-tab__text--ellipsis">
+          3
+        </span>
+      </div>
+      <div class="van-tabs__line"
+           style="transform: translateX(0px) translateX(-50%);"
+      >
+      </div>
+    </div>
+  </div>
+  <div class="van-tabs__content">
+    <div role="tabpanel"
+         class="van-tab__pane"
+         style
+    >
+      1
+    </div>
+    <div role="tabpanel"
+         class="van-tab__pane"
+         style="display: none;"
+    >
+    </div>
+    <div role="tabpanel"
+         class="van-tab__pane"
+         style="display: none;"
+    >
+    </div>
+  </div>
+</div>
+`;
+
+exports[`should render correctly after inserting a tab 1`] = `
+<div class="van-tabs van-tabs--line">
+  <div class="van-tabs__wrap">
+    <div role="tablist"
+         class="van-tabs__nav van-tabs__nav--line"
+    >
+      <div role="tab"
+           class="van-tab"
+           aria-selected="false"
+      >
+        <span class="van-tab__text van-tab__text--ellipsis">
+          1
+        </span>
+      </div>
+      <div role="tab"
+           class="van-tab van-tab--active"
+           aria-selected="true"
+      >
+        <span class="van-tab__text van-tab__text--ellipsis">
+          2
+        </span>
+      </div>
+      <div role="tab"
+           class="van-tab"
+           aria-selected="false"
+      >
+        <span class="van-tab__text van-tab__text--ellipsis">
+          3
+        </span>
+      </div>
+      <div class="van-tabs__line"
+           style="transform: translateX(0px) translateX(-50%);"
+      >
+      </div>
+    </div>
+  </div>
+  <div class="van-tabs__content">
+    <div role="tabpanel"
+         class="van-tab__pane"
+         style="display: none;"
+    >
+    </div>
+    <div>
+      <div role="tabpanel"
+           class="van-tab__pane"
+      >
+        2
+      </div>
+    </div>
+    <div role="tabpanel"
+         class="van-tab__pane"
+         style="display: none;"
+    >
+      3
+    </div>
+  </div>
+</div>
+`;
+
+exports[`should render correctly after inserting a tab with name 1`] = `
+<div class="van-tabs van-tabs--line">
+  <div class="van-tabs__wrap">
+    <div role="tablist"
+         class="van-tabs__nav van-tabs__nav--line"
+    >
+      <div role="tab"
+           class="van-tab van-tab--active"
+           aria-selected="true"
+      >
+        <span class="van-tab__text van-tab__text--ellipsis">
+          bar
+        </span>
+      </div>
+      <div role="tab"
+           class="van-tab"
+           aria-selected="false"
+      >
+        <span class="van-tab__text van-tab__text--ellipsis">
+          foo
+        </span>
+      </div>
+      <div class="van-tabs__line"
+           style="transform: translateX(0px) translateX(-50%);"
+      >
+      </div>
+    </div>
+  </div>
+  <div class="van-tabs__content">
+    <div role="tabpanel"
+         class="van-tab__pane"
+         style="display: none;"
+    >
+      bar
+    </div>
+    <div role="tabpanel"
+         class="van-tab__pane"
+         style
+    >
+      foo
+    </div>
+  </div>
+</div>
+`;
diff --git a/src/tab/test/insert.legacy.js b/src/tab/test/insert.legacy.js
deleted file mode 100644
index 9ac0e07e3..000000000
--- a/src/tab/test/insert.legacy.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import { mount, later } from '../../../test';
-
-// this case will throw wierd error in index.spec.js
-// so separate it
-test('insert tab dynamically', async () => {
-  const wrapper = mount({
-    template: `
-      <van-tabs v-model="active">
-        <van-tab title="1">1</van-tab>
-        <div v-if="insert">
-          <van-tab title="2">2</van-tab>
-        </div>
-        <van-tab title="3">3</van-tab>
-      </van-tabs>
-    `,
-    data() {
-      return {
-        insert: false,
-        active: 1,
-      };
-    },
-  });
-
-  await later();
-  wrapper.setData({ insert: true });
-  expect(wrapper.html()).toMatchSnapshot();
-});
-
-test('insert tab with name dynamically', async () => {
-  const onChange = jest.fn();
-  const wrapper = mount({
-    template: `
-      <van-tabs v-model="active" @change="onChange">
-        <van-tab v-if="insert" title="1" name="bar">2</van-tab>
-        <van-tab title="2" name="foo">1</van-tab>
-      </van-tabs>
-    `,
-    data() {
-      return {
-        insert: false,
-        active: 'foo',
-      };
-    },
-    methods: {
-      onChange,
-    },
-  });
-
-  await later();
-  wrapper.setData({ insert: true });
-  expect(wrapper.html()).toMatchSnapshot();
-  expect(onChange).toHaveBeenCalledTimes(0);
-});
-
-// this case will throw wierd error in index.spec.js
-// so separate it
-test('insert tab with child component', async () => {
-  const wrapper = mount({
-    template: `
-      <van-tabs v-model="active">
-        <van-tab title="1">1</van-tab>
-        <my-tab />
-        <van-tab title="3">3</van-tab>
-      </van-tabs>
-    `,
-    components: {
-      'my-tab': {
-        template: `<van-tab title="2">2</van-tab>`,
-      },
-    },
-  });
-
-  await later();
-  expect(wrapper.html()).toMatchSnapshot();
-});
diff --git a/src/tab/test/insert.spec.js b/src/tab/test/insert.spec.js
new file mode 100644
index 000000000..0254a37aa
--- /dev/null
+++ b/src/tab/test/insert.spec.js
@@ -0,0 +1,85 @@
+import { mount, later } from '../../../test';
+import Tab from '..';
+import Tabs from '../../tabs';
+
+test('should render correctly after inserting a tab', async () => {
+  const wrapper = mount({
+    render() {
+      return (
+        <Tabs v-model={[this.active, 'active']}>
+          <Tab title="1">1</Tab>
+          {this.insert && (
+            <div>
+              <Tab title="2">2</Tab>
+            </div>
+          )}
+          <Tab title="3">3</Tab>
+        </Tabs>
+      );
+    },
+    data() {
+      return {
+        insert: false,
+        active: 1,
+      };
+    },
+  });
+
+  await later();
+  await wrapper.setData({ insert: true });
+  expect(wrapper.html()).toMatchSnapshot();
+});
+
+test('should render correctly after inserting a tab with name', async () => {
+  const onChange = jest.fn();
+  const wrapper = mount({
+    render() {
+      return (
+        <Tabs v-model={[this.active, 'active']} onChange={onChange}>
+          {this.insert && (
+            <Tab title="bar" name="bar">
+              bar
+            </Tab>
+          )}
+          <Tab title="foo" name="foo">
+            foo
+          </Tab>
+        </Tabs>
+      );
+    },
+    data() {
+      return {
+        insert: false,
+        active: 'foo',
+      };
+    },
+  });
+
+  await later();
+  await wrapper.setData({ insert: true });
+  expect(wrapper.html()).toMatchSnapshot();
+  expect(onChange).toHaveBeenCalledTimes(0);
+});
+
+test('should render Tab inside a component correctly', async () => {
+  const MyTab = {
+    render() {
+      return <Tab title="2">2</Tab>;
+    },
+  };
+
+  const wrapper = mount({
+    render() {
+      return (
+        <Tabs active={1}>
+          <Tab title="1">1</Tab>
+          <MyTab />
+          <Tab title="3">3</Tab>
+        </Tabs>
+      );
+    },
+  });
+
+  await later();
+  expect(wrapper.html()).toMatchSnapshot();
+});