89 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import { | ||
|  |   ddescribe, | ||
|  |   describe, | ||
|  |   it, | ||
|  |   iit, | ||
|  |   xit, | ||
|  |   expect, | ||
|  |   beforeEach, | ||
|  |   afterEach, | ||
|  |   AsyncTestCompleter, | ||
|  |   inject, | ||
|  |   proxy, | ||
|  |   SpyObject, | ||
|  |   IS_DARTIUM | ||
|  | } from 'angular2/test_lib'; | ||
|  | import {Json, RegExp, NumberWrapper, StringWrapper} from 'angular2/src/facade/lang'; | ||
|  | 
 | ||
|  | import {JsonPipe} from 'angular2/src/change_detection/pipes/json_pipe'; | ||
|  | 
 | ||
|  | export function main() { | ||
|  |   describe("JsonPipe", () => { | ||
|  |     var regNewLine = '\n'; | ||
|  |     var canHasUndefined;  // because Dart doesn't like undefined;
 | ||
|  |     var inceptionObj; | ||
|  |     var inceptionObjString; | ||
|  |     var catString; | ||
|  |     var pipe; | ||
|  | 
 | ||
|  |     function normalize(obj: string): string { return StringWrapper.replace(obj, regNewLine, ''); } | ||
|  | 
 | ||
|  |     beforeEach(() => { | ||
|  |       inceptionObj = { | ||
|  |         dream: {dream: {dream: 'Limbo'}} | ||
|  |       }; | ||
|  |       inceptionObjString = "{\n" + "  \"dream\": {\n" + "    \"dream\": {\n" + | ||
|  |                            "      \"dream\": \"Limbo\"\n" + "    }\n" + "  }\n" + "}"; | ||
|  | 
 | ||
|  | 
 | ||
|  |       catString = 'Inception Cat'; | ||
|  |       pipe = new JsonPipe(); | ||
|  |     }); | ||
|  | 
 | ||
|  |     describe("supports", () => { | ||
|  |       it("should support objects", () => { expect(pipe.supports(inceptionObj)).toBe(true); }); | ||
|  | 
 | ||
|  |       it("should support strings", () => { expect(pipe.supports(catString)).toBe(true); }); | ||
|  | 
 | ||
|  |       it("should support null", () => { expect(pipe.supports(null)).toBe(true); }); | ||
|  | 
 | ||
|  |       it("should support NaN", () => { expect(pipe.supports(NumberWrapper.NaN)).toBe(true); }); | ||
|  | 
 | ||
|  |       if (!IS_DARTIUM) { | ||
|  |         it("should support undefined", | ||
|  |            () => { expect(pipe.supports(canHasUndefined)).toBe(true); }); | ||
|  |       } | ||
|  | 
 | ||
|  |     }); | ||
|  | 
 | ||
|  |     describe("transform", () => { | ||
|  |       it("should return JSON-formatted string", | ||
|  |          () => { expect(pipe.transform(inceptionObj)).toEqual(inceptionObjString); }); | ||
|  | 
 | ||
|  |       it("should return JSON-formatted string even when normalized", () => { | ||
|  |         var dream1 = normalize(pipe.transform(inceptionObj)); | ||
|  |         var dream2 = normalize(inceptionObjString); | ||
|  |         expect(dream1).toEqual(dream2); | ||
|  |       }); | ||
|  | 
 | ||
|  |       it("should return JSON-formatted string similar to Json.stringify", () => { | ||
|  |         var dream1 = normalize(pipe.transform(inceptionObj)); | ||
|  |         var dream2 = normalize(Json.stringify(inceptionObj)); | ||
|  |         expect(dream1).toEqual(dream2); | ||
|  |       }); | ||
|  | 
 | ||
|  |       it("should return same value when nothing has changed since the last call", () => { | ||
|  |         expect(pipe.transform(inceptionObj)).toEqual(inceptionObjString); | ||
|  |         expect(pipe.transform(inceptionObj)).toEqual(inceptionObjString); | ||
|  |       }); | ||
|  | 
 | ||
|  |     }); | ||
|  | 
 | ||
|  |     describe("onDestroy", () => { | ||
|  |       it("should do nothing when no latest value", | ||
|  |          () => { expect(() => pipe.onDestroy()).not.toThrow(); }); | ||
|  |     }); | ||
|  | 
 | ||
|  |   }); | ||
|  | } |