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

Unified Diff: third_party/pkg/angular/test/routing/routing_spec.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, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/pkg/angular/test/routing/routing_spec.dart
diff --git a/third_party/pkg/angular/test/routing/routing_spec.dart b/third_party/pkg/angular/test/routing/routing_spec.dart
index a018334075a23d4a97eaa93d69a3cb3f8270dc9c..933cc1ca1c9298b591b2bafa0ed1cf7f76488734 100644
--- a/third_party/pkg/angular/test/routing/routing_spec.dart
+++ b/third_party/pkg/angular/test/routing/routing_spec.dart
@@ -1,48 +1,376 @@
library routing_spec;
import '../_specs.dart';
-import 'package:angular/routing/module.dart';
import 'package:angular/mock/module.dart';
+import 'dart:async';
main() {
describe('routing', () {
TestBed _;
- TestRouteInitializer initer;
Router router;
beforeEach(module((Module m) {
+ _initRoutesCalls = 0;
+ _router = null;
router = new Router(useFragment: false, windowImpl: new MockWindow());
m
..install(new AngularMockModule())
- ..type(RouteInitializer, implementedBy: TestRouteInitializer)
+ ..factory(RouteInitializerFn, (_) => initRoutes)
..value(Router, router);
}));
- beforeEach(inject((TestBed tb, RouteInitializer _initer) {
+ beforeEach(inject((TestBed tb) {
_ = tb;
- initer = _initer;
}));
-
it('should call init of the RouteInitializer once', async(() {
- expect(initer.calledInit).toEqual(0);
+ expect(_initRoutesCalls).toEqual(0);
// Force the routing system to initialize.
_.compile('<ng-view></ng-view>');
- expect(initer.calledInit).toEqual(1);
- expect(initer.router).toBe(router);
+ expect(_initRoutesCalls).toEqual(1);
+ expect(_router).toBe(router);
+ }));
+
+ });
+
+ describe('routing DSL', () {
+ Router router;
+ TestBed _;
+
+ afterEach(() {
+ router = _ = null;
+ });
+
+ initRouter(initializer) {
+ var module = new Module()
+ ..value(RouteInitializerFn, initializer);
+ var injector = new DynamicInjector(
+ modules: [new AngularModule(), new AngularMockModule(), module]);
+ injector.get(NgRoutingHelper); // force routing initialization
+ router = injector.get(Router);
+ _ = injector.get(TestBed);
+ }
+
+ it('should configure route hierarchy from provided config', async(() {
+ var counters = {
+ 'foo': 0,
+ 'bar': 0,
+ 'baz': 0,
+ 'aux': 0,
+ };
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(
+ path: '/foo',
+ enter: (_) => counters['foo']++,
+ mount: {
+ 'bar': ngRoute(
+ path: '/bar',
+ enter: (_) => counters['bar']++
+ ),
+ 'baz': ngRoute(
+ path: '/baz',
+ enter: (_) => counters['baz']++
+ )
+ }
+ ),
+ 'aux': ngRoute(
+ path: '/aux',
+ enter: (_) => counters['aux']++
+ )
+ });
+ });
+
+ expect(router.root.getRoute('foo').name).toEqual('foo');
+ expect(router.root.getRoute('foo.bar').name).toEqual('bar');
+ expect(router.root.getRoute('foo.baz').name).toEqual('baz');
+ expect(router.root.getRoute('aux').name).toEqual('aux');
+
+ router.route('/foo');
+ microLeap();
+ expect(counters, equals({
+ 'foo': 1,
+ 'bar': 0,
+ 'baz': 0,
+ 'aux': 0,
+ }));
+
+ router.route('/foo/bar');
+ microLeap();
+ expect(counters, equals({
+ 'foo': 1,
+ 'bar': 1,
+ 'baz': 0,
+ 'aux': 0,
+ }));
+
+ router.route('/foo/baz');
+ microLeap();
+ expect(counters, equals({
+ 'foo': 1,
+ 'bar': 1,
+ 'baz': 1,
+ 'aux': 0,
+ }));
+
+ router.route('/aux');
+ microLeap();
+ expect(counters, equals({
+ 'foo': 1,
+ 'bar': 1,
+ 'baz': 1,
+ 'aux': 1,
+ }));
+ }));
+
+
+ it('should set the default route', async(() {
+ int enterCount = 0;
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(path: '/foo'),
+ 'bar': ngRoute(path: '/bar', defaultRoute: true),
+ 'baz': ngRoute(path: '/baz'),
+ });
+ });
+
+ router.route('/invalidRoute');
+ microLeap();
+
+ expect(router.activePath.length).toBe(1);
+ expect(router.activePath.first.name).toBe('bar');
+ }));
+
+
+ it('should call enter callback and show the view when routed', async(() {
+ int enterCount = 0;
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(
+ path: '/foo',
+ enter: (_) => enterCount++,
+ view: 'foo.html'
+ ),
+ });
+ });
+ _.injector.get(TemplateCache)
+ .put('foo.html', new HttpResponse(200, '<h1>Foo</h1>'));
+
+ Element root = _.compile('<ng-view></ng-view>');
+ expect(root.text).toEqual('');
+
+ router.route('/foo');
+ microLeap();
+
+ expect(enterCount).toBe(1);
+ expect(root.text).toEqual('Foo');
+ }));
+
+
+ it('should call preEnter callback and load modules', async(() {
+ int preEnterCount = 0;
+ int modulesCount = 0;
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(
+ path: '/foo',
+ preEnter: (_) => preEnterCount++,
+ modules: () {
+ modulesCount++;
+ return new Future.value();
+ }
+ ),
+ 'bar': ngRoute(
+ path: '/bar'
+ )
+ });
+ });
+
+ router.route('/foo');
+ microLeap();
+
+ expect(preEnterCount).toBe(1);
+ expect(modulesCount).toBe(1);
+
+ router.route('/foo');
+ microLeap();
+
+ expect(preEnterCount).toBe(1);
+ expect(modulesCount).toBe(1);
+
+ router.route('/bar');
+ microLeap();
+
+ expect(preEnterCount).toBe(1);
+ expect(modulesCount).toBe(1);
+
+ router.route('/foo');
+ microLeap();
+
+ expect(preEnterCount).toBe(2);
+ expect(modulesCount).toBe(1);
+ }));
+
+
+ it('should clear view on leave an call leave callback', async(() {
+ int leaveCount = 0;
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(
+ path: '/foo',
+ leave: (_) => leaveCount++,
+ view: 'foo.html'
+ ),
+ 'bar': ngRoute(
+ path: '/bar'
+ ),
+ });
+ });
+ _.injector.get(TemplateCache)
+ .put('foo.html', new HttpResponse(200, '<h1>Foo</h1>'));
+
+ Element root = _.compile('<ng-view></ng-view>');
+ expect(root.text).toEqual('');
+
+ router.route('/foo');
+ microLeap();
+
+ expect(root.text).toEqual('Foo');
+ expect(leaveCount).toBe(0);
+
+ router.route('/bar');
+ microLeap();
+
+ expect(root.text).toEqual('');
+ expect(leaveCount).toBe(1);
+ }));
+
+
+ it('should synchronously load new directives from modules ', async(() {
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(
+ path: '/foo',
+ modules: () => [
+ new Module()..type(NewDirective)
+ ],
+ view: 'foo.html'
+ ),
+ });
+ });
+ _.injector.get(TemplateCache)
+ .put('foo.html', new HttpResponse(200, '<div make-it-new>Old!</div>'));
+
+ Element root = _.compile('<ng-view></ng-view>');
+ expect(root.text).toEqual('');
+
+ router.route('/foo');
+ microLeap();
+
+ expect(root.text).toEqual('New!');
+ }));
+
+
+ it('should asynchronously load new directives from modules ', async(() {
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(
+ path: '/foo',
+ modules: () => new Future.value([
+ new Module()..type(NewDirective)
+ ]),
+ view: 'foo.html'
+ ),
+ });
+ });
+ _.injector.get(TemplateCache)
+ .put('foo.html', new HttpResponse(200, '<div make-it-new>Old!</div>'));
+
+ Element root = _.compile('<ng-view></ng-view>');
+ expect(root.text).toEqual('');
+
+ router.route('/foo');
+ microLeap();
+
+ expect(root.text).toEqual('New!');
+ }));
+
+
+ it('should synchronously load new filters from modules ', async(() {
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(
+ path: '/foo',
+ modules: () => [
+ new Module()..type(HelloFilter)
+ ],
+ view: 'foo.html'
+ ),
+ });
+ });
+ _.injector.get(TemplateCache)
+ .put('foo.html', new HttpResponse(200, '<div>{{\'World\' | hello}}</div>'));
+
+ Element root = _.compile('<ng-view></ng-view>');
+ expect(root.text).toEqual('');
+
+ router.route('/foo');
+ microLeap();
+ _.rootScope.apply();
+
+ expect(root.text).toEqual('Hello, World!');
+ }));
+
+
+ it('should asynchronously load new filters from modules ', async(() {
+ initRouter((Router router, ViewFactory views) {
+ views.configure({
+ 'foo': ngRoute(
+ path: '/foo',
+ modules: () => new Future.value([
+ new Module()..type(HelloFilter)
+ ]),
+ view: 'foo.html'
+ ),
+ });
+ });
+ _.injector.get(TemplateCache)
+ .put('foo.html', new HttpResponse(200, '<div>{{\'World\' | hello}}</div>'));
+
+ Element root = _.compile('<ng-view></ng-view>');
+ expect(root.text).toEqual('');
+
+ router.route('/foo');
+ microLeap();
+ _.rootScope.apply();
+
+ expect(root.text).toEqual('Hello, World!');
}));
});
}
-class TestRouteInitializer implements RouteInitializer {
- int calledInit = 0;
- Router router;
+var _router;
+var _initRoutesCalls = 0;
+
+void initRoutes(Router router, ViewFactory view) {
+ _initRoutesCalls++;
+ _router = router;
+}
- void init(Router router, ViewFactory view) {
- calledInit++;
- this.router = router;
+@NgDirective(selector: '[make-it-new]')
+class NewDirective {
+ NewDirective(Element element) {
+ element.innerHtml = 'New!';
}
}
+
+@NgFilter(name:'hello')
+class HelloFilter {
+ call(String str) {
+ return 'Hello, $str!';
+ }
+}
+
« no previous file with comments | « third_party/pkg/angular/test/routing/ng_view_spec.dart ('k') | third_party/pkg/angular/test/tools/html_extractor_spec.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698