From: Evan You Date: Wed, 17 Oct 2018 21:36:34 +0000 (-0400) Subject: test: wip tests for inheritance and mixins X-Git-Tag: v3.0.0-alpha.0~1092 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=05fcfa078234ed5790a42fbb9aea749baacae1a1;p=thirdparty%2Fvuejs%2Fcore.git test: wip tests for inheritance and mixins --- diff --git a/packages/core/__tests__/inheritance.spec.ts b/packages/core/__tests__/inheritance.spec.ts new file mode 100644 index 0000000000..09dc4bd765 --- /dev/null +++ b/packages/core/__tests__/inheritance.spec.ts @@ -0,0 +1,44 @@ +import { Component, createInstance } from '@vue/renderer-test' + +describe('class inheritance', () => { + it('should merge data', () => { + class Base extends Component { + foo = 1 + data() { + return { + bar: 2 + } + } + } + + class Child extends Base { + foo: number + bar: number + baz: number + qux: number = 4 + + data(): any { + return { + baz: 3 + } + } + } + + const child = createInstance(Child) + + expect(child.foo).toBe(1) + expect(child.bar).toBe(2) + expect(child.baz).toBe(3) + expect(child.qux).toBe(4) + }) + + it('should merge props', () => {}) + + it('should merge lifecycle hooks', () => {}) + + it('should merge watchers', () => {}) + + it('should inherit methods', () => {}) + + it('should inherit computed properties', () => {}) +}) diff --git a/packages/core/__tests__/mixins.spec.ts b/packages/core/__tests__/mixins.spec.ts new file mode 100644 index 0000000000..b7a1bc407a --- /dev/null +++ b/packages/core/__tests__/mixins.spec.ts @@ -0,0 +1,7 @@ +describe('mixins', () => { + it('should work with classes', () => {}) + + it('should work with objects', () => {}) + + it('should work with a mix of objects and classes', () => {}) +}) diff --git a/packages/renderer-test/src/index.ts b/packages/renderer-test/src/index.ts index fda7490c92..74611f7fea 100644 --- a/packages/renderer-test/src/index.ts +++ b/packages/renderer-test/src/index.ts @@ -1,4 +1,10 @@ -import { createRenderer, VNode, Component } from '@vue/core' +import { + h, + createRenderer, + VNode, + Component, + createComponentInstance +} from '@vue/core' import { nodeOps, TestElement } from './nodeOps' import { patchData } from './patchData' @@ -13,6 +19,20 @@ type publicRender = ( ) => Component | null export const render = _render as publicRender +export function createInstance( + Class: new () => T, + props?: any +): T { + return createComponentInstance(h(Class, props)).$proxy as any +} + +export function renderIntsance( + Class: new () => T, + props?: any +): T { + return render(h(Class, props), nodeOps.createElement('div')) as any +} + export { serialize } from './serialize' export * from './nodeOps' export * from '@vue/core'