Skip to content

Allow testing src directly #1396

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Jan 10, 2020
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"test:compat": "scripts/test-compat.sh",
"test:unit": "npm run build:test && npm run test:unit:only",
"test:unit:only": "mocha-webpack --webpack-config test/setup/webpack.test.config.js test/specs --recursive --require test/setup/mocha.setup.js",
"test:unit:only:dev": "cross-env TARGET=dev yarn run test:unit:only",
"test:unit:debug": "npm run build:test && node --inspect-brk node_modules/.bin/mocha-webpack --webpack-config test/setup/webpack.test.config.js test/specs --recursive --require test/setup/mocha.setup.js",
"test:unit:karma": "npm run build:test && npm run test:unit:karma:only",
"test:unit:karma:only": "cross-env TARGET=browser karma start test/setup/karma.conf.js --single-run",
Expand Down
2 changes: 1 addition & 1 deletion packages/server-test-utils/src/config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import testUtils from '@vue/test-utils'
import * as testUtils from '@vue/test-utils'

export default testUtils.config
6 changes: 1 addition & 5 deletions packages/server-test-utils/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,4 @@ import renderToString from './renderToString'
import render from './render'
import config from './config'

export default {
renderToString,
config,
render
}
export { renderToString, config, render }
2 changes: 1 addition & 1 deletion packages/test-utils/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ function shallow(component, options) {
return shallowMount(component, options)
}

