From: Cr <631807682@qq.com> Date: Fri, 11 Oct 2019 14:13:04 +0000 (+0800) Subject: test: add array of objects class test case for mergeProps (#201) X-Git-Tag: v3.0.0-alpha.0~498 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3cdefdbe2ddbf62de87fb8734c6abf6cc25e6f39;p=thirdparty%2Fvuejs%2Fcore.git test: add array of objects class test case for mergeProps (#201) --- diff --git a/packages/runtime-core/__tests__/vnode.spec.ts b/packages/runtime-core/__tests__/vnode.spec.ts index 631cc89a07..dbcc1da328 100644 --- a/packages/runtime-core/__tests__/vnode.spec.ts +++ b/packages/runtime-core/__tests__/vnode.spec.ts @@ -1,5 +1,7 @@ import { createVNode } from '@vue/runtime-test' import { ShapeFlags } from '@vue/runtime-core' +import { mergeProps } from '../src/vnode' +import { Data } from '../src/component' describe('vnode', () => { test('create with just tag', () => { @@ -113,5 +115,69 @@ describe('vnode', () => { test.todo('cloneVNode') - test.todo('mergeProps') + describe('mergeProps', () => { + test('class', () => { + let props1: Data = { class: 'c' } + let props2: Data = { class: ['cc'] } + let props3: Data = { class: [{ ccc: true }] } + let props4: Data = { class: { cccc: true } } + expect(mergeProps(props1, props2, props3, props4)).toMatchObject({ + class: 'c cc ccc cccc' + }) + }) + + test('style', () => { + let props1: Data = { + style: { + color: 'red', + fontSize: 10 + } + } + let props2: Data = { + style: [ + { + color: 'blue', + with: '200px' + }, + { + with: '300px', + height: '300px', + fontSize: 30 + } + ] + } + expect(mergeProps(props1, props2)).toMatchObject({ + style: { + color: 'blue', + with: '300px', + height: '300px', + fontSize: 30 + } + }) + }) + + test('handlers', () => { + let clickHander1 = function() {} + let clickHander2 = function() {} + let focusHander2 = function() {} + + let props1: Data = { onClick: clickHander1 } + let props2: Data = { onClick: clickHander2, onFocus: focusHander2 } + expect(mergeProps(props1, props2)).toMatchObject({ + onClick: [clickHander1, clickHander2], + onFocus: focusHander2 + }) + }) + + test('default', () => { + let props1: Data = { foo: 'c' } + let props2: Data = { foo: {}, bar: ['cc'] } + let props3: Data = { baz: { ccc: true } } + expect(mergeProps(props1, props2, props3)).toMatchObject({ + foo: {}, + bar: ['cc'], + baz: { ccc: true } + }) + }) + }) })