@@ -28,10 +28,10 @@ import {
|
||||
Routes,
|
||||
RouterUrlSerializer,
|
||||
DefaultRouterUrlSerializer,
|
||||
OnActivate,
|
||||
Location
|
||||
OnActivate
|
||||
} from 'angular2/alt_router';
|
||||
import {SpyLocation} from 'angular2/src/mock/location_mock';
|
||||
import {Location} from 'angular2/platform/common';
|
||||
import {DOM} from 'angular2/src/platform/dom/dom_adapter';
|
||||
|
||||
export function main() {
|
||||
@@ -58,6 +58,7 @@ export function main() {
|
||||
|
||||
router.navigateByUrl('/team/33/simple');
|
||||
advance(fixture);
|
||||
|
||||
expect(location.path()).toEqual('/team/33/simple');
|
||||
})));
|
||||
|
||||
@@ -123,40 +124,43 @@ export function main() {
|
||||
expect(fixture.debugElement.nativeElement).toHaveText('team 22 { hello fedor, aux: }');
|
||||
})));
|
||||
|
||||
it("should support router links",
|
||||
fakeAsync(inject([Router, TestComponentBuilder], (router, tcb) => {
|
||||
let fixture = tcb.createFakeAsync(RootCmp);
|
||||
advance(fixture);
|
||||
if (DOM.supportsDOMEvents()) { // this is required to use fakeAsync
|
||||
|
||||
router.navigateByUrl('/team/22/link');
|
||||
advance(fixture);
|
||||
expect(fixture.debugElement.nativeElement).toHaveText('team 22 { link, aux: }');
|
||||
it("should support router links",
|
||||
fakeAsync(inject([Router, TestComponentBuilder], (router, tcb) => {
|
||||
let fixture = tcb.createFakeAsync(RootCmp);
|
||||
advance(fixture);
|
||||
|
||||
let native = DOM.querySelector(fixture.debugElement.nativeElement, "a");
|
||||
expect(DOM.getAttribute(native, "href")).toEqual("/team/33/simple");
|
||||
DOM.dispatchEvent(native, DOM.createMouseEvent('click'));
|
||||
advance(fixture);
|
||||
router.navigateByUrl('/team/22/link');
|
||||
advance(fixture);
|
||||
expect(fixture.debugElement.nativeElement).toHaveText('team 22 { link, aux: }');
|
||||
|
||||
expect(fixture.debugElement.nativeElement).toHaveText('team 33 { simple, aux: }');
|
||||
})));
|
||||
let native = DOM.querySelector(fixture.debugElement.nativeElement, "a");
|
||||
expect(DOM.getAttribute(native, "href")).toEqual("/team/33/simple");
|
||||
DOM.dispatchEvent(native, DOM.createMouseEvent('click'));
|
||||
advance(fixture);
|
||||
|
||||
it("should update router links when router changes",
|
||||
fakeAsync(inject([Router, TestComponentBuilder], (router, tcb) => {
|
||||
let fixture = tcb.createFakeAsync(RootCmp);
|
||||
advance(fixture);
|
||||
expect(fixture.debugElement.nativeElement).toHaveText('team 33 { simple, aux: }');
|
||||
})));
|
||||
|
||||
router.navigateByUrl('/team/22/link(simple)');
|
||||
advance(fixture);
|
||||
expect(fixture.debugElement.nativeElement).toHaveText('team 22 { link, aux: simple }');
|
||||
it("should update router links when router changes",
|
||||
fakeAsync(inject([Router, TestComponentBuilder], (router, tcb) => {
|
||||
let fixture = tcb.createFakeAsync(RootCmp);
|
||||
advance(fixture);
|
||||
|
||||
let native = DOM.querySelector(fixture.debugElement.nativeElement, "a");
|
||||
expect(DOM.getAttribute(native, "href")).toEqual("/team/33/simple(aux:simple)");
|
||||
router.navigateByUrl('/team/22/link(simple)');
|
||||
advance(fixture);
|
||||
expect(fixture.debugElement.nativeElement).toHaveText('team 22 { link, aux: simple }');
|
||||
|
||||
router.navigateByUrl('/team/22/link(simple2)');
|
||||
advance(fixture);
|
||||
let native = DOM.querySelector(fixture.debugElement.nativeElement, "a");
|
||||
expect(DOM.getAttribute(native, "href")).toEqual("/team/33/simple(aux:simple)");
|
||||
|
||||
expect(DOM.getAttribute(native, "href")).toEqual("/team/33/simple(aux:simple2)");
|
||||
})));
|
||||
router.navigateByUrl('/team/22/link(simple2)');
|
||||
advance(fixture);
|
||||
|
||||
expect(DOM.getAttribute(native, "href")).toEqual("/team/33/simple(aux:simple2)");
|
||||
})));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -48,6 +48,26 @@ export function main() {
|
||||
});
|
||||
}));
|
||||
|
||||
it('should support empty routes',
|
||||
inject([AsyncTestCompleter, ComponentResolver], (async, resolver) => {
|
||||
recognize(resolver, ComponentA, tree("f"))
|
||||
.then(r => {
|
||||
let a = r.root;
|
||||
expect(stringifyUrl(a.urlSegments)).toEqual([""]);
|
||||
expect(a.type).toBe(ComponentA);
|
||||
|
||||
let f = r.firstChild(r.root);
|
||||
expect(stringifyUrl(f.urlSegments)).toEqual(["f"]);
|
||||
expect(f.type).toBe(ComponentF);
|
||||
|
||||
let d = r.firstChild(r.firstChild(r.root));
|
||||
expect(stringifyUrl(d.urlSegments)).toEqual([]);
|
||||
expect(d.type).toBe(ComponentD);
|
||||
|
||||
async.done();
|
||||
});
|
||||
}));
|
||||
|
||||
it('should handle aux routes',
|
||||
inject([AsyncTestCompleter, ComponentResolver], (async, resolver) => {
|
||||
recognize(resolver, ComponentA, tree("b/paramB(/d//right:d)"))
|
||||
@@ -133,7 +153,7 @@ export function main() {
|
||||
inject([AsyncTestCompleter, ComponentResolver], (async, resolver) => {
|
||||
recognize(resolver, ComponentA, tree("invalid"))
|
||||
.catch(e => {
|
||||
expect(e.message).toEqual("Cannot match any routes");
|
||||
expect(e.message).toContain("Cannot match any routes");
|
||||
async.done();
|
||||
});
|
||||
}));
|
||||
@@ -142,7 +162,7 @@ export function main() {
|
||||
inject([AsyncTestCompleter, ComponentResolver], (async, resolver) => {
|
||||
recognize(resolver, ComponentA, tree("b"))
|
||||
.catch(e => {
|
||||
expect(e.message).toEqual("Cannot match any routes");
|
||||
expect(e.message).toContain("Cannot match any routes");
|
||||
async.done();
|
||||
});
|
||||
}));
|
||||
@@ -175,6 +195,11 @@ class ComponentD {
|
||||
class ComponentE {
|
||||
}
|
||||
|
||||
@Component({selector: 'f', template: 't'})
|
||||
@Routes([new Route({path: "/", component: ComponentD})])
|
||||
class ComponentF {
|
||||
}
|
||||
|
||||
@Component({selector: 'c', template: 't'})
|
||||
@Routes([new Route({path: "d", component: ComponentD})])
|
||||
class ComponentC {
|
||||
@@ -193,7 +218,8 @@ class ComponentB {
|
||||
@Routes([
|
||||
new Route({path: "b/:b", component: ComponentB}),
|
||||
new Route({path: "d", component: ComponentD}),
|
||||
new Route({path: "e", component: ComponentE})
|
||||
new Route({path: "e", component: ComponentE}),
|
||||
new Route({path: "f", component: ComponentF})
|
||||
])
|
||||
class ComponentA {
|
||||
}
|
||||
@@ -106,26 +106,6 @@ export function main() {
|
||||
|
||||
expect(url.serialize(tree)).toEqual("/one;a=true");
|
||||
});
|
||||
|
||||
// it("should parse key-value query params", () => {
|
||||
// let tree = url.parse("/one?a=1&b=2");
|
||||
// expect(tree.root).toEqual(new UrlSegment("", {'a': '1', 'b': '2'}, DEFAULT_OUTLET_NAME));
|
||||
// });
|
||||
//
|
||||
// it("should parse key only query params", () => {
|
||||
// let tree = url.parse("/one?a");
|
||||
// expect(tree.root).toEqual(new UrlSegment("", {'a': "true"}, DEFAULT_OUTLET_NAME));
|
||||
// });
|
||||
//
|
||||
// it("should parse a url with only query params", () => {
|
||||
// let tree = url.parse("?a");
|
||||
// expect(tree.root).toEqual(new UrlSegment("", {'a': "true"}, DEFAULT_OUTLET_NAME));
|
||||
// });
|
||||
//
|
||||
// it("should allow slashes within query params", () => {
|
||||
// let tree = url.parse("?a=http://boo");
|
||||
// expect(tree.root).toEqual(new UrlSegment("", {'a': "http://boo"}, DEFAULT_OUTLET_NAME));
|
||||
// });
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user