ssrTransitionGroup.spec.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { compile } from '../src'
  2. // transition-group should flatten and concat its children fragments into
  3. // a single one
  4. describe('transition-group', () => {
  5. test('basic', () => {
  6. expect(
  7. compile(`<transition-group><div v-for="i in list"/></transition-group>`)
  8. .code
  9. ).toMatchInlineSnapshot(`
  10. "const { ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
  11. return function ssrRender(_ctx, _push, _parent, _attrs) {
  12. _push(\`<!--[-->\`)
  13. _ssrRenderList(_ctx.list, (i) => {
  14. _push(\`<div></div>\`)
  15. })
  16. _push(\`<!--]-->\`)
  17. }"
  18. `)
  19. })
  20. test('with static tag', () => {
  21. expect(
  22. compile(
  23. `<transition-group tag="ul"><div v-for="i in list"/></transition-group>`
  24. ).code
  25. ).toMatchInlineSnapshot(`
  26. "const { ssrRenderAttrs: _ssrRenderAttrs, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
  27. return function ssrRender(_ctx, _push, _parent, _attrs) {
  28. _push(\`<ul\${_ssrRenderAttrs(_attrs)}>\`)
  29. _ssrRenderList(_ctx.list, (i) => {
  30. _push(\`<div></div>\`)
  31. })
  32. _push(\`</ul>\`)
  33. }"
  34. `)
  35. })
  36. test('with dynamic tag', () => {
  37. expect(
  38. compile(
  39. `<transition-group :tag="someTag"><div v-for="i in list"/></transition-group>`
  40. ).code
  41. ).toMatchInlineSnapshot(`
  42. "const { ssrRenderAttrs: _ssrRenderAttrs, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
  43. return function ssrRender(_ctx, _push, _parent, _attrs) {
  44. _push(\`<\${
  45. _ctx.someTag
  46. }\${
  47. _ssrRenderAttrs(_attrs)
  48. }>\`)
  49. _ssrRenderList(_ctx.list, (i) => {
  50. _push(\`<div></div>\`)
  51. })
  52. _push(\`</\${_ctx.someTag}>\`)
  53. }"
  54. `)
  55. })
  56. test('with multi fragments children', () => {
  57. expect(
  58. compile(
  59. `<transition-group>
  60. <div v-for="i in 10"/>
  61. <div v-for="i in 10"/>
  62. <template v-if="ok"><div>ok</div></template>
  63. </transition-group>`
  64. ).code
  65. ).toMatchInlineSnapshot(`
  66. "const { ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
  67. return function ssrRender(_ctx, _push, _parent, _attrs) {
  68. _push(\`<!--[-->\`)
  69. _ssrRenderList(10, (i) => {
  70. _push(\`<div></div>\`)
  71. })
  72. _ssrRenderList(10, (i) => {
  73. _push(\`<div></div>\`)
  74. })
  75. if (_ctx.ok) {
  76. _push(\`<div>ok</div>\`)
  77. } else {
  78. _push(\`<!---->\`)
  79. }
  80. _push(\`<!--]-->\`)
  81. }"
  82. `)
  83. })
  84. test('attribute fallthrough', () => {
  85. expect(
  86. compile(
  87. `<transition-group tag="ul" class="red" id="ok">
  88. </transition-group>`
  89. ).code
  90. ).toMatchInlineSnapshot(`
  91. "const { mergeProps: _mergeProps } = require("vue")
  92. const { ssrRenderAttrs: _ssrRenderAttrs } = require("vue/server-renderer")
  93. return function ssrRender(_ctx, _push, _parent, _attrs) {
  94. _push(\`<ul\${_ssrRenderAttrs(_mergeProps({
  95. class: "red",
  96. id: "ok"
  97. }, _attrs))}></ul>\`)
  98. }"
  99. `)
  100. })
  101. })