OLD | NEW |
1 library ng_view_spec; | 1 library ng_view_spec; |
2 | 2 |
3 import 'dart:html'; | 3 import 'dart:html'; |
4 import '../_specs.dart'; | 4 import '../_specs.dart'; |
5 import 'package:angular/routing/module.dart'; | 5 import 'package:angular/routing/module.dart'; |
6 import 'package:angular/mock/module.dart'; | 6 import 'package:angular/mock/module.dart'; |
7 | 7 |
8 main() { | 8 main() { |
9 describe('Flat ngView', () { | 9 describe('Flat ngView', () { |
10 TestBed _; | 10 TestBed _; |
11 Router router; | 11 Router router; |
12 | 12 |
13 beforeEach(module((Module m) { | 13 beforeEachModule((Module module) { |
14 m | 14 module |
15 ..install(new AngularMockModule()) | 15 ..install(new AngularMockModule()) |
16 ..type(RouteInitializerFn, implementedBy: FlatRouteInitializer); | 16 ..type(RouteInitializerFn, implementedBy: FlatRouteInitializer); |
17 })); | 17 }); |
18 | 18 |
19 beforeEach(inject((TestBed tb, Router _router, TemplateCache templates) { | 19 beforeEach((TestBed tb, Router _router, TemplateCache templates) { |
20 _ = tb; | 20 _ = tb; |
21 router = _router; | 21 router = _router; |
22 | 22 |
23 templates.put('foo.html', new HttpResponse(200, | 23 templates.put('foo.html', new HttpResponse(200, |
24 '<h1>Foo</h1>')); | 24 '<h1>Foo</h1>')); |
25 templates.put('bar.html', new HttpResponse(200, | 25 templates.put('bar.html', new HttpResponse(200, |
26 '<h1>Bar</h1>')); | 26 '<h1>Bar</h1>')); |
27 })); | 27 }); |
28 | 28 |
29 | 29 |
30 it('should switch template', async(() { | 30 it('should switch template', async(() { |
31 Element root = _.compile('<ng-view></ng-view>'); | 31 Element root = _.compile('<div><ng-view></ng-view></div>'); |
32 expect(root.text).toEqual(''); | 32 expect(root.text).toEqual(''); |
33 | 33 |
34 router.route('/foo'); | 34 router.route('/foo'); |
35 microLeap(); | 35 microLeap(); |
| 36 _.rootScope.apply(); |
36 expect(root.text).toEqual('Foo'); | 37 expect(root.text).toEqual('Foo'); |
37 | 38 |
38 router.route('/bar'); | 39 router.route('/bar'); |
39 microLeap(); | 40 microLeap(); |
| 41 _.rootScope.apply(); |
40 expect(root.text).toEqual('Bar'); | 42 expect(root.text).toEqual('Bar'); |
41 | 43 |
42 router.route('/foo'); | 44 router.route('/foo'); |
43 microLeap(); | 45 microLeap(); |
| 46 _.rootScope.apply(); |
44 expect(root.text).toEqual('Foo'); | 47 expect(root.text).toEqual('Foo'); |
45 })); | 48 })); |
46 | 49 |
47 | 50 |
48 it('should switch template when route is already active', async(() { | 51 it('should switch template when route is already active', async(() { |
49 // Force the routing system to initialize. | 52 // Force the routing system to initialize. |
50 _.compile('<ng-view></ng-view>'); | 53 _.compile('<div><ng-view></ng-view></div>'); |
51 | 54 |
52 router.route('/foo'); | 55 router.route('/foo'); |
53 microLeap(); | 56 microLeap(); |
54 Element root = _.compile('<ng-view></ng-view>'); | 57 Element root = _.compile('<div><ng-view></ng-view></div>'); |
55 expect(root.text).toEqual(''); | 58 expect(root.text).toEqual(''); |
56 | 59 |
| 60 microLeap(); |
57 _.rootScope.apply(); | 61 _.rootScope.apply(); |
58 microLeap(); | |
59 expect(root.text).toEqual('Foo'); | 62 expect(root.text).toEqual('Foo'); |
60 })); | 63 })); |
61 | 64 |
62 | 65 |
63 it('should clear template when route is deactivated', async(() { | 66 it('should clear template when route is deactivated', async(() { |
64 Element root = _.compile('<ng-view></ng-view>'); | 67 Element root = _.compile('<div><ng-view></ng-view></div>'); |
65 expect(root.text).toEqual(''); | 68 expect(root.text).toEqual(''); |
66 | 69 |
67 router.route('/foo'); | 70 router.route('/foo'); |
68 microLeap(); | 71 microLeap(); |
| 72 _.rootScope.apply(); |
69 expect(root.text).toEqual('Foo'); | 73 expect(root.text).toEqual('Foo'); |
70 | 74 |
71 router.route('/baz'); // route without a template | 75 router.route('/baz'); // route without a template |
72 microLeap(); | 76 microLeap(); |
| 77 _.rootScope.apply(); |
73 expect(root.text).toEqual(''); | 78 expect(root.text).toEqual(''); |
74 })); | 79 })); |
75 | 80 |
76 }); | 81 }); |
77 | 82 |
78 | 83 |
79 describe('Nested ngView', () { | 84 describe('Nested ngView', () { |
80 TestBed _; | 85 TestBed _; |
81 Router router; | 86 Router router; |
82 | 87 |
83 beforeEach(module((Module m) { | 88 beforeEachModule((Module module) { |
84 m | 89 module |
85 ..install(new AngularMockModule()) | 90 ..install(new AngularMockModule()) |
86 ..type(RouteInitializerFn, implementedBy: NestedRouteInitializer); | 91 ..type(RouteInitializerFn, implementedBy: NestedRouteInitializer); |
87 })); | 92 }); |
88 | 93 |
89 beforeEach(inject((TestBed tb, Router _router, TemplateCache templates) { | 94 beforeEach((TestBed tb, Router _router, TemplateCache templates) { |
90 _ = tb; | 95 _ = tb; |
91 router = _router; | 96 router = _router; |
92 | 97 |
93 templates.put('library.html', new HttpResponse(200, | 98 templates.put('library.html', new HttpResponse(200, |
94 '<div><h1>Library</h1>' | 99 '<div><h1>Library</h1>' |
95 '<ng-view></ng-view></div>')); | 100 '<ng-view></ng-view></div>')); |
96 templates.put('book_list.html', new HttpResponse(200, | 101 templates.put('book_list.html', new HttpResponse(200, |
97 '<h1>Books</h1>')); | 102 '<h1>Books</h1>')); |
98 templates.put('book_overview.html', new HttpResponse(200, | 103 templates.put('book_overview.html', new HttpResponse(200, |
99 '<h2>Book 1234</h2>')); | 104 '<h2>Book 1234</h2>')); |
100 templates.put('book_read.html', new HttpResponse(200, | 105 templates.put('book_read.html', new HttpResponse(200, |
101 '<h2>Read Book 1234</h2>')); | 106 '<h2>Read Book 1234</h2>')); |
102 })); | 107 }); |
103 | |
104 | 108 |
105 it('should switch nested templates', async(() { | 109 it('should switch nested templates', async(() { |
106 Element root = _.compile('<ng-view></ng-view>'); | 110 Element root = _.compile('<div><ng-view></ng-view></div>'); |
107 expect(root.text).toEqual(''); | 111 expect(root.text).toEqual(''); |
108 | 112 |
109 router.route('/library/all'); | 113 router.route('/library/all'); |
110 microLeap(); | 114 microLeap(); |
| 115 _.rootScope.apply(); |
111 expect(root.text).toEqual('LibraryBooks'); | 116 expect(root.text).toEqual('LibraryBooks'); |
112 | 117 |
113 router.route('/library/1234'); | 118 router.route('/library/1234'); |
114 microLeap(); | 119 microLeap(); |
| 120 _.rootScope.apply(); |
115 expect(root.text).toEqual('LibraryBook 1234'); | 121 expect(root.text).toEqual('LibraryBook 1234'); |
116 | 122 |
117 // nothing should change here | 123 // nothing should change here |
118 router.route('/library/1234/overview'); | 124 router.route('/library/1234/overview'); |
119 microLeap(); | 125 microLeap(); |
| 126 _.rootScope.apply(); |
120 expect(root.text).toEqual('LibraryBook 1234'); | 127 expect(root.text).toEqual('LibraryBook 1234'); |
121 | 128 |
122 // nothing should change here | 129 // nothing should change here |
123 router.route('/library/1234/read'); | 130 router.route('/library/1234/read'); |
124 microLeap(); | 131 microLeap(); |
| 132 _.rootScope.apply(); |
125 expect(root.text).toEqual('LibraryRead Book 1234'); | 133 expect(root.text).toEqual('LibraryRead Book 1234'); |
126 })); | 134 })); |
| 135 }); |
127 | 136 |
| 137 |
| 138 describe('Inline template ngView', () { |
| 139 TestBed _; |
| 140 Router router; |
| 141 |
| 142 beforeEachModule((Module module) { |
| 143 module |
| 144 ..install(new AngularMockModule()) |
| 145 ..value(RouteInitializerFn, (router, views) { |
| 146 views.configure({ |
| 147 'foo': ngRoute( |
| 148 path: '/foo', |
| 149 viewHtml: '<h1>Hello</h1>') |
| 150 }); |
| 151 }); |
| 152 }); |
| 153 |
| 154 beforeEach((TestBed tb, Router _router, TemplateCache templates) { |
| 155 _ = tb; |
| 156 router = _router; |
| 157 }); |
| 158 |
| 159 it('should switch inline templates', async(() { |
| 160 Element root = _.compile('<div><ng-view></ng-view></div>'); |
| 161 expect(root.text).toEqual(''); |
| 162 |
| 163 router.route('/foo'); |
| 164 microLeap(); |
| 165 _.rootScope.apply(); |
| 166 expect(root.text).toEqual('Hello'); |
| 167 })); |
128 }); | 168 }); |
129 } | 169 } |
130 | 170 |
131 class FlatRouteInitializer implements Function { | 171 class FlatRouteInitializer implements Function { |
132 void call(Router router, ViewFactory view) { | 172 void call(Router router, RouteViewFactory view) { |
133 router.root | 173 router.root |
134 ..addRoute( | 174 ..addRoute( |
135 name: 'foo', | 175 name: 'foo', |
136 path: '/foo', | 176 path: '/foo', |
137 enter: view('foo.html')) | 177 enter: view('foo.html')) |
138 ..addRoute( | 178 ..addRoute( |
139 name: 'bar', | 179 name: 'bar', |
140 path: '/bar', | 180 path: '/bar', |
141 enter: view('bar.html')) | 181 enter: view('bar.html')) |
142 ..addRoute( | 182 ..addRoute( |
143 name: 'baz', | 183 name: 'baz', |
144 path: '/baz'); // route without a template | 184 path: '/baz'); // route without a template |
145 } | 185 } |
146 } | 186 } |
147 | 187 |
148 class NestedRouteInitializer implements Function { | 188 class NestedRouteInitializer implements Function { |
149 void call(Router router, ViewFactory view) { | 189 void call(Router router, RouteViewFactory view) { |
150 router.root | 190 router.root |
151 ..addRoute( | 191 ..addRoute( |
152 name: 'library', | 192 name: 'library', |
153 path: '/library', | 193 path: '/library', |
154 enter: view('library.html'), | 194 enter: view('library.html'), |
155 mount: (Route route) => route | 195 mount: (Route route) => route |
156 ..addRoute( | 196 ..addRoute( |
157 name: 'all', | 197 name: 'all', |
158 path: '/all', | 198 path: '/all', |
159 enter: view('book_list.html')) | 199 enter: view('book_list.html')) |
160 ..addRoute( | 200 ..addRoute( |
161 name: 'book', | 201 name: 'book', |
162 path: '/:bookId', | 202 path: '/:bookId', |
163 mount: (Route route) => route | 203 mount: (Route route) => route |
164 ..addRoute( | 204 ..addRoute( |
165 name: 'overview', | 205 name: 'overview', |
166 path: '/overview', | 206 path: '/overview', |
167 defaultRoute: true, | 207 defaultRoute: true, |
168 enter: view('book_overview.html')) | 208 enter: view('book_overview.html')) |
169 ..addRoute( | 209 ..addRoute( |
170 name: 'read', | 210 name: 'read', |
171 path: '/read', | 211 path: '/read', |
172 enter: view('book_read.html')))) | 212 enter: view('book_read.html')))) |
173 ..addRoute( | 213 ..addRoute( |
174 name: 'admin', | 214 name: 'admin', |
175 path: '/admin', | 215 path: '/admin', |
176 enter: view('admin.html')); | 216 enter: view('admin.html')); |
177 } | 217 } |
178 } | 218 } |
OLD | NEW |