mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
test(IndexBar): update test cases
This commit is contained in:
parent
c33b526af2
commit
ccc7f3be31
@ -1,49 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`should allow to custom anchor text 1`] = `
|
|
||||||
<div class="van-index-bar">
|
|
||||||
<div class="van-index-bar__sidebar"><span data-index="A" class="van-index-bar__index">A</span><span data-index="B" class="van-index-bar__index">B</span><span data-index="C" class="van-index-bar__index">C</span><span data-index="D" class="van-index-bar__index">D</span><span data-index="E" class="van-index-bar__index">E</span><span data-index="F" class="van-index-bar__index">F</span><span data-index="G" class="van-index-bar__index">G</span><span data-index="H" class="van-index-bar__index">H</span><span data-index="I" class="van-index-bar__index">I</span><span data-index="J" class="van-index-bar__index">J</span><span data-index="K" class="van-index-bar__index">K</span><span data-index="L" class="van-index-bar__index">L</span><span data-index="M" class="van-index-bar__index">M</span><span data-index="N" class="van-index-bar__index">N</span><span data-index="O" class="van-index-bar__index">O</span><span data-index="P" class="van-index-bar__index">P</span><span data-index="Q" class="van-index-bar__index">Q</span><span data-index="R" class="van-index-bar__index">R</span><span data-index="S" class="van-index-bar__index">S</span><span data-index="T" class="van-index-bar__index">T</span><span data-index="U" class="van-index-bar__index">U</span><span data-index="V" class="van-index-bar__index">V</span><span data-index="W" class="van-index-bar__index">W</span><span data-index="X" class="van-index-bar__index">X</span><span data-index="Y" class="van-index-bar__index">Y</span><span data-index="Z" class="van-index-bar__index">Z</span></div>
|
|
||||||
<div>
|
|
||||||
<div class="van-index-anchor">Title A</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div class="van-index-anchor">Title B</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`should update active anchor after page scroll 1`] = `
|
|
||||||
<div class="van-index-bar">
|
|
||||||
<div class="van-index-bar__sidebar"><span data-index="A" class="van-index-bar__index van-index-bar__index--active">A</span><span data-index="B" class="van-index-bar__index">B</span><span data-index="C" class="van-index-bar__index">C</span><span data-index="D" class="van-index-bar__index">D</span><span data-index="E" class="van-index-bar__index">E</span><span data-index="F" class="van-index-bar__index">F</span><span data-index="G" class="van-index-bar__index">G</span><span data-index="H" class="van-index-bar__index">H</span><span data-index="I" class="van-index-bar__index">I</span><span data-index="J" class="van-index-bar__index">J</span><span data-index="K" class="van-index-bar__index">K</span><span data-index="L" class="van-index-bar__index">L</span><span data-index="M" class="van-index-bar__index">M</span><span data-index="N" class="van-index-bar__index">N</span><span data-index="O" class="van-index-bar__index">O</span><span data-index="P" class="van-index-bar__index">P</span><span data-index="Q" class="van-index-bar__index">Q</span><span data-index="R" class="van-index-bar__index">R</span><span data-index="S" class="van-index-bar__index">S</span><span data-index="T" class="van-index-bar__index">T</span><span data-index="U" class="van-index-bar__index">U</span><span data-index="V" class="van-index-bar__index">V</span><span data-index="W" class="van-index-bar__index">W</span><span data-index="X" class="van-index-bar__index">X</span><span data-index="Y" class="van-index-bar__index">Y</span><span data-index="Z" class="van-index-bar__index">Z</span></div>
|
|
||||||
<div data-index="0">
|
|
||||||
<div class="van-index-anchor">1</div>
|
|
||||||
</div>
|
|
||||||
<div data-index="1">
|
|
||||||
<div class="van-index-anchor">2</div>
|
|
||||||
</div>
|
|
||||||
<div data-index="2">
|
|
||||||
<div class="van-index-anchor">3</div>
|
|
||||||
</div>
|
|
||||||
<div data-index="3">
|
|
||||||
<div class="van-index-anchor">4</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`should update active anchor after page scroll 2`] = `
|
|
||||||
<div class="van-index-bar">
|
|
||||||
<div class="van-index-bar__sidebar"><span data-index="A" class="van-index-bar__index">A</span><span data-index="B" class="van-index-bar__index van-index-bar__index--active">B</span><span data-index="C" class="van-index-bar__index">C</span><span data-index="D" class="van-index-bar__index">D</span><span data-index="E" class="van-index-bar__index">E</span><span data-index="F" class="van-index-bar__index">F</span><span data-index="G" class="van-index-bar__index">G</span><span data-index="H" class="van-index-bar__index">H</span><span data-index="I" class="van-index-bar__index">I</span><span data-index="J" class="van-index-bar__index">J</span><span data-index="K" class="van-index-bar__index">K</span><span data-index="L" class="van-index-bar__index">L</span><span data-index="M" class="van-index-bar__index">M</span><span data-index="N" class="van-index-bar__index">N</span><span data-index="O" class="van-index-bar__index">O</span><span data-index="P" class="van-index-bar__index">P</span><span data-index="Q" class="van-index-bar__index">Q</span><span data-index="R" class="van-index-bar__index">R</span><span data-index="S" class="van-index-bar__index">S</span><span data-index="T" class="van-index-bar__index">T</span><span data-index="U" class="van-index-bar__index">U</span><span data-index="V" class="van-index-bar__index">V</span><span data-index="W" class="van-index-bar__index">W</span><span data-index="X" class="van-index-bar__index">X</span><span data-index="Y" class="van-index-bar__index">Y</span><span data-index="Z" class="van-index-bar__index">Z</span></div>
|
|
||||||
<div data-index="0" style="height: 10px;">
|
|
||||||
<div class="van-index-anchor van-index-anchor--sticky van-hairline--bottom" style="z-index: undefined; transform: translate3d(0, 0px, 0);">1</div>
|
|
||||||
</div>
|
|
||||||
<div data-index="1" style="height: 10px;">
|
|
||||||
<div class="van-index-anchor van-index-anchor--sticky van-hairline--bottom" style="z-index: undefined; transform: translate3d(0, 10px, 0);">2</div>
|
|
||||||
</div>
|
|
||||||
<div data-index="2">
|
|
||||||
<div class="van-index-anchor">3</div>
|
|
||||||
</div>
|
|
||||||
<div data-index="3">
|
|
||||||
<div class="van-index-anchor">4</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`;
|
|
329
src/index-bar/test/__snapshots__/index.spec.js.snap
Normal file
329
src/index-bar/test/__snapshots__/index.spec.js.snap
Normal file
@ -0,0 +1,329 @@
|
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`should allow to custom anchor content 1`] = `
|
||||||
|
<div class="van-index-anchor">
|
||||||
|
Title A
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`should update active anchor after page scroll 1`] = `
|
||||||
|
<div class="van-index-bar">
|
||||||
|
<div class="van-index-bar__sidebar">
|
||||||
|
<span class="van-index-bar__index van-index-bar__index--active"
|
||||||
|
data-index="A"
|
||||||
|
>
|
||||||
|
A
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="B"
|
||||||
|
>
|
||||||
|
B
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="C"
|
||||||
|
>
|
||||||
|
C
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="D"
|
||||||
|
>
|
||||||
|
D
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="E"
|
||||||
|
>
|
||||||
|
E
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="F"
|
||||||
|
>
|
||||||
|
F
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="G"
|
||||||
|
>
|
||||||
|
G
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="H"
|
||||||
|
>
|
||||||
|
H
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="I"
|
||||||
|
>
|
||||||
|
I
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="J"
|
||||||
|
>
|
||||||
|
J
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="K"
|
||||||
|
>
|
||||||
|
K
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="L"
|
||||||
|
>
|
||||||
|
L
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="M"
|
||||||
|
>
|
||||||
|
M
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="N"
|
||||||
|
>
|
||||||
|
N
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="O"
|
||||||
|
>
|
||||||
|
O
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="P"
|
||||||
|
>
|
||||||
|
P
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="Q"
|
||||||
|
>
|
||||||
|
Q
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="R"
|
||||||
|
>
|
||||||
|
R
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="S"
|
||||||
|
>
|
||||||
|
S
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="T"
|
||||||
|
>
|
||||||
|
T
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="U"
|
||||||
|
>
|
||||||
|
U
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="V"
|
||||||
|
>
|
||||||
|
V
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="W"
|
||||||
|
>
|
||||||
|
W
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="X"
|
||||||
|
>
|
||||||
|
X
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="Y"
|
||||||
|
>
|
||||||
|
Y
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="Z"
|
||||||
|
>
|
||||||
|
Z
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div data-index="0">
|
||||||
|
<div class="van-index-anchor">
|
||||||
|
1
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-index="1">
|
||||||
|
<div class="van-index-anchor">
|
||||||
|
2
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-index="2">
|
||||||
|
<div class="van-index-anchor">
|
||||||
|
3
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-index="3">
|
||||||
|
<div class="van-index-anchor">
|
||||||
|
4
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`should update active anchor after page scroll 2`] = `
|
||||||
|
<div class="van-index-bar">
|
||||||
|
<div class="van-index-bar__sidebar">
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="A"
|
||||||
|
>
|
||||||
|
A
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index van-index-bar__index--active"
|
||||||
|
data-index="B"
|
||||||
|
>
|
||||||
|
B
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="C"
|
||||||
|
>
|
||||||
|
C
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="D"
|
||||||
|
>
|
||||||
|
D
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="E"
|
||||||
|
>
|
||||||
|
E
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="F"
|
||||||
|
>
|
||||||
|
F
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="G"
|
||||||
|
>
|
||||||
|
G
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="H"
|
||||||
|
>
|
||||||
|
H
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="I"
|
||||||
|
>
|
||||||
|
I
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="J"
|
||||||
|
>
|
||||||
|
J
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="K"
|
||||||
|
>
|
||||||
|
K
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="L"
|
||||||
|
>
|
||||||
|
L
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="M"
|
||||||
|
>
|
||||||
|
M
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="N"
|
||||||
|
>
|
||||||
|
N
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="O"
|
||||||
|
>
|
||||||
|
O
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="P"
|
||||||
|
>
|
||||||
|
P
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="Q"
|
||||||
|
>
|
||||||
|
Q
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="R"
|
||||||
|
>
|
||||||
|
R
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="S"
|
||||||
|
>
|
||||||
|
S
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="T"
|
||||||
|
>
|
||||||
|
T
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="U"
|
||||||
|
>
|
||||||
|
U
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="V"
|
||||||
|
>
|
||||||
|
V
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="W"
|
||||||
|
>
|
||||||
|
W
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="X"
|
||||||
|
>
|
||||||
|
X
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="Y"
|
||||||
|
>
|
||||||
|
Y
|
||||||
|
</span>
|
||||||
|
<span class="van-index-bar__index"
|
||||||
|
data-index="Z"
|
||||||
|
>
|
||||||
|
Z
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div data-index="0"
|
||||||
|
style="height: 10px;"
|
||||||
|
>
|
||||||
|
<div class="van-index-anchor van-index-anchor--sticky van-hairline--bottom"
|
||||||
|
style="z-index: undefined;"
|
||||||
|
>
|
||||||
|
1
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-index="1"
|
||||||
|
style="height: 10px;"
|
||||||
|
>
|
||||||
|
<div class="van-index-anchor van-index-anchor--sticky van-hairline--bottom"
|
||||||
|
style="z-index: undefined; transform: translate3d(0, 10px, 0);"
|
||||||
|
>
|
||||||
|
2
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-index="2">
|
||||||
|
<div class="van-index-anchor">
|
||||||
|
3
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-index="3">
|
||||||
|
<div class="van-index-anchor">
|
||||||
|
4
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
@ -1,30 +1,29 @@
|
|||||||
|
import { nextTick, onMounted, ref } from 'vue';
|
||||||
import { mount, trigger, triggerDrag, mockScrollIntoView } from '../../../test';
|
import { mount, trigger, triggerDrag, mockScrollIntoView } from '../../../test';
|
||||||
|
import IndexBar from '..';
|
||||||
|
import IndexAnchor from '../../index-anchor';
|
||||||
|
|
||||||
test('should allow to custom anchor text', () => {
|
test('should allow to custom anchor content', () => {
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
template: `
|
render: () => (
|
||||||
<van-index-bar>
|
<IndexBar>
|
||||||
<van-index-anchor index="A">Title A</van-index-anchor>
|
<IndexAnchor index="A">Title A</IndexAnchor>
|
||||||
<van-index-anchor index="B">Title B</van-index-anchor>
|
</IndexBar>
|
||||||
</van-index-bar>
|
),
|
||||||
`,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(wrapper.html()).toMatchSnapshot();
|
expect(wrapper.find('.van-index-anchor').html()).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should scroll to anchor and emit select event after clicking the index-bar', () => {
|
test('should scroll to anchor and emit select event after clicking the index-bar', () => {
|
||||||
const onSelect = jest.fn();
|
const onSelect = jest.fn();
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
template: `
|
render: () => (
|
||||||
<van-index-bar @select="onSelect">
|
<IndexBar onSelect={onSelect}>
|
||||||
<van-index-anchor index="A" />
|
<IndexAnchor index="A" />
|
||||||
<van-index-anchor index="B" />
|
<IndexAnchor index="B" />
|
||||||
</van-index-bar>
|
</IndexBar>
|
||||||
`,
|
),
|
||||||
methods: {
|
|
||||||
onSelect,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const fn = mockScrollIntoView();
|
const fn = mockScrollIntoView();
|
||||||
@ -38,16 +37,13 @@ test('should scroll to anchor and emit select event after clicking the index-bar
|
|||||||
test('should scroll to anchor after touching the index-bar', () => {
|
test('should scroll to anchor after touching the index-bar', () => {
|
||||||
const onSelect = jest.fn();
|
const onSelect = jest.fn();
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
template: `
|
render: () => (
|
||||||
<van-index-bar @select="onSelect">
|
<IndexBar onSelect={onSelect}>
|
||||||
<van-index-anchor index="A" />
|
<IndexAnchor index="A" />
|
||||||
<van-index-anchor index="B" />
|
<IndexAnchor index="B" />
|
||||||
<van-index-anchor index="XXX" />
|
<IndexAnchor index="XXX" />
|
||||||
</van-index-bar>
|
</IndexBar>
|
||||||
`,
|
),
|
||||||
methods: {
|
|
||||||
onSelect,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const fn = mockScrollIntoView();
|
const fn = mockScrollIntoView();
|
||||||
@ -58,7 +54,7 @@ test('should scroll to anchor after touching the index-bar', () => {
|
|||||||
const index = y / 100;
|
const index = y / 100;
|
||||||
|
|
||||||
if (index === 1 || index === 2) {
|
if (index === 1 || index === 2) {
|
||||||
return indexes.at(index).element;
|
return indexes[index].element;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index === 3) {
|
if (index === 3) {
|
||||||
@ -83,7 +79,7 @@ test('should scroll to anchor after touching the index-bar', () => {
|
|||||||
expect(onSelect).toHaveBeenCalledWith('B');
|
expect(onSelect).toHaveBeenCalledWith('B');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should update active anchor after page scroll', () => {
|
test('should update active anchor after page scroll', async () => {
|
||||||
const nativeRect = Element.prototype.getBoundingClientRect;
|
const nativeRect = Element.prototype.getBoundingClientRect;
|
||||||
Element.prototype.getBoundingClientRect = function () {
|
Element.prototype.getBoundingClientRect = function () {
|
||||||
const { index } = this.dataset;
|
const { index } = this.dataset;
|
||||||
@ -94,36 +90,38 @@ test('should update active anchor after page scroll', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
template: `
|
setup() {
|
||||||
<van-index-bar :sticky="sticky">
|
const sticky = ref(false);
|
||||||
<van-index-anchor
|
|
||||||
v-for="index in 4"
|
|
||||||
:key="index"
|
|
||||||
:index="index"
|
|
||||||
:data-index="index - 1"
|
|
||||||
/>
|
|
||||||
</van-index-bar>
|
|
||||||
`,
|
|
||||||
data() {
|
|
||||||
return {
|
return {
|
||||||
sticky: false,
|
sticky,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<IndexBar sticky={this.sticky}>
|
||||||
|
<IndexAnchor index={1} data-index="0" />
|
||||||
|
<IndexAnchor index={2} data-index="1" />
|
||||||
|
<IndexAnchor index={3} data-index="2" />
|
||||||
|
<IndexAnchor index={4} data-index="3" />
|
||||||
|
</IndexBar>
|
||||||
|
);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
window.scrollTop = 0;
|
window.scrollTop = 0;
|
||||||
trigger(window, 'scroll');
|
await trigger(window, 'scroll');
|
||||||
expect(wrapper.html()).toMatchSnapshot();
|
expect(wrapper.html()).toMatchSnapshot();
|
||||||
|
|
||||||
wrapper.setData({ sticky: true });
|
wrapper.vm.sticky = true;
|
||||||
trigger(window, 'scroll');
|
await nextTick();
|
||||||
|
await trigger(window, 'scroll');
|
||||||
expect(wrapper.html()).toMatchSnapshot();
|
expect(wrapper.html()).toMatchSnapshot();
|
||||||
wrapper.vm.$unmount();
|
wrapper.unmount();
|
||||||
|
|
||||||
Element.prototype.getBoundingClientRect = nativeRect;
|
Element.prototype.getBoundingClientRect = nativeRect;
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should emit change event when active index changed', () => {
|
test('should emit change event when active index changed', async () => {
|
||||||
const nativeRect = Element.prototype.getBoundingClientRect;
|
const nativeRect = Element.prototype.getBoundingClientRect;
|
||||||
Element.prototype.getBoundingClientRect = function () {
|
Element.prototype.getBoundingClientRect = function () {
|
||||||
const { index } = this.dataset;
|
const { index } = this.dataset;
|
||||||
@ -136,58 +134,59 @@ test('should emit change event when active index changed', () => {
|
|||||||
const onChange = jest.fn();
|
const onChange = jest.fn();
|
||||||
|
|
||||||
mount({
|
mount({
|
||||||
template: `
|
render() {
|
||||||
<van-index-bar @change="onChange">
|
return (
|
||||||
<van-index-anchor
|
<IndexBar onChange={onChange}>
|
||||||
v-for="index in 4"
|
<IndexAnchor index={1} data-index="0" />
|
||||||
:key="index"
|
<IndexAnchor index={2} data-index="1" />
|
||||||
:index="index"
|
<IndexAnchor index={3} data-index="2" />
|
||||||
:data-index="index - 1"
|
<IndexAnchor index={4} data-index="3" />
|
||||||
/>
|
</IndexBar>
|
||||||
</van-index-bar>
|
);
|
||||||
`,
|
|
||||||
methods: {
|
|
||||||
onChange,
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
window.scrollTop = 0;
|
window.scrollTop = 0;
|
||||||
trigger(window, 'scroll');
|
await trigger(window, 'scroll');
|
||||||
expect(onChange).toHaveBeenCalledTimes(1);
|
expect(onChange).toHaveBeenCalledTimes(1);
|
||||||
expect(onChange).toHaveBeenLastCalledWith('B');
|
expect(onChange).toHaveBeenLastCalledWith('B');
|
||||||
|
|
||||||
window.scrollTop = 100;
|
window.scrollTop = 100;
|
||||||
trigger(window, 'scroll');
|
await trigger(window, 'scroll');
|
||||||
expect(onChange).toHaveBeenCalledTimes(2);
|
expect(onChange).toHaveBeenCalledTimes(2);
|
||||||
expect(onChange).toHaveBeenLastCalledWith('D');
|
expect(onChange).toHaveBeenLastCalledWith('D');
|
||||||
|
|
||||||
Element.prototype.getBoundingClientRect = nativeRect;
|
Element.prototype.getBoundingClientRect = nativeRect;
|
||||||
});
|
});
|
||||||
|
|
||||||
test('scroll to target element', () => {
|
test('should scroll to target element after calling scrollTo method', () => {
|
||||||
const onSelect = jest.fn();
|
const onSelect = jest.fn();
|
||||||
|
const scrollIntoView = mockScrollIntoView();
|
||||||
|
|
||||||
mount({
|
mount({
|
||||||
template: `
|
setup() {
|
||||||
<van-index-bar ref="anchorRef" @select="onSelect">
|
const anchorRef = ref();
|
||||||
<van-index-anchor index="A" />
|
|
||||||
<van-index-anchor index="B" />
|
onMounted(() => {
|
||||||
<van-index-anchor index="C" />
|
anchorRef.value.scrollTo('C');
|
||||||
<van-index-anchor index="D" />
|
});
|
||||||
<van-index-anchor index="E" />
|
|
||||||
<van-index-anchor index="F" />
|
return {
|
||||||
<van-index-anchor index="XXX" />
|
anchorRef,
|
||||||
</van-index-bar>
|
};
|
||||||
`,
|
|
||||||
methods: {
|
|
||||||
onSelect,
|
|
||||||
},
|
},
|
||||||
mounted() {
|
render() {
|
||||||
this.$refs.anchorRef.scrollTo('C');
|
return (
|
||||||
|
<IndexBar ref="anchorRef" onSelect={onSelect}>
|
||||||
|
<IndexAnchor index="A" />
|
||||||
|
<IndexAnchor index="B" />
|
||||||
|
<IndexAnchor index="C" />
|
||||||
|
<IndexAnchor index="D" />
|
||||||
|
</IndexBar>
|
||||||
|
);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const fn = mockScrollIntoView();
|
expect(scrollIntoView).toHaveBeenCalledTimes(1);
|
||||||
|
|
||||||
expect(fn).toHaveBeenCalledTimes(1);
|
|
||||||
expect(onSelect).toHaveBeenCalledWith('C');
|
expect(onSelect).toHaveBeenCalledWith('C');
|
||||||
});
|
});
|
@ -1,4 +1,4 @@
|
|||||||
import { ComponentPublicInstance } from 'vue';
|
import { ComponentPublicInstance, nextTick } from 'vue';
|
||||||
import { VueWrapper } from '@vue/test-utils';
|
import { VueWrapper } from '@vue/test-utils';
|
||||||
|
|
||||||
function getTouch(el: Element | Window, x: number, y: number) {
|
function getTouch(el: Element | Window, x: number, y: number) {
|
||||||
@ -43,6 +43,8 @@ export function trigger(
|
|||||||
});
|
});
|
||||||
|
|
||||||
el.dispatchEvent(event);
|
el.dispatchEvent(event);
|
||||||
|
|
||||||
|
return nextTick();
|
||||||
}
|
}
|
||||||
|
|
||||||
// simulate drag gesture
|
// simulate drag gesture
|
||||||
|
Loading…
x
Reference in New Issue
Block a user