105 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {
 | 
						|
  AsyncTestCompleter,
 | 
						|
  beforeEach,
 | 
						|
  ddescribe,
 | 
						|
  xdescribe,
 | 
						|
  describe,
 | 
						|
  expect,
 | 
						|
  iit,
 | 
						|
  inject,
 | 
						|
  beforeEachProviders,
 | 
						|
  it,
 | 
						|
  xit
 | 
						|
} from '@angular/core/testing/testing_internal';
 | 
						|
 | 
						|
import {DefaultRouterUrlSerializer} from '../src/router_url_serializer';
 | 
						|
import {UrlSegment} from '../src/segments';
 | 
						|
 | 
						|
export function main() {
 | 
						|
  describe('url serializer', () => {
 | 
						|
    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.children(tree.root);
 | 
						|
 | 
						|
      expectSegment(c[0], "one;a=11a;b=11b");
 | 
						|
      expectSegment(c[1], "aux:two;c=22");
 | 
						|
      expectSegment(c[2], "right:three;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;a=true");
 | 
						|
 | 
						|
      expect(url.serialize(tree)).toEqual("/one;a=true");
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
function expectSegment(segment: UrlSegment, expected: string): void {
 | 
						|
  expect(segment.toString()).toEqual(expected);
 | 
						|
}
 |