2
0

components.spec.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import Vue from 'vue'
  2. describe('Options components', () => {
  3. it('should accept plain object', () => {
  4. const vm = new Vue({
  5. template: '<test></test>',
  6. components: {
  7. test: {
  8. template: '<div>hi</div>'
  9. }
  10. }
  11. }).$mount()
  12. expect(vm.$el.tagName).toBe('DIV')
  13. expect(vm.$el.textContent).toBe('hi')
  14. })
  15. it('should accept extended constructor', () => {
  16. const Test = Vue.extend({
  17. template: '<div>hi</div>'
  18. })
  19. const vm = new Vue({
  20. template: '<test></test>',
  21. components: {
  22. test: Test
  23. }
  24. }).$mount()
  25. expect(vm.$el.tagName).toBe('DIV')
  26. expect(vm.$el.textContent).toBe('hi')
  27. })
  28. it('should accept camelCase', () => {
  29. const myComp = {
  30. template: '<div>hi</div>'
  31. }
  32. const vm = new Vue({
  33. template: '<my-comp></my-comp>',
  34. components: {
  35. myComp
  36. }
  37. }).$mount()
  38. expect(vm.$el.tagName).toBe('DIV')
  39. expect(vm.$el.textContent).toBe('hi')
  40. })
  41. it('should accept PascalCase', () => {
  42. const MyComp = {
  43. template: '<div>hi</div>'
  44. }
  45. const vm = new Vue({
  46. template: '<my-comp></my-comp>',
  47. components: {
  48. MyComp
  49. }
  50. }).$mount()
  51. expect(vm.$el.tagName).toBe('DIV')
  52. expect(vm.$el.textContent).toBe('hi')
  53. })
  54. it('should warn native HTML elements', () => {
  55. new Vue({
  56. components: {
  57. div: { template: '<div></div>' }
  58. }
  59. })
  60. expect('Do not use built-in or reserved HTML elements as component').toHaveBeenWarned()
  61. })
  62. it('should warn built-in elements', () => {
  63. new Vue({
  64. components: {
  65. component: { template: '<div></div>' }
  66. }
  67. })
  68. expect('Do not use built-in or reserved HTML elements as component').toHaveBeenWarned()
  69. })
  70. it('warn non-existent', () => {
  71. new Vue({
  72. template: '<test></test>'
  73. }).$mount()
  74. expect('Unknown custom element: <test>').toHaveBeenWarned()
  75. })
  76. })