From f1dbc529b7f304ca27ea882f7b85fc0b3142cdae Mon Sep 17 00:00:00 2001 From: Kelly Date: Fri, 13 Jul 2018 16:53:15 -0500 Subject: [PATCH 1/2] Allow extended components as stubs --- packages/shared/stub-components.js | 9 +++++---- test/specs/mounting-options/stubs.spec.js | 6 ++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/shared/stub-components.js b/packages/shared/stub-components.js index 2052b14dc..37eb7df63 100644 --- a/packages/shared/stub-components.js +++ b/packages/shared/stub-components.js @@ -10,19 +10,20 @@ import { } from './util' import { componentNeedsCompiling, - templateContainsComponent + templateContainsComponent, + isVueComponent } from './validators' import { compileTemplate } from './compile-template' -function isVueComponent (comp): boolean { - return comp && (comp.render || comp.template || comp.options) +function isVueComponentStub (comp): boolean { + return comp && comp.template || isVueComponent(comp); } function isValidStub (stub: any): boolean { return ( (!!stub && typeof stub === 'string') || stub === true || - isVueComponent(stub) + isVueComponentStub(stub) ) } diff --git a/test/specs/mounting-options/stubs.spec.js b/test/specs/mounting-options/stubs.spec.js index 7cc7ce908..b23a9ab59 100644 --- a/test/specs/mounting-options/stubs.spec.js +++ b/test/specs/mounting-options/stubs.spec.js @@ -33,13 +33,15 @@ describeWithMountingMethods('options.stub', mountingMethod => { it('accepts valid component stubs', () => { const ComponentWithRender = { render: h => h('div') } const ComponentWithoutRender = { template: '
' } - const ExtendedComponent = Vue.extend({ template: '
' }) + const ExtendedComponent = { extends: ComponentWithRender } + const SubclassedComponent = Vue.extend({ template: '
' }) mountingMethod(ComponentWithChild, { stubs: { ChildComponent: ComponentAsAClass, ChildComponent2: ComponentWithRender, ChildComponent3: ComponentWithoutRender, - ChildComponent4: ExtendedComponent + ChildComponent4: ExtendedComponent, + ChildComponent5: SubclassedComponent } }) }) From 50fa1919bab9c7e30d28cd874791af17ed657b36 Mon Sep 17 00:00:00 2001 From: Kelly Date: Fri, 13 Jul 2018 16:56:31 -0500 Subject: [PATCH 2/2] remove semicolon to match vue-test-utils formatting --- packages/shared/stub-components.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared/stub-components.js b/packages/shared/stub-components.js index 37eb7df63..c56412de6 100644 --- a/packages/shared/stub-components.js +++ b/packages/shared/stub-components.js @@ -16,7 +16,7 @@ import { import { compileTemplate } from './compile-template' function isVueComponentStub (comp): boolean { - return comp && comp.template || isVueComponent(comp); + return comp && comp.template || isVueComponent(comp) } function isValidStub (stub: any): boolean {