| OLD | NEW |
| 1 library interpolate_spec; | 1 library interpolate_spec; |
| 2 | 2 |
| 3 import '../_specs.dart'; | 3 import '../_specs.dart'; |
| 4 | 4 |
| 5 class ToStringableObject { | 5 class ToStringableObject { |
| 6 toString() => 'World'; | 6 toString() => 'World'; |
| 7 } | 7 } |
| 8 | 8 |
| 9 main() { | 9 main() { |
| 10 describe('\$interpolate', () { | 10 describe('interpolate', () { |
| 11 | 11 |
| 12 it('should return undefined when there are no bindings and textOnly is set t
o true', | 12 it('should return undefined when there are no bindings and textOnly is set t
o true', |
| 13 inject((Interpolate $interpolate) { | 13 (Interpolate interpolate) { |
| 14 expect($interpolate('some text', true)).toBe(null); | 14 expect(interpolate('some text', true)).toBe(null); |
| 15 })); | 15 }); |
| 16 | 16 |
| 17 it('should suppress falsy objects', inject((Interpolate $interpolate) { | 17 it('should return an expression', (Interpolate interpolate) { |
| 18 expect($interpolate('{{undefined}}')([null])).toEqual(''); | 18 expect(interpolate('Hello {{name}}!')) |
| 19 expect($interpolate('{{undefined+undefined}}')([null])).toEqual(''); | 19 .toEqual('"Hello "+(name|stringify)+"!"'); |
| 20 expect($interpolate('{{null}}')([null])).toEqual(''); | 20 expect(interpolate('a{{b}}C')) |
| 21 expect($interpolate('{{a.b}}')([null])).toEqual(''); | 21 .toEqual('"a"+(b|stringify)+"C"'); |
| 22 })); | 22 expect(interpolate('a{{b}}')).toEqual('"a"+(b|stringify)'); |
| 23 expect(interpolate('{{a}}b')).toEqual('(a|stringify)+"b"'); |
| 24 expect(interpolate('{{b}}')).toEqual('(b|stringify)'); |
| 25 expect(interpolate('{{b}}+{{c}}')) |
| 26 .toEqual('(b|stringify)+"+"+(c|stringify)'); |
| 27 expect(interpolate('{{b}}x{{c}}')) |
| 28 .toEqual('(b|stringify)+"x"+(c|stringify)'); |
| 29 }); |
| 23 | 30 |
| 24 it('should jsonify objects', inject((Interpolate $interpolate) { | 31 it('should Parse Multiline', (Interpolate interpolate) { |
| 25 expect($interpolate('{{ {} }}')([{}])).toEqual('{}'); | 32 expect(interpolate("X\nY{{A\n+B}}C\nD")) |
| 26 expect($interpolate('{{ true }}')([true])).toEqual('true'); | 33 .toEqual('"X\nY"+(A\n+B|stringify)+"C\nD"'); |
| 27 expect($interpolate('{{ false }}')([false])).toEqual('false'); | 34 }); |
| 28 })); | |
| 29 | 35 |
| 30 | 36 it('should escape double quotes', (Interpolate interpolate) { |
| 31 it('should return interpolation function', inject((Interpolate $interpolate,
Scope rootScope) { | 37 expect(interpolate(r'"{{a}}')).toEqual(r'"\""+(a|stringify)'); |
| 32 rootScope.context['name'] = 'Misko'; | 38 expect(interpolate(r'\"{{a}}')).toEqual(r'"\\\""+(a|stringify)'); |
| 33 var fn = $interpolate('Hello {{name}}!'); | |
| 34 expect(fn(['Misko'])).toEqual('Hello Misko!'); | |
| 35 })); | |
| 36 | |
| 37 | |
| 38 it('should ignore undefined model', inject((Interpolate $interpolate) { | |
| 39 expect($interpolate("Hello {{'World' + foo}}")(['World'])).toEqual('Hello
World'); | |
| 40 })); | |
| 41 | |
| 42 | |
| 43 it('should use toString to conver objects to string', inject((Interpolate $i
nterpolate, Scope rootScope) { | |
| 44 expect($interpolate("Hello, {{obj}}!")([new ToStringableObject()])).toEqua
l('Hello, World!'); | |
| 45 })); | |
| 46 | |
| 47 | |
| 48 describe('parseBindings', () { | |
| 49 it('should Parse Text With No Bindings', inject((Interpolate $interpolate)
{ | |
| 50 var parts = $interpolate("a").seperators; | |
| 51 expect(parts.length).toEqual(1); | |
| 52 expect(parts[0]).toEqual("a"); | |
| 53 })); | |
| 54 | |
| 55 it('should Parse Empty Text', inject((Interpolate $interpolate) { | |
| 56 var parts = $interpolate("").seperators; | |
| 57 expect(parts.length).toEqual(1); | |
| 58 expect(parts[0]).toEqual(""); | |
| 59 })); | |
| 60 | |
| 61 it('should Parse Inner Binding', inject((Interpolate $interpolate) { | |
| 62 var parts = $interpolate("a{{b}}C").seperators; | |
| 63 expect(parts.length).toEqual(2); | |
| 64 expect(parts[0]).toEqual("a"); | |
| 65 expect(parts[1]).toEqual("C"); | |
| 66 })); | |
| 67 | |
| 68 it('should Parse Ending Binding', inject((Interpolate $interpolate) { | |
| 69 var parts = $interpolate("a{{b}}").seperators; | |
| 70 expect(parts.length).toEqual(2); | |
| 71 expect(parts[0]).toEqual("a"); | |
| 72 expect(parts[1]).toEqual(""); | |
| 73 })); | |
| 74 | |
| 75 it('should Parse Begging Binding', inject((Interpolate $interpolate) { | |
| 76 var parts = $interpolate("{{b}}c").seperators; | |
| 77 expect(parts.length).toEqual(2); | |
| 78 expect(parts[0]).toEqual(""); | |
| 79 expect(parts[1]).toEqual("c"); | |
| 80 })); | |
| 81 | |
| 82 it('should Parse Loan Binding', inject((Interpolate $interpolate) { | |
| 83 var parts = $interpolate("{{b}}").seperators; | |
| 84 expect(parts.length).toEqual(2); | |
| 85 expect(parts[0]).toEqual(""); | |
| 86 expect(parts[1]).toEqual(""); | |
| 87 })); | |
| 88 | |
| 89 it('should Parse Two Bindings', inject((Interpolate $interpolate) { | |
| 90 var parts = $interpolate("{{b}}{{c}}").seperators; | |
| 91 expect(parts.length).toEqual(3); | |
| 92 expect(parts[0]).toEqual(""); | |
| 93 expect(parts[1]).toEqual(""); | |
| 94 expect(parts[2]).toEqual(""); | |
| 95 })); | |
| 96 | |
| 97 it('should Parse Two Bindings With Text In Middle', inject((Interpolate $i
nterpolate) { | |
| 98 var parts = $interpolate("{{b}}x{{c}}").seperators; | |
| 99 expect(parts.length).toEqual(3); | |
| 100 expect(parts[0]).toEqual(""); | |
| 101 expect(parts[1]).toEqual("x"); | |
| 102 expect(parts[2]).toEqual(""); | |
| 103 })); | |
| 104 | |
| 105 it('should Parse Multiline', inject((Interpolate $interpolate) { | |
| 106 var parts = $interpolate('"X\nY{{A\n+B}}C\nD"').seperators; | |
| 107 expect(parts.length).toEqual(2); | |
| 108 expect(parts[0]).toEqual('"X\nY'); | |
| 109 expect(parts[1]).toEqual('C\nD"'); | |
| 110 })); | |
| 111 }); | 39 }); |
| 112 }); | 40 }); |
| 113 } | 41 } |
| OLD | NEW |