feat(Tabs): add before-change prop (#6817)

This commit is contained in:
neverland
2020-07-19 16:57:27 +08:00
committed by GitHub
parent 839f65e533
commit 9903230cb6
6 changed files with 196 additions and 19 deletions
+48
View File
@@ -362,3 +362,51 @@ test('should not trigger rendered event when disable lazy-render', async () => {
await later();
expect(onRendered).toHaveBeenCalledTimes(0);
});
test('before-change prop', async () => {
const onChange = jest.fn();
const wrapper = mount({
template: `
<van-tabs @change="onChange" :before-change="beforeChange">
<van-tab title="title1">Text</van-tab>
<van-tab title="title2">Text</van-tab>
<van-tab title="title3">Text</van-tab>
<van-tab title="title4">Text</van-tab>
<van-tab title="title5">Text</van-tab>
</van-tabs>
`,
methods: {
onChange,
beforeChange(name) {
switch (name) {
case 1:
return false;
case 2:
return true;
case 3:
return Promise.resolve(false);
case 4:
return Promise.resolve(true);
}
},
},
});
await later();
const tabs = wrapper.findAll('.van-tab');
tabs.at(1).trigger('click');
expect(onChange).toHaveBeenCalledTimes(0);
tabs.at(2).trigger('click');
expect(onChange).toHaveBeenCalledTimes(1);
expect(onChange).toHaveBeenLastCalledWith(2, 'title3');
tabs.at(3).trigger('click');
expect(onChange).toHaveBeenCalledTimes(1);
tabs.at(4).trigger('click');
await later();
expect(onChange).toHaveBeenCalledTimes(2);
expect(onChange).toHaveBeenLastCalledWith(4, 'title5');
});