76247b7097
Closes #3605 BREAKING CHANGE: - we don't mark an element as bound any more if it only contains text bindings E.g. <div>{{hello}}</div> This changes the indices when using `DebugElement.componentViewChildren` / `DebugElement.children`. - `@Directive.compileChildren` was removed, `ng-non-bindable` is now builtin and not a directive any more - angular no more adds the `ng-binding` class to elements with bindings - directives are now ordered as they are listed in the View.directives regarding change detection. Previously they had an undefined order. - the `Renderer` interface has new methods `createProtoView` and `registerComponentTemplate`. See `DomRenderer` for default implementations. - reprojection with `ng-content` is now all or nothing per `ng-content` element - angular2 transformer can't be used in tests that modify directive metadata. Use `angular2/src/transform/inliner_for_test` transformer instead.
90 lines
2.8 KiB
TypeScript
90 lines
2.8 KiB
TypeScript
import {
|
|
AsyncTestCompleter,
|
|
beforeEach,
|
|
ddescribe,
|
|
describe,
|
|
el,
|
|
expect,
|
|
iit,
|
|
inject,
|
|
it,
|
|
xit,
|
|
TestComponentBuilder
|
|
} from 'angular2/test_lib';
|
|
|
|
import {
|
|
CompileDirectiveMetadata,
|
|
CompileTypeMetadata,
|
|
CompileTemplateMetadata
|
|
} from 'angular2/src/compiler/directive_metadata';
|
|
import {ViewEncapsulation} from 'angular2/src/core/render/api';
|
|
import {ChangeDetectionStrategy} from 'angular2/src/core/change_detection';
|
|
import {LifecycleHooks} from 'angular2/src/core/compiler/interfaces';
|
|
|
|
export function main() {
|
|
describe('DirectiveMetadata', () => {
|
|
var fullTypeMeta: CompileTypeMetadata;
|
|
var fullTemplateMeta: CompileTemplateMetadata;
|
|
var fullDirectiveMeta: CompileDirectiveMetadata;
|
|
|
|
beforeEach(() => {
|
|
fullTypeMeta =
|
|
new CompileTypeMetadata({name: 'SomeType', moduleUrl: 'someUrl', isHost: true});
|
|
fullTemplateMeta = new CompileTemplateMetadata({
|
|
encapsulation: ViewEncapsulation.Emulated,
|
|
template: '<a></a>',
|
|
templateUrl: 'someTemplateUrl',
|
|
styles: ['someStyle'],
|
|
styleUrls: ['someStyleUrl'],
|
|
ngContentSelectors: ['*']
|
|
});
|
|
fullDirectiveMeta = CompileDirectiveMetadata.create({
|
|
selector: 'someSelector',
|
|
isComponent: true,
|
|
dynamicLoadable: true,
|
|
type: fullTypeMeta, template: fullTemplateMeta,
|
|
changeDetection: ChangeDetectionStrategy.Default,
|
|
inputs: ['someProp'],
|
|
outputs: ['someEvent'],
|
|
host: {'(event1)': 'handler1', '[prop1]': 'expr1', 'attr1': 'attrValue2'},
|
|
lifecycleHooks: [LifecycleHooks.OnChanges]
|
|
});
|
|
|
|
});
|
|
|
|
describe('DirectiveMetadata', () => {
|
|
it('should serialize with full data', () => {
|
|
expect(CompileDirectiveMetadata.fromJson(fullDirectiveMeta.toJson()))
|
|
.toEqual(fullDirectiveMeta);
|
|
});
|
|
|
|
it('should serialize with no data', () => {
|
|
var empty = CompileDirectiveMetadata.create();
|
|
expect(CompileDirectiveMetadata.fromJson(empty.toJson())).toEqual(empty);
|
|
});
|
|
});
|
|
|
|
describe('TypeMetadata', () => {
|
|
it('should serialize with full data', () => {
|
|
expect(CompileTypeMetadata.fromJson(fullTypeMeta.toJson())).toEqual(fullTypeMeta);
|
|
});
|
|
|
|
it('should serialize with no data', () => {
|
|
var empty = new CompileTypeMetadata();
|
|
expect(CompileTypeMetadata.fromJson(empty.toJson())).toEqual(empty);
|
|
});
|
|
});
|
|
|
|
describe('TemplateMetadata', () => {
|
|
it('should serialize with full data', () => {
|
|
expect(CompileTemplateMetadata.fromJson(fullTemplateMeta.toJson()))
|
|
.toEqual(fullTemplateMeta);
|
|
});
|
|
|
|
it('should serialize with no data', () => {
|
|
var empty = new CompileTemplateMetadata();
|
|
expect(CompileTemplateMetadata.fromJson(empty.toJson())).toEqual(empty);
|
|
});
|
|
});
|
|
});
|
|
} |