rendererElement.spec.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { makeRender } from './_utils'
  2. import { template } from '../src/dom/template'
  3. const define = makeRender()
  4. describe('renderer: element', () => {
  5. it('should create an element', () => {
  6. const { html } = define({
  7. render() {
  8. return template(`<div>`)()
  9. },
  10. }).render()
  11. expect(html()).toBe('<div></div>')
  12. })
  13. it('should create an element with props', () => {
  14. const { html } = define({
  15. render() {
  16. return template(`<div id="foo" class="bar">`)()
  17. },
  18. }).render()
  19. expect(html()).toBe('<div id="foo" class="bar"></div>')
  20. })
  21. it('should create an element with direct text children', () => {
  22. const { html } = define({
  23. render() {
  24. return template(`<div>foo bar`)()
  25. },
  26. }).render()
  27. expect(html()).toBe('<div>foo bar</div>')
  28. })
  29. it('should create an element with direct text children and props', () => {
  30. const { html } = define({
  31. render() {
  32. return template(`<div id="foo">bar`)()
  33. },
  34. }).render()
  35. expect(html()).toBe('<div id="foo">bar</div>')
  36. })
  37. it.fails('should update an element tag which is already mounted', () => {
  38. const { html } = define({
  39. render() {
  40. return template(`<div>foo`)()
  41. },
  42. }).render()
  43. expect(html()).toBe('<div>foo</div>')
  44. define({
  45. render() {
  46. return template(`<span>foo`)()
  47. },
  48. }).render()
  49. expect(html()).toBe('<span>foo</span>')
  50. })
  51. it.fails('should update element props which is already mounted', () => {
  52. const { html } = define({
  53. render() {
  54. return template(`<div id="baz">foo`)()
  55. },
  56. }).render()
  57. expect(html()).toBe('<div id="baz">foo</div>')
  58. define({
  59. render() {
  60. return template(`<div id="baz" class="bar">foo`)()
  61. },
  62. }).render()
  63. expect(html()).toBe('<div id="baz" class="bar">foo</div>')
  64. })
  65. })