Commit 05dceec2 authored by Evan You's avatar Evan You

test: refactor tests

parent bd584951
...@@ -10,7 +10,7 @@ const normalizeNewline = require('normalize-newline') ...@@ -10,7 +10,7 @@ const normalizeNewline = require('normalize-newline')
test('basic', done => { test('basic', done => {
mockBundleAndRun({ mockBundleAndRun({
entry: 'basic.vue' entry: 'basic.vue'
}, ({ window, module, rawModule }) => { }, ({ window, module }) => {
const vnode = mockRender(module, { const vnode = mockRender(module, {
msg: 'hi' msg: 'hi'
}) })
......
...@@ -95,3 +95,31 @@ test('normalize multiple use + options', done => { ...@@ -95,3 +95,31 @@ test('normalize multiple use + options', done => {
} }
}, () => done(), true) }, () => done(), true)
}) })
test('should not duplicate css modules value imports', done => {
mockBundleAndRun({
entry: './test/fixtures/duplicate-cssm.js',
modify: config => {
config.module.rules[1] = {
test: /\.css$/,
use: [
'vue-style-loader',
{
loader: 'css-loader',
options: {
modules: true
}
}
]
}
}
}, ({ window, module, code }) => {
const localsRE = /exports.locals = {\s+"color": "red"\s+};/
const matches = code.match(localsRE)
expect(matches.length).toBe(1)
const styles = window.getComputedStyle(window.document.querySelector('h1'))
console.log(styles)
done()
})
})
const Component = require('~target') import Component from '~target'
import * as exports from '~target'
if (typeof window !== 'undefined') { if (typeof window !== 'undefined') {
window.vueModule = Component window.module = Component
window.exports = exports
} }
module.exports = Component export default Component
...@@ -22,9 +22,9 @@ test('allow exporting extended constructor', done => { ...@@ -22,9 +22,9 @@ test('allow exporting extended constructor', done => {
test('named exports', done => { test('named exports', done => {
mockBundleAndRun({ mockBundleAndRun({
entry: 'named-exports.vue' entry: 'named-exports.vue'
}, ({ window, rawModule }) => { }, ({ exports }) => {
expect(rawModule.default.name).toBe('named-exports') expect(exports.default.name).toBe('named-exports')
expect(rawModule.foo()).toBe(1) expect(exports.foo()).toBe(1)
done() done()
}) })
}) })
...@@ -8,7 +8,7 @@ const { ...@@ -8,7 +8,7 @@ const {
test('template with comments', done => { test('template with comments', done => {
mockBundleAndRun({ mockBundleAndRun({
entry: 'template-comment.vue' entry: 'template-comment.vue'
}, ({ window, module, rawModule }) => { }, ({ window, module }) => {
expect(module.comments).toBe(true) expect(module.comments).toBe(true)
const vnode = mockRender(module, { const vnode = mockRender(module, {
msg: 'hi' msg: 'hi'
...@@ -113,7 +113,7 @@ test('transform srcset', done => { ...@@ -113,7 +113,7 @@ test('transform srcset', done => {
test('functional component with styles', done => { test('functional component with styles', done => {
mockBundleAndRun({ mockBundleAndRun({
entry: 'functional-style.vue' entry: 'functional-style.vue'
}, ({ window, module, rawModule }) => { }, ({ window, module }) => {
expect(module.functional).toBe(true) expect(module.functional).toBe(true)
const vnode = mockRender(module) const vnode = mockRender(module)
// <div class="foo">hi</div> // <div class="foo">hi</div>
......
...@@ -108,8 +108,7 @@ function mockBundleAndRun (options, assert, wontThrowError) { ...@@ -108,8 +108,7 @@ function mockBundleAndRun (options, assert, wontThrowError) {
} }
const { window } = dom const { window } = dom
const rawModule = window.vueModule const { module, exports } = window
const module = interopDefault(window.vueModule)
const instance = {} const instance = {}
if (module && module.beforeCreate) { if (module && module.beforeCreate) {
module.beforeCreate.forEach(hook => hook.call(instance)) module.beforeCreate.forEach(hook => hook.call(instance))
...@@ -117,7 +116,7 @@ function mockBundleAndRun (options, assert, wontThrowError) { ...@@ -117,7 +116,7 @@ function mockBundleAndRun (options, assert, wontThrowError) {
assert({ assert({
window, window,
module, module,
rawModule, exports,
instance, instance,
code, code,
jsdomError, jsdomError,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment