bootstrap-vue
Version:
With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4 component and grid system available for Vue.js v2.6, complete with extens
47 lines (41 loc) • 1.45 kB
JavaScript
import DEFAULTS from './config-defaults'
describe('utils/config-defaults', () => {
it('default configuration is immutable', async () => {
// Existing properties cannot be mutated
expect(DEFAULTS.breakpoints).toEqual(['xs', 'sm', 'md', 'lg', 'xl'])
try {
DEFAULTS.breakpoints = 'foobar'
} catch {}
expect(DEFAULTS.breakpoints).toEqual(['xs', 'sm', 'md', 'lg', 'xl'])
// Nested array properties cannot be mutated
expect(DEFAULTS.breakpoints[0]).toEqual('xs')
try {
DEFAULTS.breakpoints[0] = 'foobar'
} catch {}
expect(DEFAULTS.breakpoints[0]).toEqual('xs')
expect(DEFAULTS.breakpoints).toEqual(['xs', 'sm', 'md', 'lg', 'xl'])
// Nested object properties cannot be mutated
expect(DEFAULTS.BAlert.variant).toEqual('info')
try {
DEFAULTS.BAlert.variant = 'foobar'
} catch {}
expect(DEFAULTS.BAlert.variant).toEqual('info')
// New Properties cannot be added
expect(DEFAULTS.foobar).not.toBeDefined()
try {
DEFAULTS.foobar = 'foobar'
} catch {}
expect(DEFAULTS.foobar).not.toBeDefined()
expect(DEFAULTS.BAlert.foobar).not.toBeDefined()
try {
DEFAULTS.BAlert.foobar = 'foobar'
} catch {}
expect(DEFAULTS.BAlert.foobar).not.toBeDefined()
// Properties cannot be deleted
expect(DEFAULTS.BAlert).toBeDefined()
try {
delete DEFAULTS.BAlert
} catch {}
expect(DEFAULTS.BAlert).toBeDefined()
})
})