github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/public/libs/vue-1.0.24/test/unit/specs/parsers/directive_spec.js (about) 1 var parse = require('src/parsers/directive').parseDirective 2 3 describe('Directive Parser', function () { 4 it('simple', function () { 5 var res = parse('exp') 6 expect(res.expression).toBe('exp') 7 }) 8 9 it('with filters', function () { 10 var res = parse('exp | abc de \'ok\' \'\' 123 | bcd') 11 expect(res.expression).toBe('exp') 12 expect(res.filters.length).toBe(2) 13 expect(res.filters[0].name).toBe('abc') 14 expect(res.filters[0].args.length).toBe(4) 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[0].args[3].value).toBe(123) 22 expect(res.filters[0].args[3].dynamic).toBe(false) 23 expect(res.filters[1].name).toBe('bcd') 24 expect(res.filters[1].args).toBeUndefined() 25 }) 26 27 it('reserved filter args', function () { 28 var res = parse('arr | filterBy a in b') 29 expect(res.expression).toBe('arr') 30 expect(res.filters.length).toBe(1) 31 expect(res.filters[0].args.length).toBe(3) 32 expect(res.filters[0].args[0].value).toBe('a') 33 expect(res.filters[0].args[0].dynamic).toBe(true) 34 expect(res.filters[0].args[1].value).toBe('in') 35 expect(res.filters[0].args[1].dynamic).toBe(false) 36 expect(res.filters[0].args[2].value).toBe('b') 37 expect(res.filters[0].args[2].dynamic).toBe(true) 38 }) 39 40 it('double pipe', function () { 41 var res = parse('a || b | c') 42 expect(res.expression).toBe('a || b') 43 expect(res.filters.length).toBe(1) 44 expect(res.filters[0].name).toBe('c') 45 expect(res.filters[0].args).toBeUndefined() 46 }) 47 48 it('single quote + boolean', function () { 49 var res = parse('a ? \'b\' : c') 50 expect(res.expression).toBe('a ? \'b\' : c') 51 expect(res.filters).toBeUndefined() 52 }) 53 54 it('double quote + boolean', function () { 55 var res = parse('"a:b:c||d|e|f" || d ? a : b') 56 expect(res.expression).toBe('"a:b:c||d|e|f" || d ? a : b') 57 expect(res.filters).toBeUndefined() 58 expect(res.arg).toBeUndefined() 59 }) 60 61 it('nested function calls + array/object literals', function () { 62 var res = parse('test(c.indexOf(d,f),"e,f")') 63 expect(res.expression).toBe('test(c.indexOf(d,f),"e,f")') 64 }) 65 66 it('array literal', function () { 67 var res = parse('d || [e,f]') 68 expect(res.expression).toBe('d || [e,f]') 69 expect(res.filters).toBeUndefined() 70 }) 71 72 it('object literal', function () { 73 var res = parse('{a: 1, b: 2} | p') 74 expect(res.expression).toBe('{a: 1, b: 2}') 75 expect(res.filters.length).toBe(1) 76 expect(res.filters[0].name).toBe('p') 77 expect(res.filters[0].args).toBeUndefined() 78 }) 79 80 it('escape string', function () { 81 var res = parse("'a\\'b' | test") 82 expect(res.expression).toBe("'a\\'b'") 83 expect(res.filters.length).toBe(1) 84 expect(res.filters[0].name).toBe('test') 85 expect(res.filters[0].args).toBeUndefined() 86 }) 87 88 it('cache', function () { 89 var res1 = parse('a || b | c') 90 var res2 = parse('a || b | c') 91 expect(res1).toBe(res2) 92 }) 93 })