| 
									
										
										
										
											2016-04-27 15:35:43 -07:00
										 |  |  | import { | 
					
						
							|  |  |  |   ComponentFixture, | 
					
						
							|  |  |  |   AsyncTestCompleter, | 
					
						
							|  |  |  |   TestComponentBuilder, | 
					
						
							|  |  |  |   beforeEach, | 
					
						
							|  |  |  |   ddescribe, | 
					
						
							|  |  |  |   xdescribe, | 
					
						
							|  |  |  |   describe, | 
					
						
							|  |  |  |   el, | 
					
						
							|  |  |  |   expect, | 
					
						
							|  |  |  |   iit, | 
					
						
							|  |  |  |   inject, | 
					
						
							|  |  |  |   beforeEachProviders, | 
					
						
							|  |  |  |   it, | 
					
						
							|  |  |  |   xit | 
					
						
							|  |  |  | } from 'angular2/testing_internal'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {DefaultRouterUrlSerializer} from 'angular2/src/alt_router/router_url_serializer'; | 
					
						
							|  |  |  | import {UrlSegment} from 'angular2/src/alt_router/segments'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export function main() { | 
					
						
							| 
									
										
										
										
											2016-04-28 08:01:27 -07:00
										 |  |  |   describe('url serializer', () => { | 
					
						
							| 
									
										
										
										
											2016-04-27 15:35:43 -07:00
										 |  |  |     let url = new DefaultRouterUrlSerializer(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should parse the root url', () => { | 
					
						
							|  |  |  |       let tree = url.parse("/"); | 
					
						
							|  |  |  |       expectSegment(tree.root, ""); | 
					
						
							|  |  |  |       expect(url.serialize(tree)).toEqual(""); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should parse non-empty urls', () => { | 
					
						
							|  |  |  |       let tree = url.parse("one/two"); | 
					
						
							|  |  |  |       expectSegment(tree.firstChild(tree.root), "one"); | 
					
						
							|  |  |  |       expectSegment(tree.firstChild(tree.firstChild(tree.root)), "two"); | 
					
						
							|  |  |  |       expect(url.serialize(tree)).toEqual("/one/two"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("should parse multiple aux routes", () => { | 
					
						
							|  |  |  |       let tree = url.parse("/one/two(/three//right:four)/five"); | 
					
						
							|  |  |  |       let c = tree.children(tree.firstChild(tree.root)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expectSegment(c[0], "two"); | 
					
						
							|  |  |  |       expectSegment(c[1], "aux:three"); | 
					
						
							|  |  |  |       expectSegment(c[2], "right:four"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expectSegment(tree.firstChild(c[0]), "five"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(url.serialize(tree)).toEqual("/one/two(aux:three//right:four)/five"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("should parse aux routes that have aux routes", () => { | 
					
						
							|  |  |  |       let tree = url.parse("/one(/two(/three))"); | 
					
						
							|  |  |  |       let c = tree.children(tree.root); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expectSegment(c[0], "one"); | 
					
						
							|  |  |  |       expectSegment(c[1], "aux:two"); | 
					
						
							|  |  |  |       expectSegment(c[2], "aux:three"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(url.serialize(tree)).toEqual("/one(aux:two//aux:three)"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("should parse aux routes that have children", () => { | 
					
						
							|  |  |  |       let tree = url.parse("/one(/two/three)"); | 
					
						
							|  |  |  |       let c = tree.children(tree.root); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expectSegment(c[0], "one"); | 
					
						
							|  |  |  |       expectSegment(c[1], "aux:two"); | 
					
						
							|  |  |  |       expectSegment(tree.firstChild(c[1]), "three"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(url.serialize(tree)).toEqual("/one(aux:two/three)"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("should parse an empty aux route definition", () => { | 
					
						
							|  |  |  |       let tree = url.parse("/one()"); | 
					
						
							|  |  |  |       let c = tree.children(tree.root); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expectSegment(c[0], "one"); | 
					
						
							|  |  |  |       expect(tree.children(c[0]).length).toEqual(0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(url.serialize(tree)).toEqual("/one"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("should parse key-value matrix params", () => { | 
					
						
							|  |  |  |       let tree = url.parse("/one;a=11a;b=11b(/two;c=22//right:three;d=33)"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       let c = tree.firstChild(tree.root); | 
					
						
							|  |  |  |       expectSegment(c, "one"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       let c2 = tree.children(c); | 
					
						
							|  |  |  |       expectSegment(c2[0], ";a=11a;b=11b"); | 
					
						
							|  |  |  |       expectSegment(c2[1], "aux:two"); | 
					
						
							|  |  |  |       expectSegment(c2[2], "right:three"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expectSegment(tree.firstChild(c2[1]), ";c=22"); | 
					
						
							|  |  |  |       expectSegment(tree.firstChild(c2[2]), ";d=33"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(url.serialize(tree)).toEqual("/one;a=11a;b=11b(aux:two;c=22//right:three;d=33)"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it("should parse key only matrix params", () => { | 
					
						
							|  |  |  |       let tree = url.parse("/one;a"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       let c = tree.firstChild(tree.root); | 
					
						
							|  |  |  |       expectSegment(c, "one"); | 
					
						
							|  |  |  |       expectSegment(tree.firstChild(c), ";a=true"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(url.serialize(tree)).toEqual("/one;a=true"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function expectSegment(segment: UrlSegment, expected: string): void { | 
					
						
							|  |  |  |   expect(segment.toString()).toEqual(expected); | 
					
						
							|  |  |  | } |