@gitlab/ui 114.1.0 → 114.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -26
- package/CHANGELOG.md +0 -13139
- package/src/vendor/bootstrap/LICENSE +0 -11
- package/src/vendor/bootstrap-vue/LICENSE +0 -11
- package/src/vendor/bootstrap-vue/package.json +0 -144
- package/src/vendor/bootstrap-vue/src/components/button/MODIFICATIONS.md +0 -16
- package/src/vendor/bootstrap-vue/src/components/button/README.md +0 -240
- package/src/vendor/bootstrap-vue/src/components/button/button-close.spec.js +0 -210
- package/src/vendor/bootstrap-vue/src/components/button/button.spec.js +0 -349
- package/src/vendor/bootstrap-vue/src/components/button/package.json +0 -105
- package/src/vendor/bootstrap-vue/src/components/dropdown/README.md +0 -730
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.spec.js +0 -58
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.spec.js +0 -110
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.spec.js +0 -94
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.spec.js +0 -73
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.spec.js +0 -117
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.spec.js +0 -147
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.spec.js +0 -59
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.spec.js +0 -1121
- package/src/vendor/bootstrap-vue/src/components/dropdown/package.json +0 -368
- package/src/vendor/bootstrap-vue/src/components/form/README.md +0 -365
- package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.spec.js +0 -170
- package/src/vendor/bootstrap-vue/src/components/form/form-text.spec.js +0 -93
- package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.spec.js +0 -157
- package/src/vendor/bootstrap-vue/src/components/form/form.spec.js +0 -97
- package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -112
- package/src/vendor/bootstrap-vue/src/components/form-checkbox/README.md +0 -691
- package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.spec.js +0 -525
- package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.spec.js +0 -922
- package/src/vendor/bootstrap-vue/src/components/form-checkbox/package.json +0 -172
- package/src/vendor/bootstrap-vue/src/components/form-group/README.md +0 -339
- package/src/vendor/bootstrap-vue/src/components/form-group/form-group.spec.js +0 -477
- package/src/vendor/bootstrap-vue/src/components/form-group/package.json +0 -183
- package/src/vendor/bootstrap-vue/src/components/form-radio/README.md +0 -437
- package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.spec.js +0 -357
- package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.spec.js +0 -587
- package/src/vendor/bootstrap-vue/src/components/form-radio/package.json +0 -162
- package/src/vendor/bootstrap-vue/src/components/form-select/README.md +0 -504
- package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.spec.js +0 -138
- package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.spec.js +0 -75
- package/src/vendor/bootstrap-vue/src/components/form-select/form-select.spec.js +0 -723
- package/src/vendor/bootstrap-vue/src/components/form-select/package.json +0 -132
- package/src/vendor/bootstrap-vue/src/components/form-textarea/README.md +0 -453
- package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.spec.js +0 -1000
- package/src/vendor/bootstrap-vue/src/components/form-textarea/package.json +0 -122
- package/src/vendor/bootstrap-vue/src/components/layout/README.md +0 -791
- package/src/vendor/bootstrap-vue/src/components/layout/col.spec.js +0 -192
- package/src/vendor/bootstrap-vue/src/components/layout/form-row.spec.js +0 -45
- package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -99
- package/src/vendor/bootstrap-vue/src/components/link/README.md +0 -76
- package/src/vendor/bootstrap-vue/src/components/link/link.spec.js +0 -434
- package/src/vendor/bootstrap-vue/src/components/link/package.json +0 -57
- package/src/vendor/bootstrap-vue/src/components/modal/MODIFICATIONS.md +0 -30
- package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1067
- package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.spec.js +0 -82
- package/src/vendor/bootstrap-vue/src/components/modal/modal.spec.js +0 -1418
- package/src/vendor/bootstrap-vue/src/components/modal/package.json +0 -544
- package/src/vendor/bootstrap-vue/src/components/nav/README.md +0 -362
- package/src/vendor/bootstrap-vue/src/components/nav/nav-item.spec.js +0 -127
- package/src/vendor/bootstrap-vue/src/components/nav/nav.spec.js +0 -177
- package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -73
- package/src/vendor/bootstrap-vue/src/components/popover/README.md +0 -919
- package/src/vendor/bootstrap-vue/src/components/popover/package.json +0 -261
- package/src/vendor/bootstrap-vue/src/components/popover/popover.spec.js +0 -198
- package/src/vendor/bootstrap-vue/src/components/table/README.md +0 -3157
- package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.spec.js +0 -112
- package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.spec.js +0 -93
- package/src/vendor/bootstrap-vue/src/components/table/package.json +0 -1763
- package/src/vendor/bootstrap-vue/src/components/table/table-busy.spec.js +0 -150
- package/src/vendor/bootstrap-vue/src/components/table/table-caption.spec.js +0 -176
- package/src/vendor/bootstrap-vue/src/components/table/table-colgroup.spec.js +0 -81
- package/src/vendor/bootstrap-vue/src/components/table/table-filtering.spec.js +0 -409
- package/src/vendor/bootstrap-vue/src/components/table/table-item-formatter.spec.js +0 -56
- package/src/vendor/bootstrap-vue/src/components/table/table-lite.spec.js +0 -682
- package/src/vendor/bootstrap-vue/src/components/table/table-pagination.spec.js +0 -133
- package/src/vendor/bootstrap-vue/src/components/table/table-primarykey.spec.js +0 -83
- package/src/vendor/bootstrap-vue/src/components/table/table-provider.spec.js +0 -411
- package/src/vendor/bootstrap-vue/src/components/table/table-row-details.spec.js +0 -459
- package/src/vendor/bootstrap-vue/src/components/table/table-selectable.spec.js +0 -1182
- package/src/vendor/bootstrap-vue/src/components/table/table-simple.spec.js +0 -206
- package/src/vendor/bootstrap-vue/src/components/table/table-sorting.spec.js +0 -858
- package/src/vendor/bootstrap-vue/src/components/table/table-sticky-column.spec.js +0 -377
- package/src/vendor/bootstrap-vue/src/components/table/table-tbody-bottom-row.spec.js +0 -94
- package/src/vendor/bootstrap-vue/src/components/table/table-tbody-row-events.spec.js +0 -529
- package/src/vendor/bootstrap-vue/src/components/table/table-tbody-top-row.spec.js +0 -88
- package/src/vendor/bootstrap-vue/src/components/table/table-tbody-transition.spec.js +0 -83
- package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-custom.spec.js +0 -91
- package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-events.spec.js +0 -137
- package/src/vendor/bootstrap-vue/src/components/table/table-thead-events.spec.js +0 -155
- package/src/vendor/bootstrap-vue/src/components/table/table-thead-top.spec.js +0 -96
- package/src/vendor/bootstrap-vue/src/components/table/table.spec.js +0 -692
- package/src/vendor/bootstrap-vue/src/components/tabs/README.md +0 -433
- package/src/vendor/bootstrap-vue/src/components/tabs/package.json +0 -205
- package/src/vendor/bootstrap-vue/src/components/tabs/tab.spec.js +0 -330
- package/src/vendor/bootstrap-vue/src/components/tabs/tabs.spec.js +0 -778
- package/src/vendor/bootstrap-vue/src/components/toast/README.md +0 -655
- package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.spec.js +0 -117
- package/src/vendor/bootstrap-vue/src/components/toast/package.json +0 -184
- package/src/vendor/bootstrap-vue/src/components/toast/toast.spec.js +0 -294
- package/src/vendor/bootstrap-vue/src/components/toast/toaster.spec.js +0 -77
- package/src/vendor/bootstrap-vue/src/components/tooltip/README.md +0 -559
- package/src/vendor/bootstrap-vue/src/components/tooltip/package.json +0 -258
- package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.spec.js +0 -1240
- package/src/vendor/bootstrap-vue/src/components/transition/package.json +0 -5
- package/src/vendor/bootstrap-vue/src/components/transporter/package.json +0 -5
- package/src/vendor/bootstrap-vue/src/components/transporter/transporter.spec.js +0 -85
- package/src/vendor/bootstrap-vue/src/directives/modal/modal.spec.js +0 -191
- package/src/vendor/bootstrap-vue/src/directives/tooltip/README.md +0 -521
- package/src/vendor/bootstrap-vue/src/directives/tooltip/package.json +0 -131
- package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.spec.js +0 -190
- package/src/vendor/bootstrap-vue/src/directives/visible/README.md +0 -244
- package/src/vendor/bootstrap-vue/src/directives/visible/package.json +0 -24
- package/src/vendor/bootstrap-vue/src/mixins/attrs.spec.js +0 -194
- package/src/vendor/bootstrap-vue/src/mixins/click-out.spec.js +0 -52
- package/src/vendor/bootstrap-vue/src/mixins/focus-in.spec.js +0 -53
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.spec.js +0 -117
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.spec.js +0 -77
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.spec.js +0 -115
- package/src/vendor/bootstrap-vue/src/mixins/listeners.spec.js +0 -245
- package/src/vendor/bootstrap-vue/src/utils/bv-event.class.spec.js +0 -66
- package/src/vendor/bootstrap-vue/src/utils/clone-deep.spec.js +0 -70
- package/src/vendor/bootstrap-vue/src/utils/config.spec.js +0 -169
- package/src/vendor/bootstrap-vue/src/utils/css-escape.spec.js +0 -82
- package/src/vendor/bootstrap-vue/src/utils/dom.spec.js +0 -291
- package/src/vendor/bootstrap-vue/src/utils/events.spec.js +0 -41
- package/src/vendor/bootstrap-vue/src/utils/get.spec.js +0 -109
- package/src/vendor/bootstrap-vue/src/utils/inspect.spec.js +0 -251
- package/src/vendor/bootstrap-vue/src/utils/loose-equal.spec.js +0 -203
- package/src/vendor/bootstrap-vue/src/utils/normalize-slot.spec.js +0 -63
- package/src/vendor/bootstrap-vue/src/utils/number.spec.js +0 -72
- package/src/vendor/bootstrap-vue/src/utils/object.spec.js +0 -61
- package/src/vendor/bootstrap-vue/src/utils/props.spec.js +0 -112
- package/src/vendor/bootstrap-vue/src/utils/router.spec.js +0 -248
- package/src/vendor/bootstrap-vue/src/utils/string.spec.js +0 -65
- package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.spec.js +0 -47
- package/src/vendor/bootstrap-vue/src/utils/warn.spec.js +0 -54
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { toFixed, toFloat, toInteger } from './number'
|
|
2
|
-
|
|
3
|
-
describe('utils/number', () => {
|
|
4
|
-
it('toInteger works', async () => {
|
|
5
|
-
expect(toInteger(1)).toBe(1)
|
|
6
|
-
expect(toInteger('1')).toBe(1)
|
|
7
|
-
expect(toInteger(1e5)).toBe(100000)
|
|
8
|
-
expect(toInteger('1e5')).toBe(1)
|
|
9
|
-
expect(toInteger('256 foobar')).toBe(256)
|
|
10
|
-
expect(toInteger('foo 256bar')).toBe(NaN)
|
|
11
|
-
expect(toInteger({})).toBe(NaN)
|
|
12
|
-
expect(toInteger([])).toBe(NaN)
|
|
13
|
-
expect(toInteger(new Date())).toBe(NaN)
|
|
14
|
-
expect(toInteger(null)).toBe(NaN)
|
|
15
|
-
expect(toInteger(undefined)).toBe(NaN)
|
|
16
|
-
expect(toInteger(null, 0)).toBe(0)
|
|
17
|
-
expect(toInteger(undefined, -1)).toBe(-1)
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
it('toFloat works', async () => {
|
|
21
|
-
expect(toFloat(1)).toBe(1)
|
|
22
|
-
expect(toFloat('1')).toBe(1)
|
|
23
|
-
expect(toFloat(1.23)).toBe(1.23)
|
|
24
|
-
expect(toFloat('1.23')).toBe(1.23)
|
|
25
|
-
expect(toFloat(1e5)).toBe(100000)
|
|
26
|
-
// `parseFloat()` works differently than `parseInt()` in this case
|
|
27
|
-
expect(toFloat('1e5')).toBe(100000)
|
|
28
|
-
expect(toFloat('256 foobar')).toBe(256)
|
|
29
|
-
expect(toFloat('256.78 foobar')).toBe(256.78)
|
|
30
|
-
expect(toFloat('foo 256bar')).toBe(NaN)
|
|
31
|
-
expect(toFloat({})).toBe(NaN)
|
|
32
|
-
expect(toFloat([])).toBe(NaN)
|
|
33
|
-
expect(toFloat(new Date())).toBe(NaN)
|
|
34
|
-
expect(toFloat(null)).toBe(NaN)
|
|
35
|
-
expect(toFloat(undefined)).toBe(NaN)
|
|
36
|
-
expect(toFloat(null, 0)).toBe(0)
|
|
37
|
-
expect(toFloat(undefined, -1)).toBe(-1)
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
it('toFixed works', async () => {
|
|
41
|
-
expect(toFixed(1)).toBe('1')
|
|
42
|
-
expect(toFixed(1.23)).toBe('1')
|
|
43
|
-
expect(toFixed(1.78)).toBe('2')
|
|
44
|
-
expect(toFixed('1')).toBe('1')
|
|
45
|
-
expect(toFixed('1.23')).toBe('1')
|
|
46
|
-
expect(toFixed('1.78')).toBe('2')
|
|
47
|
-
expect(toFixed(1, 2)).toBe('1.00')
|
|
48
|
-
expect(toFixed('1', 2)).toBe('1.00')
|
|
49
|
-
expect(toFixed('1 foo', 2)).toBe('1.00')
|
|
50
|
-
expect(toFixed('foo 1 bar', 2)).toBe('NaN')
|
|
51
|
-
expect(toFixed('1.23', 4)).toBe('1.2300')
|
|
52
|
-
expect(toFixed('1.78', 2)).toBe('1.78')
|
|
53
|
-
expect(toFixed({})).toBe('NaN')
|
|
54
|
-
expect(toFixed([])).toBe('NaN')
|
|
55
|
-
expect(toFixed(new Date())).toBe('NaN')
|
|
56
|
-
expect(toFixed(null)).toBe('NaN')
|
|
57
|
-
expect(toFixed(undefined)).toBe('NaN')
|
|
58
|
-
expect(toFixed({}, 3)).toBe('NaN')
|
|
59
|
-
expect(toFixed([], 2)).toBe('NaN')
|
|
60
|
-
expect(toFixed(new Date(), 1)).toBe('NaN')
|
|
61
|
-
expect(toFixed(null, 4)).toBe('NaN')
|
|
62
|
-
expect(toFixed(undefined, 3)).toBe('NaN')
|
|
63
|
-
expect(toFixed(1, '2')).toBe('1.00')
|
|
64
|
-
expect(toFixed('1', '2')).toBe('1.00')
|
|
65
|
-
expect(toFixed('1 foo', '2')).toBe('1.00')
|
|
66
|
-
expect(toFixed('foo 1 bar', '2')).toBe('NaN')
|
|
67
|
-
expect(toFixed(1, 'foo')).toBe('1')
|
|
68
|
-
expect(toFixed('1', undefined)).toBe('1')
|
|
69
|
-
expect(toFixed('1 foo', null)).toBe('1')
|
|
70
|
-
expect(toFixed('foo 1 bar', {})).toBe('NaN')
|
|
71
|
-
})
|
|
72
|
-
})
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { pick, omit, mergeDeep } from './object'
|
|
2
|
-
|
|
3
|
-
describe('utils/object', () => {
|
|
4
|
-
it('pick() works', async () => {
|
|
5
|
-
const obj = { a: 1, b: 2, c: 3, d: null, e: [] }
|
|
6
|
-
|
|
7
|
-
expect(pick(obj, ['a', 'b', 'c'])).toEqual({ a: 1, b: 2, c: 3 })
|
|
8
|
-
expect(pick(obj, Object.keys(obj))).toEqual(obj)
|
|
9
|
-
expect(pick(obj, [])).toEqual({})
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
it('omit() works', async () => {
|
|
13
|
-
const obj = { a: 1, b: 2, c: 3, d: null, e: [] }
|
|
14
|
-
|
|
15
|
-
expect(omit(obj, ['a', 'b', 'c'])).toEqual({ d: null, e: [] })
|
|
16
|
-
expect(omit(obj, Object.keys(obj))).toEqual({})
|
|
17
|
-
expect(omit(obj, [])).toEqual(obj)
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
it('mergeDeep() works', async () => {
|
|
21
|
-
const A = {
|
|
22
|
-
a: {
|
|
23
|
-
loc: 'Earth',
|
|
24
|
-
title: 'Hello World',
|
|
25
|
-
type: 'Planet',
|
|
26
|
-
deeper: {
|
|
27
|
-
map: new Map([['a', 'AAA'], ['b', 'BBB']]),
|
|
28
|
-
mapId: 15473
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const B = {
|
|
33
|
-
a: {
|
|
34
|
-
type: 'Star',
|
|
35
|
-
deeper: {
|
|
36
|
-
mapId: 9999,
|
|
37
|
-
alt_map: new Map([['x', 'XXXX'], ['y', 'YYYY']])
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const C = mergeDeep(A, B)
|
|
43
|
-
const D = mergeDeep({ a: 1 }, { b: { c: { d: { e: 12345 } } } })
|
|
44
|
-
const E = mergeDeep({ b: { c: 'hallo' } }, { b: { c: { d: { e: 12345 } } } })
|
|
45
|
-
const F = mergeDeep(
|
|
46
|
-
{ b: { c: { d: { e: 12345 } }, d: 'dag', f: 'one' } },
|
|
47
|
-
{ b: { c: 'hallo', e: 'ok', f: 'two' } }
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
expect(C.a.type).toEqual('Star')
|
|
51
|
-
expect(C.a.deeper.alt_map.get('x')).toEqual('XXXX')
|
|
52
|
-
expect(C.a.deeper.map.get('b')).toEqual('BBB')
|
|
53
|
-
expect(D.a).toEqual(1)
|
|
54
|
-
expect(D.b.c.d.e).toEqual(12345)
|
|
55
|
-
expect(E.b.c.d.e).toEqual(12345)
|
|
56
|
-
expect(F.b.c).toEqual('hallo')
|
|
57
|
-
expect(F.b.d).toEqual('dag')
|
|
58
|
-
expect(F.b.e).toEqual('ok')
|
|
59
|
-
expect(F.b.f).toEqual('two')
|
|
60
|
-
})
|
|
61
|
-
})
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { mount } from '@vue/test-utils'
|
|
2
|
-
import { setConfig } from './config-set'
|
|
3
|
-
import { copyProps, makeProp, makePropsConfigurable } from './props'
|
|
4
|
-
|
|
5
|
-
describe('utils/props', () => {
|
|
6
|
-
it('copyProps() works with array props', async () => {
|
|
7
|
-
const props = ['a', 'b', 'c']
|
|
8
|
-
|
|
9
|
-
expect(copyProps(props)).toEqual(props)
|
|
10
|
-
// Should be a new array reference
|
|
11
|
-
expect(copyProps(props)).not.toBe(props)
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
it('copyProps() works with object props', async () => {
|
|
15
|
-
const props = {
|
|
16
|
-
a: { type: String, default: 'foobar' },
|
|
17
|
-
b: { type: [Object, Array], default: null },
|
|
18
|
-
c: 'c'
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
expect(copyProps(props)).toEqual(props)
|
|
22
|
-
// Should be a new object reference
|
|
23
|
-
expect(copyProps(props)).not.toBe(props)
|
|
24
|
-
// Properties should be new object references
|
|
25
|
-
expect(copyProps(props).a).not.toBe(props.a)
|
|
26
|
-
expect(copyProps(props).a).toEqual(props.a)
|
|
27
|
-
expect(copyProps(props).b).not.toBe(props.b)
|
|
28
|
-
expect(copyProps(props).b).toEqual(props.b)
|
|
29
|
-
// Except for primatives
|
|
30
|
-
expect(copyProps(props).c).toBe(props.c)
|
|
31
|
-
expect(copyProps(props).c).toEqual(props.c)
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
it('makeProp() works', async () => {
|
|
35
|
-
expect(makeProp()).toEqual({})
|
|
36
|
-
expect(makeProp(undefined)).toEqual({})
|
|
37
|
-
expect(makeProp(null)).toEqual({})
|
|
38
|
-
expect(makeProp('')).toEqual({})
|
|
39
|
-
|
|
40
|
-
expect(makeProp(Array)).toEqual({ type: Array })
|
|
41
|
-
expect(makeProp(Boolean)).toEqual({ type: Boolean })
|
|
42
|
-
expect(makeProp(Function)).toEqual({ type: Function })
|
|
43
|
-
expect(makeProp(Number)).toEqual({ type: Number })
|
|
44
|
-
expect(makeProp(Object)).toEqual({ type: Object })
|
|
45
|
-
expect(makeProp(String)).toEqual({ type: String })
|
|
46
|
-
|
|
47
|
-
expect(makeProp(Array, null)).toEqual({ type: Array, default: null })
|
|
48
|
-
expect(makeProp(Boolean, false)).toEqual({ type: Boolean, default: false })
|
|
49
|
-
expect(makeProp(Function, null)).toEqual({ type: Function, default: null })
|
|
50
|
-
expect(makeProp(Number, 0)).toEqual({ type: Number, default: 0 })
|
|
51
|
-
expect(makeProp(Object, null)).toEqual({ type: Object, default: null })
|
|
52
|
-
expect(makeProp(String, '')).toEqual({ type: String, default: '' })
|
|
53
|
-
|
|
54
|
-
expect(typeof makeProp(Array, []).default).toEqual('function')
|
|
55
|
-
expect(makeProp(Array, []).default()).toEqual([])
|
|
56
|
-
|
|
57
|
-
const fn = () => {}
|
|
58
|
-
expect(typeof makeProp(Function, fn).default).toEqual('function')
|
|
59
|
-
expect(makeProp(Function, fn).default).toEqual(fn)
|
|
60
|
-
|
|
61
|
-
expect(typeof makeProp(Object, {}).default).toEqual('function')
|
|
62
|
-
expect(makeProp(Object, {}).default()).toEqual({})
|
|
63
|
-
|
|
64
|
-
expect(makeProp(Array, undefined, true)).toEqual({ type: Array, required: true })
|
|
65
|
-
expect(makeProp(Boolean, undefined, true)).toEqual({ type: Boolean, required: true })
|
|
66
|
-
expect(makeProp(Function, undefined, true)).toEqual({ type: Function, required: true })
|
|
67
|
-
expect(makeProp(Number, undefined, true)).toEqual({ type: Number, required: true })
|
|
68
|
-
expect(makeProp(Object, undefined, true)).toEqual({ type: Object, required: true })
|
|
69
|
-
expect(makeProp(String, undefined, true)).toEqual({ type: String, required: true })
|
|
70
|
-
|
|
71
|
-
const validator = value => !!value
|
|
72
|
-
expect(makeProp(String, '', undefined)).toEqual({ type: String, default: '' })
|
|
73
|
-
expect(makeProp(String, '', validator)).toEqual({ type: String, default: '', validator })
|
|
74
|
-
expect(makeProp(String, undefined, validator)).toEqual({ type: String, validator })
|
|
75
|
-
expect(makeProp(String, '', true, validator)).toEqual({
|
|
76
|
-
type: String,
|
|
77
|
-
required: true,
|
|
78
|
-
validator
|
|
79
|
-
})
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
it('makePropsConfigurable() works', async () => {
|
|
83
|
-
const NAME = 'MyComponent'
|
|
84
|
-
const props = {
|
|
85
|
-
text: {
|
|
86
|
-
type: String,
|
|
87
|
-
default: 'foo'
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
const config = {
|
|
91
|
-
[NAME]: { text: 'bar' }
|
|
92
|
-
}
|
|
93
|
-
const ConfigurableComponent = {
|
|
94
|
-
name: NAME,
|
|
95
|
-
props: makePropsConfigurable(props, NAME),
|
|
96
|
-
render(h) {
|
|
97
|
-
return h('div', this.text)
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
setConfig(config)
|
|
102
|
-
|
|
103
|
-
const wrapper = mount(ConfigurableComponent)
|
|
104
|
-
|
|
105
|
-
expect(wrapper.vm).toBeDefined()
|
|
106
|
-
expect(wrapper.element.tagName).toBe('DIV')
|
|
107
|
-
expect(wrapper.text()).toBe('bar')
|
|
108
|
-
|
|
109
|
-
await wrapper.setProps({ text: 'baz' })
|
|
110
|
-
expect(wrapper.text()).toBe('baz')
|
|
111
|
-
})
|
|
112
|
-
})
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
stringifyQueryObj,
|
|
3
|
-
parseQuery,
|
|
4
|
-
computeHref,
|
|
5
|
-
isRouterLink,
|
|
6
|
-
computeRel,
|
|
7
|
-
computeTag
|
|
8
|
-
} from './router'
|
|
9
|
-
|
|
10
|
-
describe('utils/router', () => {
|
|
11
|
-
// stringifyQueryObject() utility method
|
|
12
|
-
describe('stringifyQueryObj()', () => {
|
|
13
|
-
it('returns empty string when noting passed', async () => {
|
|
14
|
-
expect(stringifyQueryObj()).toEqual('')
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
it('handles special chars', async () => {
|
|
18
|
-
expect(stringifyQueryObj({ foo: ", !'()*" })).toEqual('?foo=,%20%21%27%28%29%2a')
|
|
19
|
-
expect(stringifyQueryObj({ ", !'()*": 'foo' })).toEqual('?,%20%21%27%28%29%2a=foo')
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
it('handles multiple keys', async () => {
|
|
23
|
-
const obj = {
|
|
24
|
-
foo: 1,
|
|
25
|
-
bar: 'baz'
|
|
26
|
-
}
|
|
27
|
-
expect(stringifyQueryObj(obj)).toEqual('?foo=1&bar=baz')
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
it('handles array as values', async () => {
|
|
31
|
-
const obj = {
|
|
32
|
-
foo: 1,
|
|
33
|
-
bar: ['a', 'b', 'c']
|
|
34
|
-
}
|
|
35
|
-
expect(stringifyQueryObj(obj)).toEqual('?foo=1&bar=a&bar=b&bar=c')
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
it('skips undefined values', async () => {
|
|
39
|
-
const obj = {
|
|
40
|
-
foo: 1,
|
|
41
|
-
bar: undefined,
|
|
42
|
-
baz: 2
|
|
43
|
-
}
|
|
44
|
-
expect(stringifyQueryObj(obj)).toEqual('?foo=1&baz=2')
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
it('skips undefined values in arrays', async () => {
|
|
48
|
-
const obj = {
|
|
49
|
-
foo: ['a', undefined, 'c']
|
|
50
|
-
}
|
|
51
|
-
expect(stringifyQueryObj(obj)).toEqual('?foo=a&foo=c')
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
it('leaves in null value keys', async () => {
|
|
55
|
-
const obj = {
|
|
56
|
-
foo: 1,
|
|
57
|
-
bar: null,
|
|
58
|
-
baz: 2
|
|
59
|
-
}
|
|
60
|
-
expect(stringifyQueryObj(obj)).toEqual('?foo=1&bar&baz=2')
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
it('leaves in null values in arrays', async () => {
|
|
64
|
-
const obj = {
|
|
65
|
-
foo: ['a', null, 'c']
|
|
66
|
-
}
|
|
67
|
-
expect(stringifyQueryObj(obj)).toEqual('?foo=a&foo&foo=c')
|
|
68
|
-
})
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
describe('parseQuery()', () => {
|
|
72
|
-
it('returns empty object when empty query', async () => {
|
|
73
|
-
expect(parseQuery('')).toEqual({})
|
|
74
|
-
expect(parseQuery('?')).toEqual({})
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
it('parses simple query', async () => {
|
|
78
|
-
expect(parseQuery('?foo=bar')).toEqual({ foo: 'bar' })
|
|
79
|
-
expect(parseQuery('?foo=bar&baz=buz')).toEqual({ foo: 'bar', baz: 'buz' })
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
it('parses empty values', async () => {
|
|
83
|
-
expect(parseQuery('?foo')).toEqual({ foo: null })
|
|
84
|
-
expect(parseQuery('?foo=bar&baz')).toEqual({ foo: 'bar', baz: null })
|
|
85
|
-
expect(parseQuery('?foo=&baz')).toEqual({ foo: '', baz: null })
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
it('handles null key/value pairs values', async () => {
|
|
89
|
-
expect(parseQuery('?foo=bar&&baz=fiz')).toEqual({ foo: 'bar', '': null, baz: 'fiz' })
|
|
90
|
-
expect(parseQuery('?foo=bar&=&baz=fiz')).toEqual({ foo: 'bar', '': '', baz: 'fiz' })
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
it('handles values with = characters', async () => {
|
|
94
|
-
expect(parseQuery('?foo=bar=baz')).toEqual({ foo: 'bar=baz' })
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
it('parses duplicate keys as arrays', async () => {
|
|
98
|
-
expect(parseQuery('?foo=bar&foo=baz')).toEqual({ foo: ['bar', 'baz'] })
|
|
99
|
-
expect(parseQuery('?foo=&foo=baz&foo')).toEqual({ foo: ['', 'baz', null] })
|
|
100
|
-
expect(parseQuery('?foo=bar&baz=buz&baz=fiz')).toEqual({ foo: 'bar', baz: ['buz', 'fiz'] })
|
|
101
|
-
})
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
// computeHref() utility method
|
|
105
|
-
describe('computeHref()', () => {
|
|
106
|
-
it('works with href', async () => {
|
|
107
|
-
const obj = { href: '/foo/bar?baz=123' }
|
|
108
|
-
expect(computeHref(obj)).toEqual(obj.href)
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
it('parses nothing to default', async () => {
|
|
112
|
-
expect(computeHref()).toEqual('#')
|
|
113
|
-
expect(computeHref(undefined, undefined, '/', '')).toEqual('/')
|
|
114
|
-
expect(computeHref(undefined, undefined, '', '')).toEqual('')
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
it('returns null when tag is not `a`', async () => {
|
|
118
|
-
expect(computeHref({}, 'div')).toEqual(null)
|
|
119
|
-
expect(computeHref(undefined, 'div', '/', '')).toEqual(null)
|
|
120
|
-
expect(computeHref(undefined, 'span', '', '/')).toEqual(null)
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
it('returns href when both href and to provided', async () => {
|
|
124
|
-
const obj = {
|
|
125
|
-
href: '/foo/bar?baz=123',
|
|
126
|
-
to: '/baz/bar'
|
|
127
|
-
}
|
|
128
|
-
expect(computeHref(obj)).toEqual(obj.href)
|
|
129
|
-
})
|
|
130
|
-
|
|
131
|
-
it('parses empty `href` to default', async () => {
|
|
132
|
-
expect(computeHref({ href: '' })).toEqual('#')
|
|
133
|
-
expect(computeHref({ href: '' }, 'a', '/', '')).toEqual('/')
|
|
134
|
-
expect(computeHref({ href: '' }, 'a', '', '')).toEqual('')
|
|
135
|
-
})
|
|
136
|
-
|
|
137
|
-
it('parses `to` when string', async () => {
|
|
138
|
-
const obj = {
|
|
139
|
-
to: '/baz/bar'
|
|
140
|
-
}
|
|
141
|
-
expect(computeHref(obj)).toEqual(obj.to)
|
|
142
|
-
})
|
|
143
|
-
|
|
144
|
-
it('parses `to` with only path', async () => {
|
|
145
|
-
const obj = {
|
|
146
|
-
to: {
|
|
147
|
-
path: '/baz/bar'
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
expect(computeHref(obj)).toEqual(obj.to.path)
|
|
151
|
-
})
|
|
152
|
-
|
|
153
|
-
it('parses `to` with only hash', async () => {
|
|
154
|
-
const obj = {
|
|
155
|
-
to: {
|
|
156
|
-
hash: '#foobar'
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
expect(computeHref(obj)).toEqual(obj.to.hash)
|
|
160
|
-
})
|
|
161
|
-
|
|
162
|
-
it('parses `to` with hash missing "#"', async () => {
|
|
163
|
-
const obj = {
|
|
164
|
-
to: {
|
|
165
|
-
hash: 'foobar'
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
expect(computeHref(obj)).toEqual('#foobar')
|
|
169
|
-
})
|
|
170
|
-
|
|
171
|
-
it('parses `to` with only query', async () => {
|
|
172
|
-
const obj = {
|
|
173
|
-
to: {
|
|
174
|
-
query: { foo: 'bar' }
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
expect(computeHref(obj)).toEqual('?foo=bar')
|
|
178
|
-
})
|
|
179
|
-
|
|
180
|
-
it('parses empty `to` to fallback default', async () => {
|
|
181
|
-
expect(computeHref({ to: {} })).toEqual('#')
|
|
182
|
-
expect(computeHref({ to: {} }, 'a', '#', '')).toEqual('#')
|
|
183
|
-
expect(computeHref({ to: {} }, 'a', '/', '#')).toEqual('/')
|
|
184
|
-
})
|
|
185
|
-
|
|
186
|
-
it('parses complete `to`', async () => {
|
|
187
|
-
const obj = {
|
|
188
|
-
to: {
|
|
189
|
-
path: '/foo',
|
|
190
|
-
query: {
|
|
191
|
-
bar: 1,
|
|
192
|
-
baz: ['a', 'b', 'c'],
|
|
193
|
-
bif: null,
|
|
194
|
-
zap: undefined
|
|
195
|
-
},
|
|
196
|
-
hash: '#fizzlerocks'
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
expect(computeHref(obj)).toEqual('/foo?bar=1&baz=a&baz=b&baz=c&bif#fizzlerocks')
|
|
200
|
-
})
|
|
201
|
-
})
|
|
202
|
-
|
|
203
|
-
// isRouterLink() utility method
|
|
204
|
-
describe('isRouterLink()', () => {
|
|
205
|
-
it('works', async () => {
|
|
206
|
-
expect(isRouterLink('a')).toBe(false)
|
|
207
|
-
expect(isRouterLink('router-link')).toBe(true)
|
|
208
|
-
expect(isRouterLink('nuxt-link')).toBe(true)
|
|
209
|
-
expect(isRouterLink()).toBe(false)
|
|
210
|
-
})
|
|
211
|
-
})
|
|
212
|
-
|
|
213
|
-
// computeRel() utility method
|
|
214
|
-
describe('computeRel()', () => {
|
|
215
|
-
it('works', async () => {
|
|
216
|
-
expect(computeRel({ target: '_blank', rel: null })).toBe('noopener')
|
|
217
|
-
expect(computeRel({ target: '_blank', rel: undefined })).toBe(null)
|
|
218
|
-
expect(computeRel({ target: '_blank' })).toBe(null)
|
|
219
|
-
expect(computeRel({ target: '_blank', rel: 'foo' })).toBe('foo')
|
|
220
|
-
expect(computeRel({ target: '_notblank', rel: null })).toBe(null)
|
|
221
|
-
expect(computeRel({ target: '_notblank', rel: undefined })).toBe(null)
|
|
222
|
-
expect(computeRel({ target: '_notblank', rel: 'foo' })).toBe('foo')
|
|
223
|
-
expect(computeRel({})).toBe(null)
|
|
224
|
-
})
|
|
225
|
-
})
|
|
226
|
-
|
|
227
|
-
// computeTag() utility method
|
|
228
|
-
describe('computeTag()', () => {
|
|
229
|
-
it('works', async () => {
|
|
230
|
-
const context1 = { $router: {} }
|
|
231
|
-
const context2 = { $router: {}, $nuxt: {} }
|
|
232
|
-
const context3 = {}
|
|
233
|
-
|
|
234
|
-
expect(computeTag({ to: '/foo' }, context1)).toBe('router-link')
|
|
235
|
-
expect(computeTag({ to: '/foo' }, context2)).toBe('nuxt-link')
|
|
236
|
-
expect(computeTag({ to: '/foo' }, context3)).toBe('a')
|
|
237
|
-
expect(computeTag({}, context1)).toBe('a')
|
|
238
|
-
expect(computeTag({}, context2)).toBe('a')
|
|
239
|
-
expect(computeTag({}, context3)).toBe('a')
|
|
240
|
-
expect(computeTag({ to: '/foo', disabled: true }, context1)).toBe('a')
|
|
241
|
-
expect(computeTag({ to: '/foo', disabled: true }, context2)).toBe('a')
|
|
242
|
-
expect(computeTag({ to: '/foo', disabled: true }, context3)).toBe('a')
|
|
243
|
-
expect(computeTag({ disabled: true }, context1)).toBe('a')
|
|
244
|
-
expect(computeTag({ disabled: true }, context2)).toBe('a')
|
|
245
|
-
expect(computeTag({ disabled: true }, context3)).toBe('a')
|
|
246
|
-
})
|
|
247
|
-
})
|
|
248
|
-
})
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { escapeRegExp, kebabCase, startCase, toString, upperFirst } from './string'
|
|
2
|
-
|
|
3
|
-
describe('utils/string', () => {
|
|
4
|
-
it('kebabCase() works', async () => {
|
|
5
|
-
expect(kebabCase('foo')).toBe('foo')
|
|
6
|
-
expect(kebabCase('Foo')).toBe('foo')
|
|
7
|
-
expect(kebabCase('fooBar')).toBe('foo-bar')
|
|
8
|
-
expect(kebabCase('FooBar')).toBe('foo-bar')
|
|
9
|
-
expect(kebabCase('XFooBar')).toBe('x-foo-bar')
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
it('startCase() works', async () => {
|
|
13
|
-
expect(startCase('foobar')).toBe('Foobar')
|
|
14
|
-
expect(startCase('Foobar')).toBe('Foobar')
|
|
15
|
-
expect(startCase('foo_bar')).toBe('Foo Bar')
|
|
16
|
-
expect(startCase('foo bar')).toBe('Foo Bar')
|
|
17
|
-
expect(startCase('fooBar')).toBe('Foo Bar')
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
it('upperFirst() works', async () => {
|
|
21
|
-
expect(upperFirst('lower')).toBe('Lower')
|
|
22
|
-
expect(upperFirst(' lower ')).toBe('Lower')
|
|
23
|
-
expect(upperFirst('lower case')).toBe('Lower case')
|
|
24
|
-
expect(upperFirst(null)).toBe('Null')
|
|
25
|
-
expect(upperFirst(undefined)).toBe('Undefined')
|
|
26
|
-
expect(upperFirst({})).toBe('[object Object]')
|
|
27
|
-
expect(upperFirst([])).toBe('')
|
|
28
|
-
expect(upperFirst(['foo', 'bar'])).toBe('Foo,bar')
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
it('escapeRegExp() works', async () => {
|
|
32
|
-
expect(escapeRegExp('Hello?')).toBe('Hello\\?')
|
|
33
|
-
expect(escapeRegExp('$100')).toBe('\\$100')
|
|
34
|
-
expect(escapeRegExp('10 * 5')).toBe('10 \\* 5')
|
|
35
|
-
expect(escapeRegExp('[-/\\^$*+?.()|[\\]{}]')).toBe(
|
|
36
|
-
'\\[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\\\\\]\\{\\}\\]'
|
|
37
|
-
)
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
it('toString() works', async () => {
|
|
41
|
-
expect(toString(null)).toBe('')
|
|
42
|
-
expect(toString(undefined)).toBe('')
|
|
43
|
-
expect(toString(true)).toBe('true')
|
|
44
|
-
expect(toString(false)).toBe('false')
|
|
45
|
-
expect(toString({ a: 1, b: 2, c: { d: 'foo' } })).toBe(`{
|
|
46
|
-
"a": 1,
|
|
47
|
-
"b": 2,
|
|
48
|
-
"c": {
|
|
49
|
-
"d": "foo"
|
|
50
|
-
}
|
|
51
|
-
}`)
|
|
52
|
-
expect(toString({ a: 1, b: 2, c: { d: 'foo' } }, 4)).toBe(`{
|
|
53
|
-
"a": 1,
|
|
54
|
-
"b": 2,
|
|
55
|
-
"c": {
|
|
56
|
-
"d": "foo"
|
|
57
|
-
}
|
|
58
|
-
}`)
|
|
59
|
-
expect(toString([])).toBe('[]')
|
|
60
|
-
expect(toString(['foo', 'bar'])).toBe(`[
|
|
61
|
-
"foo",
|
|
62
|
-
"bar"
|
|
63
|
-
]`)
|
|
64
|
-
})
|
|
65
|
-
})
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { stringifyObjectValues } from './stringify-object-values'
|
|
2
|
-
|
|
3
|
-
describe('stringifyObjectValues()', () => {
|
|
4
|
-
it('handles `null` and `undefined`', async () => {
|
|
5
|
-
expect(stringifyObjectValues(null)).toBe('')
|
|
6
|
-
expect(stringifyObjectValues(undefined)).toBe('')
|
|
7
|
-
expect(stringifyObjectValues()).toBe('')
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
it('returns strings as-is', async () => {
|
|
11
|
-
expect(stringifyObjectValues('foo')).toBe('foo')
|
|
12
|
-
expect(stringifyObjectValues('123')).toBe('123')
|
|
13
|
-
expect(stringifyObjectValues(' bar ')).toBe(' bar ')
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
it('converts numbers to string', async () => {
|
|
17
|
-
expect(stringifyObjectValues(0)).toBe('0')
|
|
18
|
-
expect(stringifyObjectValues(1)).toBe('1')
|
|
19
|
-
expect(stringifyObjectValues(-1)).toBe('-1')
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
it('converts dates to native string format', async () => {
|
|
23
|
-
const date1 = new Date(2020, 1, 1)
|
|
24
|
-
const date2 = new Date(2030, 1, 1)
|
|
25
|
-
const date3 = new Date(1970, 1, 1)
|
|
26
|
-
|
|
27
|
-
expect(stringifyObjectValues(date1)).toBe(date1.toString())
|
|
28
|
-
expect(stringifyObjectValues(date2)).toBe(date2.toString())
|
|
29
|
-
expect(stringifyObjectValues(date3)).toBe(date3.toString())
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
it('converts array values to a string', async () => {
|
|
33
|
-
expect(stringifyObjectValues([])).toBe('')
|
|
34
|
-
expect(stringifyObjectValues([1, 'foo'])).toBe('1 foo')
|
|
35
|
-
expect(stringifyObjectValues([undefined, null])).toBe('')
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
it('converts object values to a string', async () => {
|
|
39
|
-
expect(stringifyObjectValues({})).toBe('')
|
|
40
|
-
expect(stringifyObjectValues({ a: 1, b: 'foo' })).toBe('1 foo')
|
|
41
|
-
expect(stringifyObjectValues({ a: null, b: undefined })).toBe('')
|
|
42
|
-
expect(stringifyObjectValues({ a: [undefined, null, { b: 1 }] })).toBe('1')
|
|
43
|
-
expect(
|
|
44
|
-
stringifyObjectValues({ b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' })
|
|
45
|
-
).toBe('one 3 2 zzz 10 12 11')
|
|
46
|
-
})
|
|
47
|
-
})
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { warn } from './warn'
|
|
2
|
-
|
|
3
|
-
describe('utils/warn', () => {
|
|
4
|
-
const dummyWarning = 'This is a dummy warning.'
|
|
5
|
-
const dummySource = 'DummyComponent'
|
|
6
|
-
|
|
7
|
-
let originalProcess
|
|
8
|
-
|
|
9
|
-
beforeAll(() => {
|
|
10
|
-
jest.spyOn(console, 'warn').mockImplementation(() => {})
|
|
11
|
-
originalProcess = global.process
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
afterEach(() => {
|
|
15
|
-
console.warn.mockClear()
|
|
16
|
-
global.process = originalProcess
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
describe('with "BOOTSTRAP_VUE_NO_WARN" environment variable set', () => {
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
global.process = {
|
|
22
|
-
env: {
|
|
23
|
-
BOOTSTRAP_VUE_NO_WARN: true
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
it('does not call "console.warn()"', () => {
|
|
29
|
-
warn(dummyWarning)
|
|
30
|
-
|
|
31
|
-
expect(console.warn).not.toHaveBeenCalled()
|
|
32
|
-
})
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
describe('without process object', () => {
|
|
36
|
-
beforeEach(() => {
|
|
37
|
-
delete global.process
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
it('calls "console.warn()" with warning', () => {
|
|
41
|
-
warn(dummyWarning)
|
|
42
|
-
|
|
43
|
-
expect(console.warn).toHaveBeenCalledWith(`[BootstrapVue warn]: ${dummyWarning}`)
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
it('calls "console.warn()" with warning and source', () => {
|
|
47
|
-
warn(dummyWarning, dummySource)
|
|
48
|
-
|
|
49
|
-
expect(console.warn).toHaveBeenCalledWith(
|
|
50
|
-
`[BootstrapVue warn]: ${dummySource} - ${dummyWarning}`
|
|
51
|
-
)
|
|
52
|
-
})
|
|
53
|
-
})
|
|
54
|
-
})
|