text-parser.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. describe('UNIT: TextNode Parser', function () {
  2. var TextParser = require('vue/src/text-parser')
  3. describe('.parse()', function () {
  4. var tokens, badTokens
  5. before(function () {
  6. tokens = TextParser.parse('hello {{a}}! {{ bcd }}{{d.e.f}} {{a + (b || c) ? d : e}} {{>test}}{{{ a + "<em>" }}}')
  7. badTokens = TextParser.parse('{{{a}}{{{{{{{{b}}}}')
  8. })
  9. it('should return null if no interpolate tags are present', function () {
  10. var result = TextParser.parse('hello no tags')
  11. assert.strictEqual(result, null)
  12. })
  13. it('should ignore escaped tags', function () {
  14. var result = TextParser.parse('test {{key}} &#123;&#123;hello&#125;&#125;')
  15. assert.strictEqual(result.length, 3)
  16. assert.strictEqual(result[2], ' &#123;&#123;hello&#125;&#125;')
  17. })
  18. it('should extract correct amount of tokens', function () {
  19. assert.strictEqual(tokens.length, 10)
  20. })
  21. it('should extract plain strings', function () {
  22. assert.strictEqual(typeof tokens[0], 'string')
  23. assert.strictEqual(typeof tokens[2], 'string')
  24. assert.strictEqual(typeof tokens[5], 'string')
  25. assert.strictEqual(typeof tokens[7], 'string')
  26. })
  27. it('should extract basic keys', function () {
  28. assert.strictEqual(tokens[1].key, 'a')
  29. })
  30. it('should trim extracted keys', function () {
  31. assert.strictEqual(tokens[3].key, 'bcd')
  32. })
  33. it('should extract nested keys', function () {
  34. assert.strictEqual(tokens[4].key, 'd.e.f')
  35. })
  36. it('should extract expressions', function () {
  37. assert.strictEqual(tokens[6].key, 'a + (b || c) ? d : e')
  38. })
  39. it('should extract partials', function () {
  40. assert.strictEqual(tokens[8].key, '>test')
  41. })
  42. it('should extract triple mustache (html instead of text)', function () {
  43. assert.strictEqual(tokens[9].key, 'a + "<em>"')
  44. assert.ok(tokens[9].html)
  45. })
  46. it('should deal with bad binding tags', function () {
  47. assert.strictEqual(badTokens.length, 4)
  48. assert.strictEqual(badTokens[0].key, 'a')
  49. assert.notOk(badTokens[0].html)
  50. assert.strictEqual(badTokens[1], '{{{{{')
  51. assert.strictEqual(badTokens[2].key, 'b')
  52. assert.ok(badTokens[2].html)
  53. assert.strictEqual(badTokens[3], '}')
  54. })
  55. })
  56. describe('.parseAttr()', function () {
  57. it('should return Directive.parse friendly expression', function () {
  58. assert.strictEqual(TextParser.parseAttr('{{msg}}'), 'msg')
  59. assert.strictEqual(TextParser.parseAttr('{{msg + "123"}}'), 'msg + "123"')
  60. assert.strictEqual(TextParser.parseAttr('ha {{msg + "123"}} ho'), '"ha "+msg + "123"+" ho"')
  61. })
  62. })
  63. })