text: import Vue from 'vue'
  import { UA } from 'core/util/env'
  
  describe('Options components', () => {
    it('should accept plain object', () => {
      const vm = new Vue({
        template: '<test></test>',
        components: {
          test: {
            template: '<div>hi</div>'
          }
        }
      }).$mount()
      expect(vm.$el.tagName).toBe('DIV')
      expect(vm.$el.textContent).toBe('hi')
    })
  
    it('should accept extended constructor', () => {
      const Test = Vue.extend({
        template: '<div>hi</div>'
      })
      const vm = new Vue({
        template: '<test></test>',
        components: {
          test: Test
        }
      }).$mount()
      expect(vm.$el.tagName).toBe('DIV')
      expect(vm.$el.textContent).toBe('hi')
    })
  
    it('should accept camelCase', () => {
      const myComp = {
        template: '<div>hi</div>'
      }
      const vm = new Vue({
        template: '<my-comp></my-comp>',
        components: {
          myComp
        }
      }).$mount()
      expect(vm.$el.tagName).toBe('DIV')
      expect(vm.$el.textContent).toBe('hi')
    })
  
    it('should accept PascalCase', () => {
      const MyComp = {
        template: '<div>hi</div>'
      }
      const vm = new Vue({
        template: '<my-comp></my-comp>',
        components: {
          MyComp
        }
      }).$mount()
      expect(vm.$el.tagName).toBe('DIV')
      expect(vm.$el.textContent).toBe('hi')
    })
  
    it('should warn native HTML elements', () => {
      new Vue({
        components: {
          div: { template: '<div></div>' }
        }
      })
      expect('Do not use built-in or reserved HTML elements as component').toHaveBeenWarned()
    })
  
    it('should warn built-in elements', () => {
      new Vue({
        components: {
          component: { template: '<div></div>' }
        }
      })
      expect('Do not use built-in or reserved HTML elements as component').toHaveBeenWarned()
    })
  
    // the HTMLUnknownElement check doesn't work in Android 4.2
    // but since it doesn't support custom elements nor will any dev use it
    // as their primary debugging browser, it doesn't really matter.
    if (!(UA && /android 4\.2/.test(UA))) {
      it('warn non-existent', () => {
        new Vue({
          template: '<test></test>'
        }).$mount()
        expect('Unknown custom element: <test>').toHaveBeenWarned()
      })
    }
  })
  