ssrInjectCssVars.spec.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { compile } from '../src'
  2. describe('ssr: inject <style vars>', () => {
  3. test('basic', () => {
  4. expect(
  5. compile(`<div/>`, {
  6. ssrCssVars: `{ color }`
  7. }).code
  8. ).toMatchInlineSnapshot(`
  9. "const { mergeProps: _mergeProps } = require(\\"vue\\")
  10. const { ssrResolveCssVars: _ssrResolveCssVars, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
  11. return function ssrRender(_ctx, _push, _parent, _attrs) {
  12. const _cssVars = ssrResolveCssVars({ color: _ctx.color })
  13. _push(\`<div\${_ssrRenderAttrs(_mergeProps(_attrs, _cssVars))}></div>\`)
  14. }"
  15. `)
  16. })
  17. test('fragment', () => {
  18. expect(
  19. compile(`<div/><div/>`, {
  20. ssrCssVars: `{ color }`
  21. }).code
  22. ).toMatchInlineSnapshot(`
  23. "const { ssrResolveCssVars: _ssrResolveCssVars, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
  24. return function ssrRender(_ctx, _push, _parent, _attrs) {
  25. const _cssVars = ssrResolveCssVars({ color: _ctx.color })
  26. _push(\`<!--[--><div\${
  27. _ssrRenderAttrs(_cssVars)
  28. }></div><div\${
  29. _ssrRenderAttrs(_cssVars)
  30. }></div><!--]-->\`)
  31. }"
  32. `)
  33. })
  34. test('passing on to components', () => {
  35. expect(
  36. compile(`<div/><foo/>`, {
  37. ssrCssVars: `{ color }`
  38. }).code
  39. ).toMatchInlineSnapshot(`
  40. "const { resolveComponent: _resolveComponent } = require(\\"vue\\")
  41. const { ssrResolveCssVars: _ssrResolveCssVars, ssrRenderAttrs: _ssrRenderAttrs, ssrRenderComponent: _ssrRenderComponent } = require(\\"@vue/server-renderer\\")
  42. return function ssrRender(_ctx, _push, _parent, _attrs) {
  43. const _component_foo = _resolveComponent(\\"foo\\")
  44. const _cssVars = ssrResolveCssVars({ color: _ctx.color })
  45. _push(\`<!--[--><div\${_ssrRenderAttrs(_cssVars)}></div>\`)
  46. _push(_ssrRenderComponent(_component_foo, _cssVars, null, _parent))
  47. _push(\`<!--]-->\`)
  48. }"
  49. `)
  50. })
  51. test('v-if branches', () => {
  52. expect(
  53. compile(`<div v-if="ok"/><template v-else><div/><div/></template>`, {
  54. ssrCssVars: `{ color }`
  55. }).code
  56. ).toMatchInlineSnapshot(`
  57. "const { mergeProps: _mergeProps } = require(\\"vue\\")
  58. const { ssrResolveCssVars: _ssrResolveCssVars, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
  59. return function ssrRender(_ctx, _push, _parent, _attrs) {
  60. const _cssVars = ssrResolveCssVars({ color: _ctx.color })
  61. if (_ctx.ok) {
  62. _push(\`<div\${_ssrRenderAttrs(_mergeProps(_attrs, _cssVars))}></div>\`)
  63. } else {
  64. _push(\`<!--[--><div\${
  65. _ssrRenderAttrs(_cssVars)
  66. }></div><div\${
  67. _ssrRenderAttrs(_cssVars)
  68. }></div><!--]-->\`)
  69. }
  70. }"
  71. `)
  72. })
  73. test('w/ scopeId', () => {
  74. expect(
  75. compile(`<div/>`, {
  76. ssrCssVars: `{ color }`,
  77. scopeId: 'data-v-foo'
  78. }).code
  79. ).toMatchInlineSnapshot(`
  80. "const { mergeProps: _mergeProps } = require(\\"vue\\")
  81. const { ssrResolveCssVars: _ssrResolveCssVars, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
  82. return function ssrRender(_ctx, _push, _parent, _attrs) {
  83. const _cssVars = ssrResolveCssVars({ color: _ctx.color }, \\"data-v-foo\\")
  84. _push(\`<div\${_ssrRenderAttrs(_mergeProps(_attrs, _cssVars))} data-v-foo></div>\`)
  85. }"
  86. `)
  87. })
  88. })