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 |