BREAKING CHANGE
All private exports from 'angular2/src/core/{directives,pipes,forms}' should be replaced with 'angular2/src/common/{directives,pipes,formis}'
Closes #5153
		
	
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {
 | 
						|
  ddescribe,
 | 
						|
  xdescribe,
 | 
						|
  describe,
 | 
						|
  it,
 | 
						|
  iit,
 | 
						|
  xit,
 | 
						|
  expect,
 | 
						|
  beforeEach,
 | 
						|
  afterEach
 | 
						|
} from 'angular2/testing_internal';
 | 
						|
 | 
						|
import {Injector, Inject, provide, Pipe, PipeTransform} from 'angular2/core';
 | 
						|
import {ProtoPipes, Pipes} from 'angular2/src/core/pipes/pipes';
 | 
						|
import {PipeProvider} from 'angular2/src/core/pipes/pipe_provider';
 | 
						|
 | 
						|
class PipeA implements PipeTransform {
 | 
						|
  transform(a, b) {}
 | 
						|
  onDestroy() {}
 | 
						|
}
 | 
						|
 | 
						|
class PipeB implements PipeTransform {
 | 
						|
  dep;
 | 
						|
  constructor(@Inject("dep") dep: any) { this.dep = dep; }
 | 
						|
  transform(a, b) {}
 | 
						|
  onDestroy() {}
 | 
						|
}
 | 
						|
 | 
						|
export function main() {
 | 
						|
  describe("Pipes", () => {
 | 
						|
    var injector;
 | 
						|
 | 
						|
    beforeEach(() => {
 | 
						|
      injector = Injector.resolveAndCreate([provide('dep', {useValue: 'dependency'})]);
 | 
						|
    });
 | 
						|
 | 
						|
    it('should instantiate a pipe', () => {
 | 
						|
      var proto =
 | 
						|
          ProtoPipes.fromProviders([PipeProvider.createFromType(PipeA, new Pipe({name: 'a'}))]);
 | 
						|
      var pipes = new Pipes(proto, injector);
 | 
						|
 | 
						|
      expect(pipes.get("a").pipe).toBeAnInstanceOf(PipeA);
 | 
						|
    });
 | 
						|
 | 
						|
    it('should throw when no pipe found', () => {
 | 
						|
      var proto = ProtoPipes.fromProviders([]);
 | 
						|
      var pipes = new Pipes(proto, injector);
 | 
						|
      expect(() => pipes.get("invalid")).toThrowErrorWith("Cannot find pipe 'invalid'");
 | 
						|
    });
 | 
						|
 | 
						|
    it('should inject dependencies from the provided injector', () => {
 | 
						|
      var proto =
 | 
						|
          ProtoPipes.fromProviders([PipeProvider.createFromType(PipeB, new Pipe({name: 'b'}))]);
 | 
						|
      var pipes = new Pipes(proto, injector);
 | 
						|
      expect((<any>pipes.get("b").pipe).dep).toEqual("dependency");
 | 
						|
    });
 | 
						|
 | 
						|
    it('should cache pure pipes', () => {
 | 
						|
      var proto = ProtoPipes.fromProviders(
 | 
						|
          [PipeProvider.createFromType(PipeA, new Pipe({name: 'a', pure: true}))]);
 | 
						|
      var pipes = new Pipes(proto, injector);
 | 
						|
 | 
						|
      expect(pipes.get("a").pure).toEqual(true);
 | 
						|
      expect(pipes.get("a")).toBe(pipes.get("a"));
 | 
						|
    });
 | 
						|
 | 
						|
    it('should NOT cache impure pipes', () => {
 | 
						|
      var proto = ProtoPipes.fromProviders(
 | 
						|
          [PipeProvider.createFromType(PipeA, new Pipe({name: 'a', pure: false}))]);
 | 
						|
      var pipes = new Pipes(proto, injector);
 | 
						|
 | 
						|
      expect(pipes.get("a").pure).toEqual(false);
 | 
						|
      expect(pipes.get("a")).not.toBe(pipes.get("a"));
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 |