Skip to content

Commit e04831f

Browse files
committed
test: update test
1 parent 381b0e9 commit e04831f

File tree

2 files changed

+64
-11
lines changed

2 files changed

+64
-11
lines changed

Diff for: packages/@vue/cli-shared-utils/__tests__/pluginOrder.spec.js

+63-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { insertPluginByStage, topologicalSorting } = require('../lib/pluginOrder.js')
1+
const { insertPluginByStage, topologicalSorting, arrangePlugins } = require('../lib/pluginOrder.js')
22

33
/**
44
*
@@ -20,7 +20,7 @@ function plugin (id, order) {
2020
}
2121

2222
describe('insertPluginByStage', () => {
23-
test('No stage specified', () => {
23+
test(`using default 'stage' will preserve sort order`, () => {
2424
const plugins = [
2525
plugin('foo'),
2626
plugin('bar'),
@@ -34,27 +34,47 @@ describe('insertPluginByStage', () => {
3434
expect(orderPlugins).toEqual(plugins)
3535
})
3636

37-
test('stage specified', () => {
37+
test(`using same 'stage' will preserve sort order`, () => {
38+
const plugins = [
39+
plugin('foo', { stage: 200 }),
40+
plugin('bar', { stage: 200 }),
41+
plugin('baz', { stage: 200 })
42+
]
43+
const orderPlugins = []
44+
insertPluginByStage(orderPlugins, plugins[0])
45+
insertPluginByStage(orderPlugins, plugins[1])
46+
insertPluginByStage(orderPlugins, plugins[2])
47+
48+
expect(orderPlugins).toEqual(plugins)
49+
})
50+
51+
test(`several different 'stage'`, () => {
3852
const plugins = [
3953
plugin('foo'),
54+
plugin('zot', { stage: 200 }),
55+
plugin('fum', { stage: 100 }),
4056
plugin('bar', { stage: 0 }),
4157
plugin('baz', { stage: 200 })
4258
]
4359
const orderPlugins = []
4460
insertPluginByStage(orderPlugins, plugins[0])
4561
insertPluginByStage(orderPlugins, plugins[1])
4662
insertPluginByStage(orderPlugins, plugins[2])
63+
insertPluginByStage(orderPlugins, plugins[3])
64+
insertPluginByStage(orderPlugins, plugins[4])
4765

4866
expect(orderPlugins).toEqual([
4967
plugin('bar', { stage: 0 }),
5068
plugin('foo'),
69+
plugin('fum', { stage: 100 }),
70+
plugin('zot', { stage: 200 }),
5171
plugin('baz', { stage: 200 })
5272
])
5373
})
5474
})
5575

5676
describe('topologicalSorting', () => {
57-
test('no after specified', () => {
77+
test(`no specifying 'after' will preserve sort order`, () => {
5878
const plugins = [
5979
plugin('foo'),
6080
plugin('bar'),
@@ -64,7 +84,7 @@ describe('topologicalSorting', () => {
6484
expect(orderPlugins).toEqual(plugins)
6585
})
6686

67-
test('after specified', () => {
87+
test(`'after' specified`, () => {
6888
const plugins = [
6989
plugin('foo', { after: 'bar' }),
7090
plugin('bar', { after: 'baz' }),
@@ -78,7 +98,7 @@ describe('topologicalSorting', () => {
7898
])
7999
})
80100

81-
test('after multiple', () => {
101+
test(`'after' can be Array<string>`, () => {
82102
const plugins = [
83103
plugin('foo', { after: ['bar', 'baz'] }),
84104
plugin('bar'),
@@ -92,17 +112,50 @@ describe('topologicalSorting', () => {
92112
])
93113
})
94114

95-
test('it is not possible to order plugins because of cyclic graph, return plugins directly', () => {
96-
const plugins = [
115+
test('it is not possible to order plugins because of cyclic graph, return original plugins directly', () => {
116+
let plugins = [
97117
plugin('foo', { after: 'bar' }),
98118
plugin('bar', { after: 'baz' }),
99119
plugin('baz', { after: 'foo' })
100120
]
101-
const orderPlugins = topologicalSorting(plugins)
121+
let orderPlugins = topologicalSorting(plugins)
122+
expect(orderPlugins).toEqual(plugins)
123+
124+
plugins = [
125+
plugin('foo', { after: 'bar' }),
126+
plugin('bar', { after: 'foo' }),
127+
plugin('baz')
128+
]
129+
orderPlugins = topologicalSorting(plugins)
102130
expect(orderPlugins).toEqual(plugins)
103131
})
104132
})
105133

106134
describe('arrangePlugins', () => {
107-
// TODO:
135+
test(`arrange plugins which already ordered by 'stage'`, () => {
136+
const plugins = [
137+
plugin('bar', { stage: 100, after: 'foo' }),
138+
plugin('foo', { stage: 100 }),
139+
plugin('fum', { stage: 200, after: 'baz' }),
140+
plugin('zot', { stage: 200, after: 'baz' }),
141+
plugin('baz', { stage: 200 })
142+
]
143+
const orderPlugins = arrangePlugins(plugins)
144+
expect(orderPlugins).toEqual([
145+
plugin('foo', { stage: 100 }),
146+
plugin('bar', { stage: 100, after: 'foo' }),
147+
plugin('baz', { stage: 200 }),
148+
plugin('fum', { stage: 200, after: 'baz' }),
149+
plugin('zot', { stage: 200, after: 'baz' })
150+
])
151+
})
152+
153+
test(`'stage' has a higher priority than 'after'`, () => {
154+
const plugins = [
155+
plugin('bar', { stage: 0, after: 'foo' }),
156+
plugin('foo', { stage: 100 })
157+
]
158+
const orderPlugins = arrangePlugins(plugins)
159+
expect(orderPlugins).toEqual(plugins)
160+
})
108161
})

Diff for: packages/@vue/cli-shared-utils/lib/pluginOrder.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ function topologicalSorting (plugins) {
123123
exports.topologicalSorting = topologicalSorting
124124

125125
/**
126-
* Arrange plugins by 'after' property.
127126
* Plugins should be sorted by 'stage' property firstly.
127+
* Arrange plugins by 'after' property.
128128
* @param {Array<Plugin>} plugins
129129
* @returns {Array<Plugin>}
130130
*/

0 commit comments

Comments
 (0)