From 5f28708cb99c631302b0cc1ccc14c1fc71af0730 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 11 Oct 2019 11:48:20 -0400 Subject: [PATCH] test(vnode): tests for shapeFlag and cloneVNode --- packages/runtime-core/__tests__/vnode.spec.ts | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/packages/runtime-core/__tests__/vnode.spec.ts b/packages/runtime-core/__tests__/vnode.spec.ts index b25494ee7e..1e691a5fba 100644 --- a/packages/runtime-core/__tests__/vnode.spec.ts +++ b/packages/runtime-core/__tests__/vnode.spec.ts @@ -1,5 +1,11 @@ import { createVNode } from '@vue/runtime-test' -import { ShapeFlags, Comment, Fragment, Text } from '@vue/runtime-core' +import { + ShapeFlags, + Comment, + Fragment, + Text, + cloneVNode +} from '@vue/runtime-core' import { mergeProps, normalizeVNode } from '../src/vnode' import { Data } from '../src/component' @@ -134,9 +140,39 @@ describe('vnode', () => { expect(normalizeVNode(true)).toMatchObject({ type: Text, children: `true` }) }) - test.todo('node type/shapeFlag inference') + test('type shapeFlag inference', () => { + expect(createVNode('div').shapeFlag).toBe(ShapeFlags.ELEMENT) + expect(createVNode({}).shapeFlag).toBe(ShapeFlags.STATEFUL_COMPONENT) + expect(createVNode(() => {}).shapeFlag).toBe( + ShapeFlags.FUNCTIONAL_COMPONENT + ) + expect(createVNode(Text).shapeFlag).toBe(0) + }) - test.todo('cloneVNode') + test('cloneVNode', () => { + const node1 = createVNode('div', { foo: 1 }, null) + expect(cloneVNode(node1)).toEqual(node1) + + const node2 = createVNode({}, null, [node1]) + const cloned2 = cloneVNode(node2) + expect(cloned2).toEqual(node2) + expect(cloneVNode(node2)).toEqual(node2) + expect(cloneVNode(node2)).toEqual(cloned2) + + // should reset mounted state + const node3 = createVNode('div', { foo: 1 }, [node1]) + node3.el = {} + node3.anchor = {} + node3.component = {} as any + node3.suspense = {} as any + expect(cloneVNode(node3)).toEqual({ + ...node3, + el: null, + anchor: null, + component: null, + suspense: null + }) + }) describe('mergeProps', () => { test('class', () => { -- 2.47.3