| 
									
										
										
										
											2016-07-21 17:12:00 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							|  |  |  |  * Copyright Google Inc. All Rights Reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Use of this source code is governed by an MIT-style license that can be | 
					
						
							|  |  |  |  * found in the LICENSE file at https://angular.io/license
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-27 17:12:25 -07:00
										 |  |  | import {DefaultUrlSerializer, containsTree} from '../src/url_tree'; | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | describe('UrlTree', () => { | 
					
						
							|  |  |  |   const serializer = new DefaultUrlSerializer(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |   describe('containsTree', () => { | 
					
						
							|  |  |  |     describe('exact = true', () => { | 
					
						
							|  |  |  |       it('should return true when two tree are the same', () => { | 
					
						
							|  |  |  |         const url = '/one/(one//left:three)(right:four)'; | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         const t1 = serializer.parse(url); | 
					
						
							|  |  |  |         const t2 = serializer.parse(url); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, true)).toBe(true); | 
					
						
							|  |  |  |         expect(containsTree(t2, t1, true)).toBe(true); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-12 00:23:47 +03:00
										 |  |  |       it('should return true when queryParams are the same', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two?test=1&page=5'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two?test=1&page=5'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, true)).toBe(true); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should return false when queryParams are not the same', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two?test=1&page=5'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two?test=1'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, true)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should return false when containee is missing queryParams', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two?page=5'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, true)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |       it('should return false when paths are not the same', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two(right:three)'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two2(right:three)'); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         expect(containsTree(t1, t2, true)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |       it('should return false when container has an extra child', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two(right:three)'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two'); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         expect(containsTree(t1, t2, true)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |       it('should return false when containee has an extra child', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two(right:three)'); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         expect(containsTree(t1, t2, true)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |     describe('exact = false', () => { | 
					
						
							|  |  |  |       it('should return true when containee is missing a segment', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/(two//left:three)(right:four)'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/(two//left:three)'); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         expect(containsTree(t1, t2, false)).toBe(true); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |       it('should return true when containee is missing some paths', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two/three'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two'); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         expect(containsTree(t1, t2, false)).toBe(true); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |       it('should return true container has its paths splitted into multiple segments', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/(two//left:three)'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two'); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         expect(containsTree(t1, t2, false)).toBe(true); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |       it('should return false when containee has extra segments', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/(two//left:three)'); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         expect(containsTree(t1, t2, false)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-12 00:23:47 +03:00
										 |  |  |       it('should return false containee has segments that the container does not have', () => { | 
					
						
							| 
									
										
										
										
											2016-06-21 11:49:42 -07:00
										 |  |  |         const t1 = serializer.parse('/one/(two//left:three)'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/(two//right:four)'); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |         expect(containsTree(t1, t2, false)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2016-06-29 16:07:35 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |       it('should return false when containee has extra paths', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, false)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2016-11-12 00:23:47 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |       it('should return true when queryParams are the same', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two?test=1&page=5'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two?test=1&page=5'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, false)).toBe(true); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should return true when container contains containees queryParams', () => { | 
					
						
							| 
									
										
										
										
											2017-01-05 15:56:24 -08:00
										 |  |  |         const t1 = serializer.parse('/one/two?test=1&u=5'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two?u=5'); | 
					
						
							| 
									
										
										
										
											2016-11-12 00:23:47 +03:00
										 |  |  |         expect(containsTree(t1, t2, false)).toBe(true); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should return true when containee does not have queryParams', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two?page=5'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, false)).toBe(true); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should return false when containee has but container does not have queryParams', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two?page=1'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, false)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should return false when containee has different queryParams', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two?page=5'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two?test=1'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, false)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should return false when containee has more queryParams than container', () => { | 
					
						
							|  |  |  |         const t1 = serializer.parse('/one/two?page=5'); | 
					
						
							|  |  |  |         const t2 = serializer.parse('/one/two?page=5&test=1'); | 
					
						
							|  |  |  |         expect(containsTree(t1, t2, false)).toBe(false); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2016-06-15 09:01:05 -07:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2016-11-12 00:23:47 +03:00
										 |  |  | }); |