diff --git a/tests/issue-537/test.spec.ts b/tests/issue-537/test.spec.ts new file mode 100644 index 0000000000..7f87098e0f --- /dev/null +++ b/tests/issue-537/test.spec.ts @@ -0,0 +1,45 @@ +import { + ChangeDetectionStrategy, + Component, + EventEmitter, + Output, +} from '@angular/core'; +import { MockBuilder, MockRender, ngMocks } from 'ng-mocks'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'target', + template: '{{ value }}', +}) +class TargetComponent { + @Output() public readonly update = new EventEmitter(); + public value = 0; + + public triggerUpdate(): void { + this.value += 1; + this.update.emit(); + } +} + +describe('issue-537', () => { + ngMocks.faster(); + beforeAll(() => MockBuilder(TargetComponent)); + + it('renders default value w/o subscribers', () => { + const fixture = MockRender(TargetComponent); + expect(ngMocks.formatText(fixture)).toEqual('0'); + fixture.point.componentInstance.triggerUpdate(); + fixture.detectChanges(); + expect(ngMocks.formatText(fixture)).toEqual('0'); + }); + + it('renders changed value w/ subscribers', () => { + const fixture = MockRender(TargetComponent, { + update: undefined, + }); + expect(ngMocks.formatText(fixture)).toEqual('0'); + fixture.point.componentInstance.triggerUpdate(); + fixture.detectChanges(); + expect(ngMocks.formatText(fixture)).toEqual('1'); + }); +});