| 
									
										
										
										
											2015-08-06 13:19:29 -07:00
										 |  |  | import { | 
					
						
							|  |  |  |   AsyncTestCompleter, | 
					
						
							|  |  |  |   beforeEach, | 
					
						
							|  |  |  |   ddescribe, | 
					
						
							|  |  |  |   describe, | 
					
						
							|  |  |  |   expect, | 
					
						
							|  |  |  |   iit, | 
					
						
							|  |  |  |   inject, | 
					
						
							|  |  |  |   it, | 
					
						
							|  |  |  |   xdescribe, | 
					
						
							|  |  |  |   xit, | 
					
						
							| 
									
										
										
										
											2015-10-13 00:29:13 -07:00
										 |  |  | } from 'angular2/testing_internal'; | 
					
						
							| 
									
										
										
										
											2015-08-06 13:19:29 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-23 10:18:04 -08:00
										 |  |  | import {Component, View} from 'angular2/core'; | 
					
						
							| 
									
										
										
										
											2015-10-26 20:17:46 -07:00
										 |  |  | import {getComponentInfo, parseFields} from 'angular2/src/upgrade/metadata'; | 
					
						
							| 
									
										
										
										
											2015-11-19 15:09:34 -08:00
										 |  |  | import {DOM} from 'angular2/src/platform/dom/dom_adapter'; | 
					
						
							| 
									
										
										
										
											2015-08-06 13:19:29 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | export function main() { | 
					
						
							| 
									
										
										
										
											2015-10-26 20:17:46 -07:00
										 |  |  |   if (!DOM.supportsDOMEvents()) return; | 
					
						
							| 
									
										
										
										
											2015-08-06 13:19:29 -07:00
										 |  |  |   describe('upgrade metadata', () => { | 
					
						
							| 
									
										
										
										
											2015-10-01 13:14:59 -07:00
										 |  |  |     it('should extract component selector', () => { | 
					
						
							|  |  |  |       expect(getComponentInfo(ElementNameComponent).selector).toEqual('elementNameDashed'); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-08-06 13:19:29 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     describe('errors', () => { | 
					
						
							|  |  |  |       it('should throw on missing selector', () => { | 
					
						
							| 
									
										
										
										
											2015-10-01 13:14:59 -07:00
										 |  |  |         expect(() => getComponentInfo(AttributeNameComponent)) | 
					
						
							| 
									
										
										
										
											2015-08-06 13:19:29 -07:00
										 |  |  |             .toThrowErrorWith( | 
					
						
							|  |  |  |                 "Only selectors matching element names are supported, got: [attr-name]"); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should throw on non element names', () => { | 
					
						
							| 
									
										
										
										
											2015-10-01 13:14:59 -07:00
										 |  |  |         expect(() => getComponentInfo(NoAnnotationComponent)) | 
					
						
							| 
									
										
										
										
											2015-08-06 13:19:29 -07:00
										 |  |  |             .toThrowErrorWith("No Directive annotation found on NoAnnotationComponent"); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-10-01 13:14:59 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     describe('parseFields', () => { | 
					
						
							|  |  |  |       it('should process nulls', () => { expect(parseFields(null)).toEqual([]); }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should process values', () => { | 
					
						
							|  |  |  |         expect(parseFields([' name ', ' prop :  attr '])) | 
					
						
							|  |  |  |             .toEqual([ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 prop: 'name', | 
					
						
							|  |  |  |                 attr: 'name', | 
					
						
							|  |  |  |                 bracketAttr: '[name]', | 
					
						
							|  |  |  |                 parenAttr: '(name)', | 
					
						
							|  |  |  |                 bracketParenAttr: '[(name)]', | 
					
						
							|  |  |  |                 onAttr: 'onName', | 
					
						
							|  |  |  |                 bindAttr: 'bindName', | 
					
						
							|  |  |  |                 bindonAttr: 'bindonName' | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 prop: 'prop', | 
					
						
							|  |  |  |                 attr: 'attr', | 
					
						
							|  |  |  |                 bracketAttr: '[attr]', | 
					
						
							|  |  |  |                 parenAttr: '(attr)', | 
					
						
							|  |  |  |                 bracketParenAttr: '[(attr)]', | 
					
						
							|  |  |  |                 onAttr: 'onAttr', | 
					
						
							|  |  |  |                 bindAttr: 'bindAttr', | 
					
						
							|  |  |  |                 bindonAttr: 'bindonAttr' | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             ]); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }) | 
					
						
							| 
									
										
										
										
											2015-08-06 13:19:29 -07:00
										 |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @Component({selector: 'element-name-dashed'}) | 
					
						
							|  |  |  | @View({template: ``}) | 
					
						
							|  |  |  | class ElementNameComponent { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @Component({selector: '[attr-name]'}) | 
					
						
							|  |  |  | @View({template: ``}) | 
					
						
							|  |  |  | class AttributeNameComponent { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class NoAnnotationComponent {} |