Skip to content

Commit d218907

Browse files
feat: only check for own detectChangesOnRender flag
ref testing-library#365
1 parent 4c5a255 commit d218907

File tree

2 files changed

+8
-37
lines changed

2 files changed

+8
-37
lines changed

projects/testing-library/src/lib/testing-library.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,7 @@ export async function render<SutType, WrapperType = SutType>(
157157
}
158158
renderedPropKeys = Object.keys(newComponentProps);
159159

160-
if (
161-
properties?.detectChangesOnRender === true ||
162-
(properties?.detectChangesOnRender === undefined && detectChangesOnRender === true)
163-
) {
160+
if (properties?.detectChangesOnRender !== false) {
164161
fixture.componentRef.injector.get(ChangeDetectorRef).detectChanges();
165162
}
166163
};

projects/testing-library/tests/rerender.spec.ts

+7-33
Original file line numberDiff line numberDiff line change
@@ -82,39 +82,13 @@ test('rerenders the component with updated props and resets other props', async
8282
});
8383
});
8484

85-
describe('detectChangesOnRender', () => {
86-
test('change detection gets not called if disabled within render', async () => {
87-
const { rerender, detectChanges } = await render(FixtureComponent, { detectChangesOnRender: false });
88-
detectChanges();
89-
expect(screen.getByText('Sarah')).toBeInTheDocument();
90-
91-
const firstName = 'Mark';
92-
await rerender({ componentInputs: { firstName } });
93-
94-
expect(screen.getByText('Sarah')).toBeInTheDocument();
95-
expect(screen.queryByText(firstName)).not.toBeInTheDocument();
96-
});
97-
98-
test('change detection gets called if disabled within render but enabled within rerender', async () => {
99-
const { rerender, detectChanges } = await render(FixtureComponent, { detectChangesOnRender: false });
100-
detectChanges();
101-
expect(screen.getByText('Sarah')).toBeInTheDocument();
102-
103-
const firstName = 'Mark';
104-
await rerender({ componentInputs: { firstName }, detectChangesOnRender: true });
105-
106-
expect(screen.getByText(firstName)).toBeInTheDocument();
107-
expect(screen.queryByText('Sarah')).not.toBeInTheDocument();
108-
});
109-
110-
test('change detection gets not called if disabled within rerender', async () => {
111-
const { rerender } = await render(FixtureComponent);
112-
expect(screen.getByText('Sarah')).toBeInTheDocument();
85+
test('change detection gets not called if `detectChangesOnRender` is set to false', async () => {
86+
const { rerender } = await render(FixtureComponent);
87+
expect(screen.getByText('Sarah')).toBeInTheDocument();
11388

114-
const firstName = 'Mark';
115-
await rerender({ componentInputs: { firstName }, detectChangesOnRender: false });
89+
const firstName = 'Mark';
90+
await rerender({ componentInputs: { firstName }, detectChangesOnRender: false });
11691

117-
expect(screen.getByText('Sarah')).toBeInTheDocument();
118-
expect(screen.queryByText(firstName)).not.toBeInTheDocument();
119-
});
92+
expect(screen.getByText('Sarah')).toBeInTheDocument();
93+
expect(screen.queryByText(firstName)).not.toBeInTheDocument();
12094
});

0 commit comments

Comments
 (0)