From 3647512e09b97d7a0f4cbb3dc07b600968ee885c Mon Sep 17 00:00:00 2001 From: zazzaz Date: Tue, 11 Aug 2020 15:59:25 +0800 Subject: [PATCH] test: add test --- .../scrollbar/__tests__/scrollbar.spec.ts | 74 ++++++++++++++++--- 1 file changed, 65 insertions(+), 9 deletions(-) diff --git a/packages/scrollbar/__tests__/scrollbar.spec.ts b/packages/scrollbar/__tests__/scrollbar.spec.ts index 24029605d4..88c0f6bde5 100644 --- a/packages/scrollbar/__tests__/scrollbar.spec.ts +++ b/packages/scrollbar/__tests__/scrollbar.spec.ts @@ -1,15 +1,71 @@ import { mount } from '@vue/test-utils' -import Scrollbar from '../src/index.vue' +import Scrollbar from '../src/index' +const wait = (ms = 0) => (new Promise(resolve => setTimeout(() => resolve(), ms))) +const makeScroll = async (dom, name, number ) => { + dom[name] = number + dom.dispatchEvent(new CustomEvent('scroll')) + // must use setTimeout instead of nextTick to wait dom change + return await wait() +} +const _mount = (template: string) => mount({ + components: { + 'el-scrollbar': Scrollbar, + }, + template, +}) -const AXIOM = 'Rem is the best girl' - -describe('Scrollbar.vue', () => { - test('render test', () => { - const wrapper = mount(Scrollbar, { - slots: { - default: AXIOM, +describe('ScrollBar', () => { + test('vertical', async () => { + const outterHeight = 200 + const innerHeight = 500 + const wrapper = _mount(` + +
+
+`) + Object.defineProperties(window.HTMLElement.prototype, { + clientHeight: { + get () { + return outterHeight + }, + }, + scrollHeight:{ + get () { + return innerHeight + }, }, }) - expect(wrapper.text()).toEqual(AXIOM) + const scrollDom = wrapper.find('.el-scrollbar__wrap').element + await makeScroll(scrollDom, 'scrollTop', 100) + expect(wrapper.find('.is-vertical div').attributes('style')).toContain('height: 40%; transform: translateY(50%); webkit-transform: translateY(50%)') + await makeScroll(scrollDom, 'scrollTop', 300) + expect(wrapper.find('.is-vertical div').attributes('style')).toContain('height: 40%; transform: translateY(150%); webkit-transform: translateY(150%)') + }) + + test('horizontal', async () => { + const outterWidth = 200 + const innerWidth = 500 + const wrapper = _mount(` + +
+
+`) + Object.defineProperties(window.HTMLElement.prototype, { + clientWidth: { + get () { + return outterWidth + }, + }, + scrollWidth:{ + get () { + return innerWidth + }, + }, + }) + const scrollDom = wrapper.find('.el-scrollbar__wrap').element + await makeScroll(scrollDom, 'scrollLeft', 100) + expect(wrapper.find('.is-horizontal div').attributes('style')).toContain('width: 40%; transform: translateX(50%); webkit-transform: translateX(50%)') + await makeScroll(scrollDom, 'scrollLeft', 300) + expect(wrapper.find('.is-horizontal div').attributes('style')).toContain('width: 40%; transform: translateX(150%); webkit-transform: translateX(150%)') }) })