ssrSlotOutlet.spec.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { compile } from '../src'
  2. describe('ssr: <slot>', () => {
  3. test('basic', () => {
  4. expect(compile(`<slot/>`).code).toMatchInlineSnapshot(`
  5. "const { ssrRenderSlot: _ssrRenderSlot } = require(\\"@vue/server-renderer\\")
  6. return function ssrRender(_ctx, _push, _parent) {
  7. _ssrRenderSlot(_ctx.$slots, \\"default\\", {}, null, _push, _parent)
  8. }"
  9. `)
  10. })
  11. test('with name', () => {
  12. expect(compile(`<slot name="foo" />`).code).toMatchInlineSnapshot(`
  13. "const { ssrRenderSlot: _ssrRenderSlot } = require(\\"@vue/server-renderer\\")
  14. return function ssrRender(_ctx, _push, _parent) {
  15. _ssrRenderSlot(_ctx.$slots, \\"foo\\", {}, null, _push, _parent)
  16. }"
  17. `)
  18. })
  19. test('with dynamic name', () => {
  20. expect(compile(`<slot :name="bar.baz" />`).code).toMatchInlineSnapshot(`
  21. "const { ssrRenderSlot: _ssrRenderSlot } = require(\\"@vue/server-renderer\\")
  22. return function ssrRender(_ctx, _push, _parent) {
  23. _ssrRenderSlot(_ctx.$slots, _ctx.bar.baz, {}, null, _push, _parent)
  24. }"
  25. `)
  26. })
  27. test('with props', () => {
  28. expect(compile(`<slot name="foo" :p="1" bar="2" />`).code)
  29. .toMatchInlineSnapshot(`
  30. "const { ssrRenderSlot: _ssrRenderSlot } = require(\\"@vue/server-renderer\\")
  31. return function ssrRender(_ctx, _push, _parent) {
  32. _ssrRenderSlot(_ctx.$slots, \\"foo\\", {
  33. p: 1,
  34. bar: \\"2\\"
  35. }, null, _push, _parent)
  36. }"
  37. `)
  38. })
  39. test('with fallback', () => {
  40. expect(compile(`<slot>some {{ fallback }} content</slot>`).code)
  41. .toMatchInlineSnapshot(`
  42. "const { ssrRenderSlot: _ssrRenderSlot, ssrInterpolate: _ssrInterpolate } = require(\\"@vue/server-renderer\\")
  43. return function ssrRender(_ctx, _push, _parent) {
  44. _ssrRenderSlot(_ctx.$slots, \\"default\\", {}, () => {
  45. _push(\`some \${_ssrInterpolate(_ctx.fallback)} content\`)
  46. }, _push, _parent)
  47. }"
  48. `)
  49. })
  50. })