Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: third_party/pkg/route_hierarchical/test/client_test.dart

Issue 180873006: Update the Angular/DI tests to latest from github. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Review feedback Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 import 'dart:async'; 1 import 'dart:async';
2 import 'dart:html';
3 2
4 import 'package:unittest/unittest.dart'; 3 import 'package:unittest/unittest.dart';
5 import 'package:unittest/mock.dart'; 4 import 'package:unittest/mock.dart';
6 import 'package:unittest/html_enhanced_config.dart';
7 import 'package:route_hierarchical/client.dart'; 5 import 'package:route_hierarchical/client.dart';
8 import 'package:route_hierarchical/url_pattern.dart'; 6 import 'package:route_hierarchical/url_pattern.dart';
9 7
10 import 'mocks.dart'; 8 import 'mocks.dart';
11 9
12 main() { 10 main() {
13 useHtmlEnhancedConfiguration(); 11 unittestConfiguration.timeout = new Duration(seconds: 1);
14 12
15 test('paths are routed to routes added with addRoute', () { 13 test('paths are routed to routes added with addRoute', () {
16 Router router = new Router(); 14 Router router = new Router();
17 router.root.addRoute( 15 router.root.addRoute(
18 name: 'foo', 16 name: 'foo',
19 path: '/foo', 17 path: '/foo',
20 enter: expectAsync1((RouteEvent e) { 18 enter: expectAsync1((RouteEvent e) {
21 expect(e.path, '/foo'); 19 expect(e.path, '/foo');
20 expect(router.root.getRoute('foo').isActive, isTrue);
22 })); 21 }));
23 router.route('/foo'); 22 return router.route('/foo');
24 }); 23 });
25 24
26 group('hierarchical routing', () { 25 group('hierarchical routing', () {
27 26
28 _testParentChild( 27 _testParentChild(
29 Pattern parentPath, 28 Pattern parentPath,
30 Pattern childPath, 29 Pattern childPath,
31 String expectedParentPath, 30 String expectedParentPath,
32 String expectedChildPath, 31 String expectedChildPath,
33 String testPath) { 32 String testPath) {
34 Router router = new Router(); 33 Router router = new Router();
35 router.root.addRoute( 34 router.root.addRoute(
36 name: 'parent', 35 name: 'parent',
37 path: parentPath, 36 path: parentPath,
38 enter: expectAsync1((RouteEvent e) { 37 enter: expectAsync1((RouteEvent e) {
39 expect(e.path, expectedParentPath); 38 expect(e.path, expectedParentPath);
39 expect(e.route, isNotNull);
40 expect(e.route.name, 'parent');
40 }), 41 }),
41 mount: (Route child) { 42 mount: (Route child) {
42 child.addRoute( 43 child.addRoute(
43 name: 'child', 44 name: 'child',
44 path: childPath, 45 path: childPath,
45 enter: expectAsync1((RouteEvent e) { 46 enter: expectAsync1((RouteEvent e) {
46 expect(e.path, expectedChildPath); 47 expect(e.path, expectedChildPath);
47 })); 48 }));
48 }); 49 });
49 router.route(testPath); 50 router.route(testPath);
(...skipping 16 matching lines...) Expand all
66 '/bar', 67 '/bar',
67 '/foo/bar'); 68 '/foo/bar');
68 }); 69 });
69 70
70 }); 71 });
71 72
72 group('leave', () { 73 group('leave', () {
73 74
74 test('should leave previous route and enter new', () { 75 test('should leave previous route and enter new', () {
75 Map<String, int> counters = <String, int>{ 76 Map<String, int> counters = <String, int>{
77 'fooPreEnter': 0,
76 'fooEnter': 0, 78 'fooEnter': 0,
77 'fooLeave': 0, 79 'fooLeave': 0,
80 'barPreEnter': 0,
78 'barEnter': 0, 81 'barEnter': 0,
79 'barLeave': 0, 82 'barLeave': 0,
83 'bazPreEnter': 0,
80 'bazEnter': 0, 84 'bazEnter': 0,
81 'bazLeave': 0 85 'bazLeave': 0
82 }; 86 };
83 Router router = new Router(); 87 Router router = new Router();
84 router.root 88 router.root
85 ..addRoute(path: '/foo', 89 ..addRoute(path: '/foo',
86 name: 'foo', 90 name: 'foo',
91 preEnter: (RouteEvent e) => counters['fooPreEnter']++,
87 enter: (RouteEvent e) => counters['fooEnter']++, 92 enter: (RouteEvent e) => counters['fooEnter']++,
88 leave: (RouteEvent e) => counters['fooLeave']++, 93 leave: (RouteEvent e) => counters['fooLeave']++,
89 mount: (Route route) => route 94 mount: (Route route) => route
90 ..addRoute(path: '/bar', 95 ..addRoute(path: '/bar',
91 name: 'bar', 96 name: 'bar',
97 preEnter: (RouteEvent e) => counters['barPreEnter']++,
92 enter: (RouteEvent e) => counters['barEnter']++, 98 enter: (RouteEvent e) => counters['barEnter']++,
93 leave: (RouteEvent e) => counters['barLeave']++) 99 leave: (RouteEvent e) => counters['barLeave']++)
94 ..addRoute(path: '/baz', 100 ..addRoute(path: '/baz',
95 name: 'baz', 101 name: 'baz',
102 preEnter: (RouteEvent e) => counters['bazPreEnter']++,
96 enter: (RouteEvent e) => counters['bazEnter']++, 103 enter: (RouteEvent e) => counters['bazEnter']++,
97 leave: (RouteEvent e) => counters['bazLeave']++)); 104 leave: (RouteEvent e) => counters['bazLeave']++));
98 105
99 expect(counters, { 106 expect(counters, {
107 'fooPreEnter': 0,
100 'fooEnter': 0, 108 'fooEnter': 0,
101 'fooLeave': 0, 109 'fooLeave': 0,
110 'barPreEnter': 0,
102 'barEnter': 0, 111 'barEnter': 0,
103 'barLeave': 0, 112 'barLeave': 0,
113 'bazPreEnter': 0,
104 'bazEnter': 0, 114 'bazEnter': 0,
105 'bazLeave': 0 115 'bazLeave': 0
106 }); 116 });
107 117
108 router.route('/foo/bar').then(expectAsync1((_) { 118 router.route('/foo/bar').then(expectAsync1((_) {
109 expect(counters, { 119 expect(counters, {
120 'fooPreEnter': 1,
110 'fooEnter': 1, 121 'fooEnter': 1,
111 'fooLeave': 0, 122 'fooLeave': 0,
123 'barPreEnter': 1,
112 'barEnter': 1, 124 'barEnter': 1,
113 'barLeave': 0, 125 'barLeave': 0,
126 'bazPreEnter': 0,
114 'bazEnter': 0, 127 'bazEnter': 0,
115 'bazLeave': 0 128 'bazLeave': 0
116 }); 129 });
117 130
118 router.route('/foo/baz').then(expectAsync1((_) { 131 router.route('/foo/baz').then(expectAsync1((_) {
119 expect(counters, { 132 expect(counters, {
133 'fooPreEnter': 1,
120 'fooEnter': 1, 134 'fooEnter': 1,
121 'fooLeave': 0, 135 'fooLeave': 0,
136 'barPreEnter': 1,
122 'barEnter': 1, 137 'barEnter': 1,
123 'barLeave': 1, 138 'barLeave': 1,
139 'bazPreEnter': 1,
124 'bazEnter': 1, 140 'bazEnter': 1,
125 'bazLeave': 0 141 'bazLeave': 0
126 }); 142 });
127 })); 143 }));
128 })); 144 }));
129 }); 145 });
130 146
131 _testAllowLeave(bool allowLeave) { 147 _testAllowLeave(bool allowLeave) {
132 Completer<bool> completer = new Completer<bool>(); 148 Completer<bool> completer = new Completer<bool>();
133 bool barEntered = false; 149 bool barEntered = false;
134 bool bazEntered = false; 150 bool bazEntered = false;
135 151
136 Router router = new Router(); 152 Router router = new Router();
137 router.root 153 router.root
138 ..addRoute(name: 'foo', path: '/foo', 154 ..addRoute(name: 'foo', path: '/foo',
139 mount: (Route child) => child 155 mount: (Route child) => child
140 ..addRoute(name: 'bar', path: '/bar', 156 ..addRoute(name: 'bar', path: '/bar',
141 enter: (RouteEvent e) => barEntered = true, 157 enter: (RouteEnterEvent e) => barEntered = true,
142 leave: (RouteEvent e) => e.allowLeave(completer.future)) 158 leave: (RouteLeaveEvent e) => e.allowLeave(completer.future))
143 ..addRoute(name: 'baz', path: '/baz', 159 ..addRoute(name: 'baz', path: '/baz',
144 enter: (RouteEvent e) => bazEntered = true)); 160 enter: (RouteEnterEvent e) => bazEntered = true));
145 161
146 router.route('/foo/bar').then(expectAsync1((_) { 162 router.route('/foo/bar').then(expectAsync1((_) {
147 expect(barEntered, true); 163 expect(barEntered, true);
148 expect(bazEntered, false); 164 expect(bazEntered, false);
149 router.route('/foo/baz').then(expectAsync1((_) { 165 router.route('/foo/baz').then(expectAsync1((_) {
150 expect(bazEntered, allowLeave); 166 expect(bazEntered, allowLeave);
151 })); 167 }));
152 completer.complete(allowLeave); 168 completer.complete(allowLeave);
153 })); 169 }));
154 } 170 }
155 171
156 test('should allow navigation', () { 172 test('should allow navigation', () {
157 _testAllowLeave(true); 173 _testAllowLeave(true);
158 }); 174 });
159 175
160 test('should veto navigation', () { 176 test('should veto navigation', () {
161 _testAllowLeave(false); 177 _testAllowLeave(false);
162 }); 178 });
163 }); 179 });
164 180
181 group('preEnter', () {
182
183 _testAllowEnter(bool allowEnter) {
184 Completer<bool> completer = new Completer<bool>();
185 bool barEntered = false;
186
187 Router router = new Router();
188 router.root
189 ..addRoute(name: 'foo', path: '/foo',
190 mount: (Route child) => child
191 ..addRoute(name: 'bar', path: '/bar',
192 enter: (RouteEnterEvent e) => barEntered = true,
193 preEnter: (RoutePreEnterEvent e) =>
194 e.allowEnter(completer.future)));
195
196 router.route('/foo/bar').then(expectAsync1((_) {
197 expect(barEntered, allowEnter);
198 }));
199 completer.complete(allowEnter);
200 }
201
202 test('should allow navigation', () {
203 _testAllowEnter(true);
204 });
205
206 test('should veto navigation', () {
207 _testAllowEnter(false);
208 });
209 });
210
165 group('Default route', () { 211 group('Default route', () {
166 212
167 _testHeadTail(String path, String expectFoo, String expectBar) { 213 _testHeadTail(String path, String expectFoo, String expectBar) {
168 Router router = new Router(); 214 Router router = new Router();
169 router.root 215 router.root
170 ..addRoute( 216 ..addRoute(
171 name: 'foo', 217 name: 'foo',
172 path: '/foo', 218 path: '/foo',
173 defaultRoute: true, 219 defaultRoute: true,
174 enter: expectAsync1((RouteEvent e) { 220 enter: expectAsync1((RouteEvent e) {
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 }); 720 });
675 }); 721 });
676 }); 722 });
677 723
678 }); 724 });
679 725
680 } 726 }
681 727
682 /// An alias for Router.root.getRoute(path) 728 /// An alias for Router.root.getRoute(path)
683 r(Router router, String path) => router.root.getRoute(path); 729 r(Router router, String path) => router.root.getRoute(path);
OLDNEW
« no previous file with comments | « third_party/pkg/route_hierarchical/pubspec.yaml ('k') | third_party/pkg/route_hierarchical/test/url_template_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698