Skip to content

Commit

Permalink
feat(core): introduce fixture.whenRenderingDone for testing (#16732)
Browse files Browse the repository at this point in the history
  • Loading branch information
matsko authored and jasonaden committed May 12, 2017
1 parent 0626464 commit 38c524d
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
19 changes: 19 additions & 0 deletions packages/core/test/component_fixture_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,25 @@ export function main() {
});
}));

it('should signal through whenRenderingDone when the fixture is stable', async(() => {
const componentFixture = TestBed.createComponent(AsyncComp);

componentFixture.detectChanges();
expect(componentFixture.nativeElement).toHaveText('1');

const element = componentFixture.debugElement.children[0];
dispatchEvent(element.nativeElement, 'click');
expect(componentFixture.nativeElement).toHaveText('1');

// Component is updated asynchronously. Wait for the fixture to become stable
// before checking.
componentFixture.whenRenderingDone().then((waited) => {
expect(waited).toBe(true);
componentFixture.detectChanges();
expect(componentFixture.nativeElement).toHaveText('11');
});
}));

it('should wait for macroTask(setTimeout) while checking for whenStable ' +
'(autoDetectChanges)',
async(() => {
Expand Down
8 changes: 8 additions & 0 deletions packages/core/testing/src/component_fixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,14 @@ export class ComponentFixture<T> {
}
}

/**
* Get a promise that resolves when the ui state is stable following animations.
*/
whenRenderingDone(): Promise<any> {
// this is temporary until this is functional
return this.whenStable();
}

/**
* Trigger component destruction.
*/
Expand Down
1 change: 1 addition & 0 deletions tools/public_api_guard/core/testing.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export declare class ComponentFixture<T> {
destroy(): void;
detectChanges(checkNoChanges?: boolean): void;
isStable(): boolean;
whenRenderingDone(): Promise<any>;
whenStable(): Promise<any>;
}

Expand Down

0 comments on commit 38c524d

Please sign in to comment.