diff --git a/modules/angular2/test/core/pipes/date_pipe_spec.ts b/modules/angular2/test/core/pipes/date_pipe_spec.ts index 5b5887fad6..c593749433 100644 --- a/modules/angular2/test/core/pipes/date_pipe_spec.ts +++ b/modules/angular2/test/core/pipes/date_pipe_spec.ts @@ -12,6 +12,7 @@ import { import {DatePipe} from 'angular2/core'; import {DateWrapper} from 'angular2/src/core/facade/lang'; +import {PipeResolver} from 'angular2/src/core/linker/pipe_resolver'; export function main() { describe("DatePipe", () => { @@ -23,6 +24,10 @@ export function main() { pipe = new DatePipe(); }); + it('should be marked as non-pure', () => { + expect(new PipeResolver().resolve(DatePipe).pure).toEqual(false); + }); + describe("supports", () => { it("should support date", () => { expect(pipe.supports(date)).toBe(true); }); it("should support int", () => { expect(pipe.supports(123456789)).toBe(true); }); diff --git a/modules/angular2/test/core/pipes/json_pipe_spec.ts b/modules/angular2/test/core/pipes/json_pipe_spec.ts index 6b772a4905..0ba44ec828 100644 --- a/modules/angular2/test/core/pipes/json_pipe_spec.ts +++ b/modules/angular2/test/core/pipes/json_pipe_spec.ts @@ -10,11 +10,12 @@ import { AsyncTestCompleter, inject, proxy, - SpyObject + SpyObject, + TestComponentBuilder } from 'angular2/testing_internal'; import {Json, RegExp, NumberWrapper, StringWrapper} from 'angular2/src/core/facade/lang'; -import {JsonPipe} from 'angular2/core'; +import {JsonPipe, Component} from 'angular2/core'; export function main() { describe("JsonPipe", () => { @@ -22,7 +23,6 @@ export function main() { var inceptionObj; var inceptionObjString; var pipe; - var collection: number[]; function normalize(obj: string): string { return StringWrapper.replace(obj, regNewLine, ''); } @@ -33,7 +33,6 @@ export function main() { pipe = new JsonPipe(); - collection = []; }); describe("transform", () => { @@ -51,26 +50,29 @@ export function main() { var dream2 = normalize(Json.stringify(inceptionObj)); expect(dream1).toEqual(dream2); }); + }); - it("should return same ref when nothing has changed since the last call", () => { - expect(pipe.transform(inceptionObj)).toEqual(inceptionObjString); - expect(pipe.transform(inceptionObj)).toEqual(inceptionObjString); - }); + describe('integration', () => { + it('should work with mutable objects', + inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => { + tcb.createAsync(TestComp).then((rootTC) => { + let mutable: number[] = [1]; + rootTC.debugElement.componentInstance.data = mutable; + rootTC.detectChanges(); + expect(rootTC.debugElement.nativeElement).toHaveText("[\n 1\n]"); + mutable.push(2); + rootTC.detectChanges(); + expect(rootTC.debugElement.nativeElement).toHaveText("[\n 1,\n 2\n]"); - it("should return a new value when something changed but the ref hasn't", () => { - var stringCollection = '[]'; - var stringCollectionWith1 = '[\n' + - ' 1' + - '\n]'; - - expect(pipe.transform(collection)).toEqual(stringCollection); - - collection.push(1); - - expect(pipe.transform(collection)).toEqual(stringCollectionWith1); - }); - + async.done(); + }); + })); }); }); } + +@Component({selector: 'test-comp', template: '{{data | json}}', pipes: [JsonPipe]}) +class TestComp { + data: any; +} diff --git a/modules/angular2/test/pipes/slice_pipe_spec.ts b/modules/angular2/test/core/pipes/slice_pipe_spec.ts similarity index 74% rename from modules/angular2/test/pipes/slice_pipe_spec.ts rename to modules/angular2/test/core/pipes/slice_pipe_spec.ts index dfd4c66b09..3a6d44cdf9 100644 --- a/modules/angular2/test/pipes/slice_pipe_spec.ts +++ b/modules/angular2/test/core/pipes/slice_pipe_spec.ts @@ -7,14 +7,17 @@ import { expect, beforeEach, afterEach, - browserDetection + browserDetection, + inject, + TestComponentBuilder, + AsyncTestCompleter } from 'angular2/testing_internal'; -import {SlicePipe} from 'angular2/src/core/pipes'; +import {SlicePipe, Component} from 'angular2/core'; export function main() { describe("SlicePipe", () => { - var list; + var list: number[]; var str; var pipe; @@ -85,5 +88,27 @@ export function main() { }); + describe('integration', () => { + it('should work with mutable arrays', + inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => { + tcb.createAsync(TestComp).then((rootTC) => { + let mutable: number[] = [1, 2]; + rootTC.debugElement.componentInstance.data = mutable; + rootTC.detectChanges(); + expect(rootTC.debugElement.nativeElement).toHaveText('2'); + + mutable.push(3); + rootTC.detectChanges(); + expect(rootTC.debugElement.nativeElement).toHaveText('2,3'); + + async.done(); + }); + })); + }); }); -} \ No newline at end of file +} + +@Component({selector: 'test-comp', template: '{{(data | slice:1).join(",") }}', pipes: [SlicePipe]}) +class TestComp { + data: any; +}