mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
5bb47db887
This affects the dynamic version of `upgrade` and makes it more consistent with
the static version, while removing an artificial limitation.
(This commit backports the fix from 9aafdc7 to 2.4.x.)
67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
/**
|
|
* @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
|
|
*/
|
|
|
|
import {Component} from '@angular/core';
|
|
import {describe, expect, it} from '@angular/core/testing/testing_internal';
|
|
import {getComponentInfo, parseFields} from '@angular/upgrade/src/metadata';
|
|
|
|
export function main() {
|
|
describe('upgrade metadata', () => {
|
|
it('should extract component selector', () => {
|
|
expect(getComponentInfo(ElementNameComponent).selector).toBe('element-name-dashed');
|
|
});
|
|
|
|
|
|
describe('errors', () => {
|
|
it('should throw on missing selector', () => {
|
|
expect(() => getComponentInfo(NoAnnotationComponent))
|
|
.toThrowError('No Directive annotation found on NoAnnotationComponent');
|
|
});
|
|
});
|
|
|
|
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'
|
|
}
|
|
]);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
@Component({selector: 'element-name-dashed', template: ``})
|
|
class ElementNameComponent {
|
|
}
|
|
|
|
@Component({selector: '[attr-name]', template: ``})
|
|
class AttributeNameComponent {
|
|
}
|
|
|
|
class NoAnnotationComponent {}
|