export default {
export {
createLocalVue,
createWrapper,
config,
Expand Down
4 changes: 2 additions & 2 deletions test/resources/utils.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
/* global describe */

import Vue from 'vue'
import { shallowMount, mount } from '~vue/test-utils'
import { renderToString } from '~vue/server-test-utils'
import { shallowMount, mount } from '@vue/test-utils'
import { renderToString } from '@vue/server-test-utils'

export const vueVersion = Number(
`${Vue.version.split('.')[0]}.${Vue.version.split('.')[1]}`
Expand Down
26 changes: 21 additions & 5 deletions test/setup/webpack.test.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,35 @@ const rules = [].concat(
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules\/(?!(shared|create-instance)\/).*/
exclude: /node_modules/
}
)

const externals = nodeExternals({
// we need to whitelist both `create-instance` and files in `shared` package. Otherwise Webpack wont bundle them in the test dev env
whitelist: [
'@vue/test-utils',
'@vue/server-test-utils',
'create-instance',
/^shared\/.*/
]
})
// define the default aliases
let aliasedFiles = {}
if (process.env.TARGET === 'dev') {
// if we are in dev test mode, we want to alias all files to the src file, not dist
aliasedFiles = {
'@vue/server-test-utils': `@vue/server-test-utils/src/index.js`,
'@vue/test-utils': `@vue/test-utils/src/index.js`
}
}
module.exports = {
module: {
rules
},
externals: !browser ? [nodeExternals()] : undefined,
externals: !browser ? [externals] : undefined,
resolve: {
alias: {
'~vue/server-test-utils': `${projectRoot}/packages/server-test-utils/dist/vue-server-test-utils.js`,
'~vue/test-utils': `${projectRoot}/packages/test-utils/dist/vue-test-utils.js`,
...aliasedFiles,
'~resources': `${projectRoot}/test/resources`
}
},
Expand Down
2 changes: 1 addition & 1 deletion test/specs/components/RouterLink.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RouterLinkStub } from '~vue/test-utils'
import { RouterLinkStub } from '@vue/test-utils'
import { describeWithShallowAndMount } from '~resources/utils'

describeWithShallowAndMount('RouterLinkStub', mountingMethod => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/config.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describeWithShallowAndMount } from '~resources/utils'
import ComponentWithProps from '~resources/components/component-with-props.vue'
import { config, createLocalVue } from '~vue/test-utils'
import { config, createLocalVue } from '@vue/test-utils'

describeWithShallowAndMount('config', mountingMethod => {
const sandbox = sinon.createSandbox()
Expand Down
2 changes: 1 addition & 1 deletion test/specs/create-local-vue.spec.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Vue from 'vue'
import Vuex from 'vuex'
import VueRouter from 'vue-router'
import { createLocalVue } from '~vue/test-utils'
import { createLocalVue } from '@vue/test-utils'
import Component from '~resources/components/component.vue'
import ComponentWithVuex from '~resources/components/component-with-vuex.vue'
import ComponentWithRouter from '~resources/components/component-with-router.vue'
Expand Down
2 changes: 1 addition & 1 deletion test/specs/create-wrapper.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Vue from 'vue'
import { createWrapper, Wrapper, WrapperArray } from '~vue/test-utils'
import { createWrapper, Wrapper, WrapperArray } from '@vue/test-utils'
import Component from '~resources/components/component.vue'
import { describeRunIf } from 'conditional-specs'

Expand Down
2 changes: 1 addition & 1 deletion test/specs/external-libraries.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createLocalVue, mount } from '~vue/test-utils'
import { createLocalVue, mount } from '@vue/test-utils'
import VeeValidate from 'vee-validate'
import { describeWithShallowAndMount } from '~resources/utils'

Expand Down
2 changes: 1 addition & 1 deletion test/specs/mount.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Vue from 'vue'
import { compileToFunctions } from 'vue-template-compiler'
import { mount, createLocalVue } from '~vue/test-utils'
import { mount, createLocalVue } from '@vue/test-utils'
import Component from '~resources/components/component.vue'
import ComponentWithProps from '~resources/components/component-with-props.vue'
import ComponentWithMixin from '~resources/components/component-with-mixin.vue'
Expand Down
2 changes: 1 addition & 1 deletion test/specs/mounting-options/localVue.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
isRunningPhantomJS,
vueVersion
} from '~resources/utils'
import { createLocalVue, shallowMount, mount } from '~vue/test-utils'
import { createLocalVue, shallowMount, mount } from '@vue/test-utils'
import { itSkipIf, itRunIf, itDoNotRunIf } from 'conditional-specs'
import Vuex from 'vuex'

Expand Down
2 changes: 1 addition & 1 deletion test/specs/mounting-options/methods.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { config } from '~vue/test-utils'
import { config } from '@vue/test-utils'
import { describeWithShallowAndMount } from '~resources/utils'

describeWithShallowAndMount('options.methods', mountingMethod => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/mounting-options/mocks.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createLocalVue, config } from '~vue/test-utils'
import { createLocalVue, config } from '@vue/test-utils'
import Vue from 'vue'
import Component from '~resources/components/component.vue'
import ComponentWithVuex from '~resources/components/component-with-vuex.vue'
Expand Down
2 changes: 1 addition & 1 deletion test/specs/mounting-options/propsData.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { shallowMount } from '~vue/test-utils'
import { shallowMount } from '@vue/test-utils'
import ComponentWithProps from '~resources/components/component-with-props.vue'
import { describeRunIf } from 'conditional-specs'

Expand Down
4 changes: 2 additions & 2 deletions test/specs/mounting-options/provide.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { config } from '~vue/test-utils'
import { createLocalVue } from '~vue/test-utils'
import { config } from '@vue/test-utils'
import { createLocalVue } from '@vue/test-utils'
import ComponentWithInject from '~resources/components/component-with-inject.vue'
import CompositionComponentWithInject from '~resources/components/component-with-inject-composition.vue'
import { injectSupported } from '~resources/utils'
Expand Down
2 changes: 1 addition & 1 deletion test/specs/mounting-options/scopedSlots.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describeWithShallowAndMount, vueVersion } from '~resources/utils'
import { createLocalVue } from '~vue/test-utils'
import { createLocalVue } from '@vue/test-utils'
import ComponentWithScopedSlots from '~resources/components/component-with-scoped-slots.vue'
import { itDoNotRunIf } from 'conditional-specs'
import Vue from 'vue'
Expand Down
21 changes: 9 additions & 12 deletions test/specs/mounting-options/slots.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import ComponentAsAClass from '~resources/components/component-as-a-class.vue'
import ComponentWithParentName from '~resources/components/component-with-parent-name.vue'
import { describeWithShallowAndMount, vueVersion } from '~resources/utils'
import { itDoNotRunIf } from 'conditional-specs'
import { mount, createLocalVue } from '~vue/test-utils'
import { mount, createLocalVue } from '@vue/test-utils'

describeWithShallowAndMount('options.slots', mountingMethod => {
it('mounts component with default slot if passed component in slot object', () => {
Expand Down Expand Up @@ -138,10 +138,8 @@ describeWithShallowAndMount('options.slots', mountingMethod => {
require.cache[
require.resolve('vue-template-compiler')
].exports.compileToFunctions = undefined
delete require.cache[require.resolve('../../../packages/test-utils')]
const mountingMethodFresh = require('../../../packages/test-utils')[
mountingMethod.name
]
delete require.cache[require.resolve('@vue/test-utils')]
const mountingMethodFresh = require('@vue/test-utils')[mountingMethod.name]
const message =
'[vue-test-utils]: vueTemplateCompiler is undefined, you must pass precompiled components if vue-template-compiler is undefined'
const fn = () =>
Expand Down Expand Up @@ -391,13 +389,12 @@ describeWithShallowAndMount('options.slots', mountingMethod => {
const compilerSave =
require.cache[require.resolve('vue-template-compiler')].exports
.compileToFunctions
require.cache[require.resolve('vue-template-compiler')].exports = {
compileToFunctions: undefined
}
delete require.cache[require.resolve('../../../packages/test-utils')]
const mountingMethodFresh = require('../../../packages/test-utils')[
mountingMethod.name
]
require.cache[
require.resolve('vue-template-compiler')
].exports.compileToFunctions = undefined

delete require.cache[require.resolve('@vue/test-utils')]
const mountingMethodFresh = require('@vue/test-utils')[mountingMethod.name]
const message =
'[vue-test-utils]: vueTemplateCompiler is undefined, you must pass precompiled components if vue-template-compiler is undefined'
const fn = () => {
Expand Down
12 changes: 5 additions & 7 deletions test/specs/mounting-options/stubs.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import ComponentWithChild from '~resources/components/component-with-child.vue'
import ComponentWithNestedChildren from '~resources/components/component-with-nested-children.vue'
import Component from '~resources/components/component.vue'
import ComponentAsAClass from '~resources/components/component-as-a-class.vue'
import { createLocalVue, config } from '~vue/test-utils'
import { config as serverConfig } from '~vue/server-test-utils'
import { createLocalVue, config } from '@vue/test-utils'
import { config as serverConfig } from '@vue/server-test-utils'
import Vue from 'vue'
import { describeWithShallowAndMount, vueVersion } from '~resources/utils'
import { itDoNotRunIf, itSkipIf, itRunIf } from 'conditional-specs'
Expand Down Expand Up @@ -263,11 +263,9 @@ describeWithShallowAndMount('options.stub', mountingMethod => {
require.cache[
require.resolve('vue-template-compiler')
].exports.compileToFunctions = undefined
delete require.cache[require.resolve('../../../packages/test-utils')]
delete require.cache[require.resolve('../../../packages/server-test-utils')]
const mountingMethodFresh = require('../../../packages/test-utils')[
mountingMethod.name
]
delete require.cache[require.resolve('@vue/test-utils')]
delete require.cache[require.resolve('@vue/server-test-utils')]
const mountingMethodFresh = require('@vue/test-utils')[mountingMethod.name]
const message =
'[vue-test-utils]: vueTemplateCompiler is undefined, you must pass precompiled components if vue-template-compiler is undefined'
const fn = () =>
Expand Down
2 changes: 1 addition & 1 deletion test/specs/render.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { render } from '~vue/server-test-utils'
import { render } from '@vue/server-test-utils'
import Cheerio from 'cheerio'
import { describeDoNotRunIf } from 'conditional-specs'

Expand Down
4 changes: 2 additions & 2 deletions test/specs/renderToString.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { renderToString } from '~vue/server-test-utils'
import { createLocalVue } from '~vue/test-utils'
import { renderToString } from '@vue/server-test-utils'
import { createLocalVue } from '@vue/test-utils'
import ComponentWithChild from '~resources/components/component-with-child.vue'
import { describeDoNotRunIf } from 'conditional-specs'

Expand Down
2 changes: 1 addition & 1 deletion test/specs/shallow-mount.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { compileToFunctions } from 'vue-template-compiler'
import Vue from 'vue'
import { mount, shallowMount, createLocalVue } from '~vue/test-utils'
import { mount, shallowMount, createLocalVue } from '@vue/test-utils'
import Component from '~resources/components/component.vue'
import ComponentWithChild from '~resources/components/component-with-child.vue'
import ComponentWithNestedChildren from '~resources/components/component-with-nested-children.vue'
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Wrapper, WrapperArray } from '~vue/test-utils'
import { Wrapper, WrapperArray } from '@vue/test-utils'
import { describeWithShallowAndMount } from '~resources/utils'

describeWithShallowAndMount('WrapperArray', mountingMethod => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/at.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describeWithShallowAndMount } from '~resources/utils'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('at', mountingMethod => {
it('returns Wrapper at index', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/attributes.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describeWithShallowAndMount } from '~resources/utils'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('attributes', mountingMethod => {
it('throws error if wrapper array contains no items', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/classes.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describeWithShallowAndMount } from '~resources/utils'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('classes', mountingMethod => {
it('throws error if wrapper array contains no items', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/contains.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describeWithShallowAndMount } from '~resources/utils'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('contains', mountingMethod => {
it('returns true if every Wrapper contains element', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/find.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describeWithShallowAndMount } from '~resources/utils'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('find', mountingMethod => {
it('throws error if wrapper array contains no items', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/findAll.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describeWithShallowAndMount } from '~resources/utils'
import { compileToFunctions } from 'vue-template-compiler'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('findAll', mountingMethod => {
it('throws error if wrapper array contains no items', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/html.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describeWithShallowAndMount } from '~resources/utils'
import { compileToFunctions } from 'vue-template-compiler'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('html', mountingMethod => {
it('throws error if wrapper array contains no items', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/isEmpty.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describeWithShallowAndMount } from '~resources/utils'
import { compileToFunctions } from 'vue-template-compiler'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('isEmpty', mountingMethod => {
it('returns true if node is empty', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/isVisible.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describeWithShallowAndMount } from '~resources/utils'
import { compileToFunctions } from 'vue-template-compiler'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('isVisible', mountingMethod => {
it('returns true if node has no inline style', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/name.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describeWithShallowAndMount } from '~resources/utils'
import { compileToFunctions } from 'vue-template-compiler'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('name', mountingMethod => {
it('throws an error when called on a WrapperArray', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/props.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describeWithShallowAndMount } from '~resources/utils'
import { compileToFunctions } from 'vue-template-compiler'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('props', mountingMethod => {
it('throws error if wrapper array contains no items', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper-array/text.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describeWithShallowAndMount } from '~resources/utils'
import { compileToFunctions } from 'vue-template-compiler'
import '~vue/test-utils'
import '@vue/test-utils'

describeWithShallowAndMount('text', mountingMethod => {
it('throws error when called on a WrapperArray', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper/emitted.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createLocalVue, createWrapper } from '~vue/test-utils'
import { createLocalVue, createWrapper } from '@vue/test-utils'
import { describeWithShallowAndMount, vueVersion } from '~resources/utils'
import { itDoNotRunIf } from 'conditional-specs'
import Vue from 'vue'
Expand Down
2 changes: 1 addition & 1 deletion test/specs/wrapper/find.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { compileToFunctions } from 'vue-template-compiler'
import { createLocalVue } from '~vue/test-utils'
import { createLocalVue } from '@vue/test-utils'
import Vue from 'vue'
import ComponentWithChild from '~resources/components/component-with-child.vue'
import ComponentWithoutName from '~resources/components/component-without-name.vue'
Expand Down