BREAKING CHANGE
    - Pipe factories have been removed.
    - PIpe names to pipe implementations are 1-to-1  instead of 1-to-*
 Before:
     class DateFormatter {
         transform(date, args){}
     }
     class DateFormatterFactory {
       supporst(obj) { return true; }
       create(cdRef) { return new DateFormatter(); }
     }
     new Pipes({date: [new DateFormatterFactory()]})
After
    class DateFormatter {
      transform(date, args){}
    }
    new Pipes({date: DateFormatter})
		
	
			
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {
 | |
|   ddescribe,
 | |
|   xdescribe,
 | |
|   describe,
 | |
|   it,
 | |
|   iit,
 | |
|   xit,
 | |
|   expect,
 | |
|   beforeEach,
 | |
|   afterEach
 | |
| } from 'angular2/test_lib';
 | |
| 
 | |
| import {Injector, bind} from 'angular2/di';
 | |
| import {Pipes} from 'angular2/src/change_detection/pipes/pipes';
 | |
| import {Pipe} from 'angular2/src/change_detection/pipes/pipe';
 | |
| 
 | |
| class APipe implements Pipe {
 | |
|   transform(a, b) {}
 | |
|   onDestroy() {}
 | |
| }
 | |
| 
 | |
| class AnotherPipe implements Pipe {
 | |
|   transform(a, b) {}
 | |
|   onDestroy() {}
 | |
| }
 | |
| 
 | |
| export function main() {
 | |
|   describe("pipe registry", () => {
 | |
|     var injector;
 | |
| 
 | |
|     beforeEach(() => { injector = Injector.resolveAndCreate([]); });
 | |
| 
 | |
|     it("should instantiate a pipe", () => {
 | |
|       var r = new Pipes({"type": APipe}, injector);
 | |
|       expect(r.get("type", null)).toBeAnInstanceOf(APipe);
 | |
|     });
 | |
| 
 | |
|     it("should instantiate a new pipe every time", () => {
 | |
|       var r = new Pipes({"type": APipe}, injector);
 | |
|       var p1 = r.get("type", null);
 | |
|       var p2 = r.get("type", null);
 | |
|       expect(p1).not.toBe(p2);
 | |
|     });
 | |
| 
 | |
|     it("should throw when no matching type", () => {
 | |
|       var r = new Pipes({}, null);
 | |
|       expect(() => r.get("unknown", null)).toThrowError(`Cannot find pipe 'unknown'.`);
 | |
|     });
 | |
| 
 | |
|     describe('.create()', () => {
 | |
|       it("should create a new Pipes object", () => {
 | |
|         var pipes = Pipes.create({'pipe': APipe}, null);
 | |
|         expect(pipes.config).toEqual({'pipe': APipe});
 | |
|       });
 | |
| 
 | |
|       it("should merge pipes config", () => {
 | |
|         var pipes1 = Pipes.create({'pipe': APipe, 'pipe1': APipe}, null);
 | |
|         var pipes2 = Pipes.create({'pipe': AnotherPipe, 'pipe2': AnotherPipe}, null, pipes1);
 | |
| 
 | |
|         expect(pipes2.config).toEqual({'pipe': AnotherPipe, 'pipe1': APipe, 'pipe2': AnotherPipe});
 | |
|       });
 | |
| 
 | |
|       it("should not change parent's config", () => {
 | |
|         var pipes1 = Pipes.create({'pipe': APipe, 'pipe1': APipe}, null);
 | |
|         Pipes.create({'pipe': AnotherPipe, 'pipe2': AnotherPipe}, null, pipes1);
 | |
| 
 | |
|         expect(pipes1.config).toEqual({'pipe': APipe, 'pipe1': APipe});
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     describe(".extend()", () => {
 | |
|       it('should create a factory that prepend new pipes to old', () => {
 | |
|         var pipes1 = Pipes.create({'pipe': APipe, 'pipe1': APipe}, null);
 | |
|         var binding = Pipes.extend({'pipe': AnotherPipe, 'pipe2': AnotherPipe});
 | |
|         var pipes: Pipes = binding.toFactory(pipes1, injector);
 | |
| 
 | |
|         expect(pipes.config).toEqual({'pipe': AnotherPipe, 'pipe1': APipe, 'pipe2': AnotherPipe});
 | |
|       });
 | |
| 
 | |
|       it('should throw if calling extend when creating root injector', () => {
 | |
|         var injector = Injector.resolveAndCreate([Pipes.extend({'pipe': APipe})]);
 | |
| 
 | |
|         expect(() => injector.get(Pipes))
 | |
|             .toThrowErrorWith("Cannot extend Pipes without a parent injector");
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| }
 |