forked from vuejs/rollup-plugin-vue
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.js
92 lines (82 loc) · 3 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/* global describe, it */
var vuePlugin = require('../')
var cssPlugin = require('rollup-plugin-css-only')
var assert = require('assert')
var fs = require('fs')
var rollup = require('rollup')
var path = require('path')
process.chdir(__dirname)
function read(file) {
return fs.readFileSync(path.resolve(__dirname, file), 'utf-8')
}
function test(name) {
it('should rollup ' + name + '.vue', function () {
var entry = './fixtures/' + name + '.vue'
var expected = read('expects/' + name + '.js').replace(/\r/g, '')
var actualCss
var cssHandler = function (css, styles) {
if (['scss', 'pug'].indexOf(name) > -1) {
actualCss = styles[0].$compiled.code
} else {
actualCss = css
}
}
return rollup.rollup({
entry: entry,
plugins: [vuePlugin({
css: ['no-css-extract'].indexOf(name) > -1 ? true : cssHandler,
modules: {
generateScopedName: '[name]__[local]'
},
compileTemplate: ['compileTemplate', 'slot', 'table', 'table-n-slot'].indexOf(name) > -1
})]
}).then(function (bundle) {
var result = bundle.generate({ format: 'es' })
var code = result.code
assert.equal(code.trim(), expected.trim(), 'should compile code correctly')
// Check css output
if (['style', 'css-modules', 'css-modules-static', 'scss', 'pug', 'less'].indexOf(name) > -1) {
var css = read('expects/' + name + '.css')
assert.equal(css.trim(), actualCss.trim(), 'should output style tag content')
} else if (['no-css-extract'].indexOf(name) > -1) {
assert.equal(undefined, actualCss, 'should ignore css()')
} else {
assert.equal('', actualCss.trim(), 'should always call css()')
}
}).catch(function (error) {
throw error
})
})
}
describe('rollup-plugin-vue', function () {
fs.readdirSync(path.resolve(__dirname, 'fixtures'))
.forEach(function (file) {
test(file.substr(0, file.length - 4))
})
})
describe('styleToImports', function () {
it('should convert style to import', function () {
var entry = './fixtures/style.vue'
var expectedCss = read('expects/style.css')
var actualCss
return rollup.rollup({
format: 'cjs',
entry: entry,
plugins: [
vuePlugin({
styleToImports: true,
}),
cssPlugin({
output: function (css) {
actualCss = css
},
}),
],
}).then(function (bundle) {
bundle.generate({ format: 'es' })
assert.equal(expectedCss.trim(), actualCss.trim(), 'should import style')
}).catch(function (error) {
throw error
})
})
})