directive-new_spec.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var parse = require('../../../../src/parsers/directive-new').parse
  2. describe('New Directive Parser', function () {
  3. it('simple', function () {
  4. var res = parse('exp')
  5. expect(res.expression).toBe('exp')
  6. expect(res.raw).toBe('exp')
  7. })
  8. it('with filters', function () {
  9. var res = parse('exp | abc de \'ok\' \'\' | bcd')
  10. expect(res.expression).toBe('exp')
  11. expect(res.raw).toBe('exp | abc de \'ok\' \'\' | bcd')
  12. expect(res.filters.length).toBe(2)
  13. expect(res.filters[0].name).toBe('abc')
  14. expect(res.filters[0].args.length).toBe(3)
  15. expect(res.filters[0].args[0].value).toBe('de')
  16. expect(res.filters[0].args[0].dynamic).toBe(true)
  17. expect(res.filters[0].args[1].value).toBe('ok')
  18. expect(res.filters[0].args[1].dynamic).toBe(false)
  19. expect(res.filters[0].args[2].value).toBe('')
  20. expect(res.filters[0].args[2].dynamic).toBe(false)
  21. expect(res.filters[1].name).toBe('bcd')
  22. expect(res.filters[1].args).toBeUndefined()
  23. })
  24. it('double pipe', function () {
  25. var res = parse('a || b | c')
  26. expect(res.expression).toBe('a || b')
  27. expect(res.raw).toBe('a || b | c')
  28. expect(res.filters.length).toBe(1)
  29. expect(res.filters[0].name).toBe('c')
  30. expect(res.filters[0].args).toBeUndefined()
  31. })
  32. it('single quote + boolean', function () {
  33. var res = parse('a ? \'b\' : c')
  34. expect(res.expression).toBe('a ? \'b\' : c')
  35. expect(res.filters).toBeUndefined()
  36. })
  37. it('double quote + boolean', function () {
  38. var res = parse('"a:b:c||d|e|f" || d ? a : b')
  39. expect(res.expression).toBe('"a:b:c||d|e|f" || d ? a : b')
  40. expect(res.filters).toBeUndefined()
  41. expect(res.arg).toBeUndefined()
  42. })
  43. it('nested function calls + array/object literals', function () {
  44. var res = parse('test(c.indexOf(d,f),"e,f")')
  45. expect(res.expression).toBe('test(c.indexOf(d,f),"e,f")')
  46. })
  47. it('array literal', function () {
  48. var res = parse('d || [e,f]')
  49. expect(res.expression).toBe('d || [e,f]')
  50. expect(res.filters).toBeUndefined()
  51. })
  52. it('object literal', function () {
  53. var res = parse('{a: 1, b: 2} | p')
  54. expect(res.expression).toBe('{a: 1, b: 2}')
  55. expect(res.filters.length).toBe(1)
  56. expect(res.filters[0].name).toBe('p')
  57. expect(res.filters[0].args).toBeUndefined()
  58. })
  59. it('cache', function () {
  60. var res1 = parse('a || b | c')
  61. var res2 = parse('a || b | c')
  62. expect(res1).toBe(res2)
  63. })
  64. })