83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {
 | 
						|
  AsyncTestCompleter,
 | 
						|
  beforeEach,
 | 
						|
  ddescribe,
 | 
						|
  xdescribe,
 | 
						|
  describe,
 | 
						|
  expect,
 | 
						|
  iit,
 | 
						|
  inject,
 | 
						|
  it,
 | 
						|
  xit,
 | 
						|
  beforeEachProviders
 | 
						|
} from '@angular/core/testing/testing_internal';
 | 
						|
 | 
						|
import {trigger, style, animate, group, sequence, transition, AnimationMetadata} from '@angular/core';
 | 
						|
 | 
						|
import {AnimationCompiler, CompiledAnimation} from '../../src/animation/animation_compiler';
 | 
						|
import {
 | 
						|
  CompileTemplateMetadata,
 | 
						|
  CompileDirectiveMetadata,
 | 
						|
  CompileTypeMetadata
 | 
						|
} from '../../src/compile_metadata';
 | 
						|
 | 
						|
import {CompileMetadataResolver} from '../../src/metadata_resolver';
 | 
						|
 | 
						|
export function main() {
 | 
						|
  describe('RuntimeAnimationCompiler', () => {
 | 
						|
    var resolver;
 | 
						|
    beforeEach(inject([CompileMetadataResolver], (res: CompileMetadataResolver) => {
 | 
						|
      resolver = res;
 | 
						|
    }));
 | 
						|
 | 
						|
    var compiler = new AnimationCompiler();
 | 
						|
 | 
						|
    var compileAnimations = (component: CompileDirectiveMetadata): CompiledAnimation => {
 | 
						|
      return compiler.compileComponent(component)[0];
 | 
						|
    };
 | 
						|
 | 
						|
    var compile = (seq: AnimationMetadata) => {
 | 
						|
      var entry = trigger('myAnimation', [
 | 
						|
        transition('state1 => state2', seq)
 | 
						|
      ]);
 | 
						|
 | 
						|
      var compiledAnimationEntry = resolver.getAnimationEntryMetadata(entry);
 | 
						|
      var component = CompileDirectiveMetadata.create({
 | 
						|
        type: new CompileTypeMetadata({
 | 
						|
          name: 'something'
 | 
						|
        }),
 | 
						|
        template: new CompileTemplateMetadata({
 | 
						|
          animations: [compiledAnimationEntry]
 | 
						|
        })
 | 
						|
      });
 | 
						|
 | 
						|
      return compileAnimations(component);
 | 
						|
    };
 | 
						|
 | 
						|
    it('should throw an exception containing all the inner animation parser errors', () => {
 | 
						|
      var animation = sequence([
 | 
						|
        style({"color": "red"}),
 | 
						|
        animate(1000, style({"font-size": "100px"})),
 | 
						|
        style({"color": "blue"}),
 | 
						|
        animate(1000, style(":missing_state")),
 | 
						|
        style({"color": "gold"}),
 | 
						|
        animate(1000, style("broken_state"))
 | 
						|
      ]);
 | 
						|
 | 
						|
      var capturedErrorMessage: string;
 | 
						|
      try {
 | 
						|
        compile(animation);
 | 
						|
      } catch (e) {
 | 
						|
        capturedErrorMessage = e.message;
 | 
						|
      }
 | 
						|
 | 
						|
      expect(capturedErrorMessage)
 | 
						|
          .toMatchPattern(
 | 
						|
              /Unable to apply styles due to missing a state: "missing_state"/g);
 | 
						|
 | 
						|
      expect(capturedErrorMessage)
 | 
						|
          .toMatchPattern(/Animation states via styles must be prefixed with a ":"/);
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 |