compileTemplate.spec.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // TODO need more thorough tests here
  2. import { compileTemplate } from '../src/compileTemplate'
  3. import { compile } from '@vue/compiler-dom'
  4. import { parse, SFCTemplateBlock } from '../src/parse'
  5. const compiler = { compile }
  6. test('should work', () => {
  7. const source = `<div><p>{{ render }}</p></div>`
  8. const result = compileTemplate({ filename: 'example.vue', source, compiler })
  9. expect(result.errors.length).toBe(0)
  10. expect(result.source).toBe(source)
  11. // should expose render fn
  12. expect(result.code).toMatch(`export default function render()`)
  13. })
  14. test('preprocess pug', () => {
  15. const template = parse(
  16. `
  17. <template lang="pug">
  18. body
  19. h1 Pug Examples
  20. div.container
  21. p Cool Pug example!
  22. </template>
  23. `,
  24. { filename: 'example.vue', needMap: true }
  25. ).template as SFCTemplateBlock
  26. const result = compileTemplate({
  27. filename: 'example.vue',
  28. source: template.content,
  29. preprocessLang: template.lang,
  30. compiler
  31. })
  32. expect(result.errors.length).toBe(0)
  33. })
  34. test('warn missing preprocessor', () => {
  35. const template = parse(`<template lang="unknownLang">\n</template>\n`, {
  36. filename: 'example.vue',
  37. needMap: true
  38. }).template as SFCTemplateBlock
  39. const result = compileTemplate({
  40. filename: 'example.vue',
  41. compiler,
  42. source: template.content,
  43. preprocessLang: template.lang
  44. })
  45. expect(result.errors.length).toBe(1)
  46. })