misc_spec.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // patch inDoc
  2. require('../lib/indoc_patch')
  3. // test cases for edge cases & bug fixes
  4. var Vue = require('../../../src/vue')
  5. describe('Misc', function () {
  6. it('should handle directive.bind() altering its childNode structure', function () {
  7. var vm = new Vue({
  8. el: document.createElement('div'),
  9. template: '<div v-test>{{test}}</div>',
  10. data: {
  11. test: 'hi'
  12. },
  13. directives: {
  14. test: {
  15. bind: function () {
  16. this.el.insertBefore(document.createTextNode('yo '),
  17. this.el.firstChild)
  18. }
  19. }
  20. }
  21. })
  22. expect(vm.$el.textContent).toBe('yo hi')
  23. })
  24. it('attached/detached hooks for transcluded components', function () {
  25. var spy1 = jasmine.createSpy('attached')
  26. var spy2 = jasmine.createSpy('detached')
  27. var el = document.createElement('div')
  28. el.innerHTML = '<div v-component="outter" v-ref="outter"><div v-component="inner"></div></div>'
  29. document.body.appendChild(el)
  30. var vm = new Vue({
  31. el: el,
  32. components: {
  33. outter: {
  34. template: '<content></content>'
  35. },
  36. inner: {
  37. template: 'hi',
  38. attached: spy1,
  39. detached: spy2
  40. }
  41. }
  42. })
  43. expect(spy1).toHaveBeenCalled()
  44. vm.$.outter.$remove()
  45. expect(spy2).toHaveBeenCalled()
  46. })
  47. })