| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  | import { | 
					
						
							|  |  |  |   AsyncTestCompleter, | 
					
						
							|  |  |  |   beforeEach, | 
					
						
							|  |  |  |   ddescribe, | 
					
						
							|  |  |  |   xdescribe, | 
					
						
							|  |  |  |   describe, | 
					
						
							|  |  |  |   el, | 
					
						
							|  |  |  |   dispatchEvent, | 
					
						
							|  |  |  |   expect, | 
					
						
							|  |  |  |   iit, | 
					
						
							|  |  |  |   inject, | 
					
						
							|  |  |  |   beforeEachBindings, | 
					
						
							|  |  |  |   it, | 
					
						
							|  |  |  |   xit, | 
					
						
							| 
									
										
										
										
											2015-05-26 09:25:39 -07:00
										 |  |  |   SpyObject, | 
					
						
							|  |  |  |   proxy | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  | } from 'angular2/test_lib'; | 
					
						
							| 
									
										
										
										
											2015-06-02 10:15:16 -07:00
										 |  |  | import {isBlank} from 'angular2/src/facade/lang'; | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  | import {ListWrapper} from 'angular2/src/facade/collection'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-06 11:22:28 -07:00
										 |  |  | import {DomProtoView} from 'angular2/src/render/dom/view/proto_view'; | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  | import {ElementBinder} from 'angular2/src/render/dom/view/element_binder'; | 
					
						
							| 
									
										
										
										
											2015-05-06 11:22:28 -07:00
										 |  |  | import {DomView} from 'angular2/src/render/dom/view/view'; | 
					
						
							| 
									
										
										
										
											2015-06-02 10:15:16 -07:00
										 |  |  | import {DomElement} from 'angular2/src/render/dom/view/element'; | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  | import {DOM} from 'angular2/src/dom/dom_adapter'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export function main() { | 
					
						
							| 
									
										
										
										
											2015-05-06 11:22:28 -07:00
										 |  |  |   describe('DomView', () => { | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |     function createProtoView(binders = null) { | 
					
						
							|  |  |  |       if (isBlank(binders)) { | 
					
						
							|  |  |  |         binders = []; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       var rootEl = el('<div></div>'); | 
					
						
							| 
									
										
										
										
											2015-06-02 14:14:10 -07:00
										 |  |  |       return new DomProtoView( | 
					
						
							|  |  |  |           {element: rootEl, elementBinders: binders, transitiveContentTagCount: 0}); | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-26 09:25:39 -07:00
										 |  |  |     function createView(pv = null, boundElementCount = 0) { | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |       if (isBlank(pv)) { | 
					
						
							|  |  |  |         pv = createProtoView(); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       var root = el('<div><div></div></div>'); | 
					
						
							|  |  |  |       var boundElements = []; | 
					
						
							| 
									
										
										
										
											2015-05-26 09:25:39 -07:00
										 |  |  |       for (var i = 0; i < boundElementCount; i++) { | 
					
						
							| 
									
										
										
										
											2015-06-02 10:15:16 -07:00
										 |  |  |         ListWrapper.push(boundElements, | 
					
						
							|  |  |  |                          new DomElement(pv.elementBinders[i], el('<span></span'), null)); | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2015-06-02 10:15:16 -07:00
										 |  |  |       return new DomView(pv, [DOM.childNodes(root)[0]], [], boundElements); | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-12 07:50:45 -07:00
										 |  |  |     function createElementBinder(parentIndex: number = 0, distanceToParent: number = 1) { | 
					
						
							|  |  |  |       return new ElementBinder( | 
					
						
							|  |  |  |           {parentIndex: parentIndex, distanceToParent: distanceToParent, textNodeIndices: []}); | 
					
						
							| 
									
										
										
										
											2015-06-10 15:54:10 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-02 10:15:16 -07:00
										 |  |  |     describe('getDirectParentElement', () => { | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-02 10:15:16 -07:00
										 |  |  |       it('should return the DomElement of the direct parent', () => { | 
					
						
							| 
									
										
										
										
											2015-06-12 07:50:45 -07:00
										 |  |  |         var pv = createProtoView([createElementBinder(), createElementBinder(0, 1)]); | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |         var view = createView(pv, 2); | 
					
						
							| 
									
										
										
										
											2015-06-02 10:15:16 -07:00
										 |  |  |         expect(view.getDirectParentElement(1)).toBe(view.boundElements[0]); | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should return null if the direct parent is not bound', () => { | 
					
						
							| 
									
										
										
										
											2015-06-12 07:50:45 -07:00
										 |  |  |         var pv = createProtoView( | 
					
						
							|  |  |  |             [createElementBinder(), createElementBinder(), createElementBinder(0, 2)]); | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |         var view = createView(pv, 3); | 
					
						
							| 
									
										
										
										
											2015-06-02 10:15:16 -07:00
										 |  |  |         expect(view.getDirectParentElement(2)).toBe(null); | 
					
						
							| 
									
										
										
										
											2015-04-16 15:38:28 -07:00
										 |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } |