import Vue from 'vue' describe('Options name', () => { it('should contain itself in self components', () => { const vm = Vue.extend({ name: 'SuperVue' }) expect(vm.options.components['SuperVue']).toEqual(vm) }) it('should warn when incorrect name given', () => { Vue.extend({ name: 'Hyper*Vue' }) /* eslint-disable */ expect(`Invalid component name: "Hyper*Vue".`).toHaveBeenWarned() /* eslint-enable */ Vue.extend({ name: '2Cool2BValid' }) /* eslint-disable */ expect(`Invalid component name: "2Cool2BValid".`).toHaveBeenWarned() /* eslint-enable */ }) it('id should not override given name when using Vue.component', () => { const SuperComponent = Vue.component('super-component', { name: 'SuperVue' })! expect(SuperComponent.options.components['SuperVue']).toEqual( SuperComponent ) expect(SuperComponent.options.components['super-component']).toEqual( SuperComponent ) }) it('should allow all potential custom element name for component name including non-alphanumeric characters', () => { Vue.extend({ name: 'my-컴포넌트' }) expect(`Invalid component name`).not.toHaveBeenWarned() }) })