BREAKING CHANGES: DirectiveNormalizer takes new constructor arguments, `config:CompilerConfig`. Closes #7883
		
			
				
	
	
		
			281 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			281 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {
 | 
						|
  beforeEach,
 | 
						|
  ddescribe,
 | 
						|
  describe,
 | 
						|
  expect,
 | 
						|
  iit,
 | 
						|
  inject,
 | 
						|
  it,
 | 
						|
  xit,
 | 
						|
} from '@angular/core/testing/testing_internal';
 | 
						|
 | 
						|
import {
 | 
						|
  CompileDirectiveMetadata,
 | 
						|
  CompileTypeMetadata,
 | 
						|
  CompileTemplateMetadata,
 | 
						|
  CompileProviderMetadata,
 | 
						|
  CompileDiDependencyMetadata,
 | 
						|
  CompileQueryMetadata,
 | 
						|
  CompileIdentifierMetadata,
 | 
						|
  CompileFactoryMetadata,
 | 
						|
  CompileTokenMetadata,
 | 
						|
  CompileAnimationEntryMetadata,
 | 
						|
  CompileAnimationStyleMetadata,
 | 
						|
  CompileAnimationAnimateMetadata,
 | 
						|
  CompileAnimationSequenceMetadata,
 | 
						|
  CompileAnimationStateTransitionMetadata,
 | 
						|
  CompileAnimationKeyframesSequenceMetadata,
 | 
						|
  CompileAnimationGroupMetadata
 | 
						|
} from '@angular/compiler/src/compile_metadata';
 | 
						|
import {ViewEncapsulation} from '@angular/core/src/metadata/view';
 | 
						|
import {ChangeDetectionStrategy} from '@angular/core/src/change_detection';
 | 
						|
import {LifecycleHooks} from '@angular/core/src/metadata/lifecycle_hooks';
 | 
						|
 | 
						|
export function main() {
 | 
						|
   describe('CompileMetadata', () => {
 | 
						|
    var fullTypeMeta: CompileTypeMetadata;
 | 
						|
    var fullTemplateMeta: CompileTemplateMetadata;
 | 
						|
    var fullDirectiveMeta: CompileDirectiveMetadata;
 | 
						|
 | 
						|
    beforeEach(() => {
 | 
						|
      var diDep = new CompileDiDependencyMetadata({
 | 
						|
        isAttribute: true,
 | 
						|
        isSelf: true,
 | 
						|
        isHost: true,
 | 
						|
        isSkipSelf: true,
 | 
						|
        isOptional: true,
 | 
						|
        token: new CompileTokenMetadata({value: 'someToken'}),
 | 
						|
        query: new CompileQueryMetadata({
 | 
						|
          selectors: [new CompileTokenMetadata({value: 'one'})],
 | 
						|
          descendants: true,
 | 
						|
          first: true,
 | 
						|
          propertyName: 'one'
 | 
						|
        }),
 | 
						|
        viewQuery: new CompileQueryMetadata({
 | 
						|
          selectors: [new CompileTokenMetadata({value: 'one'})],
 | 
						|
          descendants: true,
 | 
						|
          first: true,
 | 
						|
          propertyName: 'one'
 | 
						|
        })
 | 
						|
      });
 | 
						|
 | 
						|
      fullTypeMeta = new CompileTypeMetadata(
 | 
						|
          {name: 'SomeType', moduleUrl: 'someUrl', isHost: true, diDeps: [diDep]});
 | 
						|
      fullTemplateMeta = new CompileTemplateMetadata({
 | 
						|
        encapsulation: ViewEncapsulation.Emulated,
 | 
						|
        template: '<a></a>',
 | 
						|
        templateUrl: 'someTemplateUrl',
 | 
						|
        styles: ['someStyle'],
 | 
						|
        styleUrls: ['someStyleUrl'],
 | 
						|
        animations: [
 | 
						|
          new CompileAnimationEntryMetadata('animation', [
 | 
						|
            new CompileAnimationStateTransitionMetadata('* => *',
 | 
						|
              new CompileAnimationSequenceMetadata([
 | 
						|
                new CompileAnimationStyleMetadata(0, [{ 'opacity': 0 }]),
 | 
						|
                new CompileAnimationAnimateMetadata(1000,
 | 
						|
                  new CompileAnimationStyleMetadata(0, [{ 'opacity': 1 }]))
 | 
						|
              ])
 | 
						|
            )
 | 
						|
          ])
 | 
						|
        ],
 | 
						|
        ngContentSelectors: ['*']
 | 
						|
      });
 | 
						|
      fullDirectiveMeta = CompileDirectiveMetadata.create({
 | 
						|
        selector: 'someSelector',
 | 
						|
        isComponent: true,
 | 
						|
        type: fullTypeMeta,
 | 
						|
        template: fullTemplateMeta,
 | 
						|
        changeDetection: ChangeDetectionStrategy.Default,
 | 
						|
        inputs: ['someProp'],
 | 
						|
        outputs: ['someEvent'],
 | 
						|
        host: {'(event1)': 'handler1', '[prop1]': 'expr1', 'attr1': 'attrValue2'},
 | 
						|
        lifecycleHooks: [LifecycleHooks.OnChanges],
 | 
						|
        providers: [
 | 
						|
          new CompileProviderMetadata({
 | 
						|
            token: new CompileTokenMetadata({value: 'token'}),
 | 
						|
            multi: true,
 | 
						|
            useClass: fullTypeMeta,
 | 
						|
            useExisting: new CompileTokenMetadata({
 | 
						|
              identifier: new CompileIdentifierMetadata({name: 'someName'}),
 | 
						|
              identifierIsInstance: true
 | 
						|
            }),
 | 
						|
            useFactory: new CompileFactoryMetadata({name: 'someName', diDeps: [diDep]}),
 | 
						|
            useValue: 'someValue',
 | 
						|
          })
 | 
						|
        ],
 | 
						|
        viewProviders: [
 | 
						|
          new CompileProviderMetadata({
 | 
						|
            token: new CompileTokenMetadata({value: 'token'}),
 | 
						|
            useClass: fullTypeMeta,
 | 
						|
            useExisting: new CompileTokenMetadata(
 | 
						|
                {identifier: new CompileIdentifierMetadata({name: 'someName'})}),
 | 
						|
            useFactory: new CompileFactoryMetadata({name: 'someName', diDeps: [diDep]}),
 | 
						|
            useValue: 'someValue'
 | 
						|
          })
 | 
						|
        ],
 | 
						|
        queries: [
 | 
						|
          new CompileQueryMetadata({
 | 
						|
            selectors: [new CompileTokenMetadata({value: 'selector'})],
 | 
						|
            descendants: true,
 | 
						|
            first: false,
 | 
						|
            propertyName: 'prop',
 | 
						|
            read: new CompileTokenMetadata({value: 'readToken'})
 | 
						|
          })
 | 
						|
        ],
 | 
						|
        viewQueries: [
 | 
						|
          new CompileQueryMetadata({
 | 
						|
            selectors: [new CompileTokenMetadata({value: 'selector'})],
 | 
						|
            descendants: true,
 | 
						|
            first: false,
 | 
						|
            propertyName: 'prop',
 | 
						|
            read: new CompileTokenMetadata({value: 'readToken'})
 | 
						|
          })
 | 
						|
        ]
 | 
						|
      });
 | 
						|
 | 
						|
    });
 | 
						|
 | 
						|
    describe('CompileIdentifierMetadata', () => {
 | 
						|
      it('should serialize with full data', () => {
 | 
						|
        let full = new CompileIdentifierMetadata(
 | 
						|
            {name: 'name', moduleUrl: 'module', value: ['one', ['two']]});
 | 
						|
        expect(CompileIdentifierMetadata.fromJson(full.toJson())).toEqual(full);
 | 
						|
      });
 | 
						|
 | 
						|
      it('should serialize with no data', () => {
 | 
						|
        let empty = new CompileIdentifierMetadata();
 | 
						|
        expect(CompileIdentifierMetadata.fromJson(empty.toJson())).toEqual(empty);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    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);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe('CompileAnimationStyleMetadata', () => {
 | 
						|
      it('should serialize with full data', () => {
 | 
						|
        let full = new CompileAnimationStyleMetadata(0, [{ "opacity": 0, "color": "red" }]);
 | 
						|
        expect(CompileAnimationStyleMetadata.fromJson(full.toJson())).toEqual(full);
 | 
						|
      });
 | 
						|
 | 
						|
      it('should serialize with no data', () => {
 | 
						|
        let empty = new CompileAnimationStyleMetadata(0, []);
 | 
						|
        expect(CompileAnimationStyleMetadata.fromJson(empty.toJson())).toEqual(empty);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe('CompileAnimationAnimateMetadata', () => {
 | 
						|
      it('should serialize with full data', () => {
 | 
						|
        let full = new CompileAnimationAnimateMetadata("1s linear",
 | 
						|
          new CompileAnimationStyleMetadata(0, [{ "opacity": 0.5, "color": "blue" }]))
 | 
						|
        expect(CompileAnimationAnimateMetadata.fromJson(full.toJson())).toEqual(full);
 | 
						|
      });
 | 
						|
 | 
						|
      it('should serialize with no data', () => {
 | 
						|
        let empty = new CompileAnimationAnimateMetadata();
 | 
						|
        expect(CompileAnimationAnimateMetadata.fromJson(empty.toJson())).toEqual(empty);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe('CompileAnimationSequenceMetadata', () => {
 | 
						|
      it('should serialize with full data', () => {
 | 
						|
        let full = new CompileAnimationSequenceMetadata([
 | 
						|
          new CompileAnimationStyleMetadata(0, [{ "opacity": 0.5, "width": 100 }]),
 | 
						|
          new CompileAnimationAnimateMetadata(1000,
 | 
						|
            new CompileAnimationStyleMetadata(0, [{ "opacity": 1, "width": 0 }]))
 | 
						|
        ]);
 | 
						|
        expect(CompileAnimationSequenceMetadata.fromJson(full.toJson())).toEqual(full);
 | 
						|
      });
 | 
						|
 | 
						|
      it('should serialize with no data', () => {
 | 
						|
        let empty = new CompileAnimationSequenceMetadata();
 | 
						|
        expect(CompileAnimationSequenceMetadata.fromJson(empty.toJson())).toEqual(empty);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe('CompileAnimationGroupMetadata', () => {
 | 
						|
      it('should serialize with full data', () => {
 | 
						|
        let full = new CompileAnimationGroupMetadata([
 | 
						|
          new CompileAnimationStyleMetadata(0, [{ "width": 100, "border": "1px solid red" }]),
 | 
						|
          new CompileAnimationAnimateMetadata(1000,
 | 
						|
            new CompileAnimationStyleMetadata(0, [{ "width": 900, "border": "10px solid blue" }]))
 | 
						|
        ]);
 | 
						|
        expect(CompileAnimationGroupMetadata.fromJson(full.toJson())).toEqual(full);
 | 
						|
      });
 | 
						|
 | 
						|
      it('should serialize with no data', () => {
 | 
						|
        let empty = new CompileAnimationGroupMetadata();
 | 
						|
        expect(CompileAnimationGroupMetadata.fromJson(empty.toJson())).toEqual(empty);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe('CompileAnimationKeyframesSequenceMetadata', () => {
 | 
						|
      it('should serialize with full data', () => {
 | 
						|
        let full = new CompileAnimationKeyframesSequenceMetadata([
 | 
						|
          new CompileAnimationStyleMetadata(0, [{ "width": 0 }]),
 | 
						|
          new CompileAnimationStyleMetadata(0.5, [{ "width": 100 }]),
 | 
						|
          new CompileAnimationStyleMetadata(1, [{ "width": 200 }]),
 | 
						|
        ]);
 | 
						|
        expect(CompileAnimationKeyframesSequenceMetadata.fromJson(full.toJson())).toEqual(full);
 | 
						|
      });
 | 
						|
 | 
						|
      it('should serialize with no data', () => {
 | 
						|
        let empty = new CompileAnimationKeyframesSequenceMetadata();
 | 
						|
        expect(CompileAnimationKeyframesSequenceMetadata.fromJson(empty.toJson())).toEqual(empty);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe('CompileAnimationEntryMetadata', () => {
 | 
						|
      it('should serialize with full data', () => {
 | 
						|
        let full = new CompileAnimationEntryMetadata('name', [
 | 
						|
          new CompileAnimationStateTransitionMetadata('key => value',
 | 
						|
            new CompileAnimationSequenceMetadata([
 | 
						|
              new CompileAnimationStyleMetadata(0, [{ "color": "red" }]),
 | 
						|
              new CompileAnimationAnimateMetadata(1000,
 | 
						|
                new CompileAnimationStyleMetadata(0, [{ "color": "blue" }]))
 | 
						|
            ])
 | 
						|
          )
 | 
						|
        ]);
 | 
						|
        expect(CompileAnimationEntryMetadata.fromJson(full.toJson())).toEqual(full);
 | 
						|
      });
 | 
						|
 | 
						|
      it('should serialize with no data', () => {
 | 
						|
        let empty = new CompileAnimationEntryMetadata();
 | 
						|
        expect(CompileAnimationEntryMetadata.fromJson(empty.toJson())).toEqual(empty);
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 |