UNPKG

@ngneat/spectator

Version:

A powerful tool to simplify your Angular tests

92 lines 13.6 kB
import { ChangeDetectorRef } from '@angular/core'; import { DeferBlockState } from '@angular/core/testing'; import { DomSpectator } from '../base/dom-spectator'; import { setProps } from '../internals/query'; /** * @publicApi */ export class Spectator extends DomSpectator { constructor(fixture, debugElement, instance, element) { super(fixture, debugElement, instance, element); this.fixture = fixture; this.debugElement = debugElement; this.instance = instance; this.element = element; } get component() { return this.instance; } inject(token, fromComponentInjector = false) { if (fromComponentInjector) { return this.debugElement.injector.get(token); } return super.inject(token); } detectComponentChanges() { if (this.debugElement) { this.debugElement.injector.get(ChangeDetectorRef).detectChanges(); } else { this.detectChanges(); } } setInput(input, value) { setProps(this.fixture.componentRef, input, value); // Force cd on the host component for cases such as: https://github.com/ngneat/spectator/issues/539 this.detectChanges(); // Force cd on the tested component this.debugElement.injector.get(ChangeDetectorRef).detectChanges(); } deferBlock(deferBlockIndex = 0) { return this._deferBlocksForGivenFixture(deferBlockIndex, this.fixture.getDeferBlocks()); } /** * * @param deferBlockFixtures Defer block fixture * @returns deferBlock object with methods to access the defer blocks */ _deferBlocksForGivenFixture(deferBlockIndex = 0, deferBlockFixtures) { return { renderComplete: async () => { const renderedDeferFixture = await this._renderDeferStateAndGetFixture(DeferBlockState.Complete, deferBlockIndex, deferBlockFixtures); return this._childrenDeferFixtures(renderedDeferFixture); }, renderPlaceholder: async () => { const renderedDeferFixture = await this._renderDeferStateAndGetFixture(DeferBlockState.Placeholder, deferBlockIndex, deferBlockFixtures); return this._childrenDeferFixtures(renderedDeferFixture); }, renderLoading: async () => { const renderedDeferFixture = await this._renderDeferStateAndGetFixture(DeferBlockState.Loading, deferBlockIndex, deferBlockFixtures); return this._childrenDeferFixtures(renderedDeferFixture); }, renderError: async () => { const renderedDeferFixture = await this._renderDeferStateAndGetFixture(DeferBlockState.Error, deferBlockIndex, deferBlockFixtures); return this._childrenDeferFixtures(renderedDeferFixture); }, }; } /** * Renders the given defer block state and returns the defer block fixture * * @param deferBlockState complete, placeholder, loading or error * @param deferBlockIndex index of the defer block to render * @param deferBlockFixtures Defer block fixture * @returns Defer block fixture */ async _renderDeferStateAndGetFixture(deferBlockState, deferBlockIndex = 0, deferBlockFixtures) { const deferFixture = (await deferBlockFixtures)[deferBlockIndex]; await deferFixture.render(deferBlockState); return deferFixture; } /** * * @param deferFixture Defer block fixture * @returns deferBlock object with methods to access the nested defer blocks */ _childrenDeferFixtures(deferFixture) { return { deferBlock: (deferBlockIndex = 0) => this._deferBlocksForGivenFixture(deferBlockIndex, deferFixture.getDeferBlocks()), }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY3RhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlY3RhdG9yL3NyYy9saWIvc3BlY3RhdG9yL3NwZWN0YXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBdUMsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUs5Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxTQUFhLFNBQVEsWUFBZTtJQUMvQyxZQUNTLE9BQTRCLEVBQzVCLFlBQTBCLEVBQ3ZCLFFBQVcsRUFDZCxPQUFvQjtRQUUzQixLQUFLLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFMekMsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBRztRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFHN0IsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVNLE1BQU0sQ0FBSSxLQUFlLEVBQUUsd0JBQWlDLEtBQUs7UUFDdEUsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBaUIsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7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WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlLCBEZWZlckJsb2NrRml4dHVyZSwgRGVmZXJCbG9ja1N0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgRG9tU3BlY3RhdG9yIH0gZnJvbSAnLi4vYmFzZS9kb20tc3BlY3RhdG9yJztcbmltcG9ydCB7IHNldFByb3BzIH0gZnJvbSAnLi4vaW50ZXJuYWxzL3F1ZXJ5JztcbmltcG9ydCB7IFNweU9iamVjdCB9IGZyb20gJy4uL21vY2snO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICcuLi90b2tlbic7XG5pbXBvcnQgeyBEZWZlckJsb2NrcywgSW5mZXJJbnB1dFNpZ25hbCwgSW5mZXJJbnB1dFNpZ25hbHMsIE5lc3RlZERlZmVyQmxvY2tzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNsYXNzIFNwZWN0YXRvcjxDPiBleHRlbmRzIERvbVNwZWN0YXRvcjxDPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPEM+LFxuICAgIHB1YmxpYyBkZWJ1Z0VsZW1lbnQ6IERlYnVnRWxlbWVudCxcbiAgICBwcm90ZWN0ZWQgaW5zdGFuY2U6IEMsXG4gICAgcHVibGljIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICApIHtcbiAgICBzdXBlcihmaXh0dXJlLCBkZWJ1Z0VsZW1lbnQsIGluc3RhbmNlLCBlbGVtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29tcG9uZW50KCk6IEMge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIGluamVjdDxUPih0b2tlbjogVG9rZW48VD4sIGZyb21Db21wb25lbnRJbmplY3RvcjogYm9vbGVhbiA9IGZhbHNlKTogU3B5T2JqZWN0PFQ+IHtcbiAgICBpZiAoZnJvbUNvbXBvbmVudEluamVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWJ1Z0VsZW1lbnQuaW5qZWN0b3IuZ2V0KHRva2VuKSBhcyBTcHlPYmplY3Q8VD47XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmluamVjdCh0b2tlbik7XG4gIH1cblxuICBwdWJsaWMgZGV0ZWN0Q29tcG9uZW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kZWJ1Z0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuZGVidWdFbGVtZW50LmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZikuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0SW5wdXQ8SyBleHRlbmRzIGtleW9mIEM+KGlucHV0OiBJbmZlcklucHV0U2lnbmFsczxDPik6IHZvaWQ7XG4gIHB1YmxpYyBzZXRJbnB1dDxLIGV4dGVuZHMga2V5b2YgQz4oaW5wdXQ6IEssIGlucHV0VmFsdWU6IEluZmVySW5wdXRTaWduYWw8Q1tLXT4pOiB2b2lkO1xuICBwdWJsaWMgc2V0SW5wdXQoaW5wdXQ6IHN0cmluZywgaW5wdXRWYWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHB1YmxpYyBzZXRJbnB1dChpbnB1dDogYW55LCB2YWx1ZT86IGFueSk6IHZvaWQge1xuICAgIHNldFByb3BzKHRoaXMuZml4dHVyZS5jb21wb25lbnRSZWYsIGlucHV0LCB2YWx1ZSk7XG4gICAgLy8gRm9yY2UgY2Qgb24gdGhlIGhvc3QgY29tcG9uZW50IGZvciBjYXNlcyBzdWNoIGFzOiBodHRwczovL2dpdGh1Yi5jb20vbmduZWF0L3NwZWN0YXRvci9pc3N1ZXMvNTM5XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBGb3JjZSBjZCBvbiB0aGUgdGVzdGVkIGNvbXBvbmVudFxuICAgIHRoaXMuZGVidWdFbGVtZW50LmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZikuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGRlZmVyQmxvY2soZGVmZXJCbG9ja0luZGV4ID0gMCk6IERlZmVyQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmZXJCbG9ja3NGb3JHaXZlbkZpeHR1cmUoZGVmZXJCbG9ja0luZGV4LCB0aGlzLmZpeHR1cmUuZ2V0RGVmZXJCbG9ja3MoKSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGRlZmVyQmxvY2tGaXh0dXJlcyBEZWZlciBibG9jayBmaXh0dXJlXG4gICAqIEByZXR1cm5zIGRlZmVyQmxvY2sgb2JqZWN0IHdpdGggbWV0aG9kcyB0byBhY2Nlc3MgdGhlIGRlZmVyIGJsb2Nrc1xuICAgKi9cbiAgcHJpdmF0ZSBfZGVmZXJCbG9ja3NGb3JHaXZlbkZpeHR1cmUoZGVmZXJCbG9ja0luZGV4ID0gMCwgZGVmZXJCbG9ja0ZpeHR1cmVzOiBQcm9taXNlPERlZmVyQmxvY2tGaXh0dXJlW10+KTogRGVmZXJCbG9ja3Mge1xuICAgIHJldHVybiB7XG4gICAgICByZW5kZXJDb21wbGV0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZW5kZXJlZERlZmVyRml4dHVyZSA9IGF3YWl0IHRoaXMuX3JlbmRlckRlZmVyU3RhdGVBbmRHZXRGaXh0dXJlKFxuICAgICAgICAgIERlZmVyQmxvY2tTdGF0ZS5Db21wbGV0ZSxcbiAgICAgICAgICBkZWZlckJsb2NrSW5kZXgsXG4gICAgICAgICAgZGVmZXJCbG9ja0ZpeHR1cmVzLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbkRlZmVyRml4dHVyZXMocmVuZGVyZWREZWZlckZpeHR1cmUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlclBsYWNlaG9sZGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkRGVmZXJGaXh0dXJlID0gYXdhaXQgdGhpcy5fcmVuZGVyRGVmZXJTdGF0ZUFuZEdldEZpeHR1cmUoXG4gICAgICAgICAgRGVmZXJCbG9ja1N0YXRlLlBsYWNlaG9sZGVyLFxuICAgICAgICAgIGRlZmVyQmxvY2tJbmRleCxcbiAgICAgICAgICBkZWZlckJsb2NrRml4dHVyZXMsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuRGVmZXJGaXh0dXJlcyhyZW5kZXJlZERlZmVyRml4dHVyZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyTG9hZGluZzogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZW5kZXJlZERlZmVyRml4dHVyZSA9IGF3YWl0IHRoaXMuX3JlbmRlckRlZmVyU3RhdGVBbmRHZXRGaXh0dXJlKFxuICAgICAgICAgIERlZmVyQmxvY2tTdGF0ZS5Mb2FkaW5nLFxuICAgICAgICAgIGRlZmVyQmxvY2tJbmRleCxcbiAgICAgICAgICBkZWZlckJsb2NrRml4dHVyZXMsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuRGVmZXJGaXh0dXJlcyhyZW5kZXJlZERlZmVyRml4dHVyZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyRXJyb3I6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVuZGVyZWREZWZlckZpeHR1cmUgPSBhd2FpdCB0aGlzLl9yZW5kZXJEZWZlclN0YXRlQW5kR2V0Rml4dHVyZShEZWZlckJsb2NrU3RhdGUuRXJyb3IsIGRlZmVyQmxvY2tJbmRleCwgZGVmZXJCbG9ja0ZpeHR1cmVzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW5EZWZlckZpeHR1cmVzKHJlbmRlcmVkRGVmZXJGaXh0dXJlKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBnaXZlbiBkZWZlciBibG9jayBzdGF0ZSBhbmQgcmV0dXJucyB0aGUgZGVmZXIgYmxvY2sgZml4dHVyZVxuICAgKlxuICAgKiBAcGFyYW0gZGVmZXJCbG9ja1N0YXRlIGNvbXBsZXRlLCBwbGFjZWhvbGRlciwgbG9hZGluZyBvciBlcnJvclxuICAgKiBAcGFyYW0gZGVmZXJCbG9ja0luZGV4IGluZGV4IG9mIHRoZSBkZWZlciBibG9jayB0byByZW5kZXJcbiAgICogQHBhcmFtIGRlZmVyQmxvY2tGaXh0dXJlcyBEZWZlciBibG9jayBmaXh0dXJlXG4gICAqIEByZXR1cm5zIERlZmVyIGJsb2NrIGZpeHR1cmVcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX3JlbmRlckRlZmVyU3RhdGVBbmRHZXRGaXh0dXJlKFxuICAgIGRlZmVyQmxvY2tTdGF0ZTogRGVmZXJCbG9ja1N0YXRlLFxuICAgIGRlZmVyQmxvY2tJbmRleCA9IDAsXG4gICAgZGVmZXJCbG9ja0ZpeHR1cmVzOiBQcm9taXNlPERlZmVyQmxvY2tGaXh0dXJlW10+LFxuICApOiBQcm9taXNlPERlZmVyQmxvY2tGaXh0dXJlPiB7XG4gICAgY29uc3QgZGVmZXJGaXh0dXJlID0gKGF3YWl0IGRlZmVyQmxvY2tGaXh0dXJlcylbZGVmZXJCbG9ja0luZGV4XTtcblxuICAgIGF3YWl0IGRlZmVyRml4dHVyZS5yZW5kZXIoZGVmZXJCbG9ja1N0YXRlKTtcblxuICAgIHJldHVybiBkZWZlckZpeHR1cmU7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGRlZmVyRml4dHVyZSBEZWZlciBibG9jayBmaXh0dXJlXG4gICAqIEByZXR1cm5zIGRlZmVyQmxvY2sgb2JqZWN0IHdpdGggbWV0aG9kcyB0byBhY2Nlc3MgdGhlIG5lc3RlZCBkZWZlciBibG9ja3NcbiAgICovXG4gIHByaXZhdGUgX2NoaWxkcmVuRGVmZXJGaXh0dXJlcyhkZWZlckZpeHR1cmU6IERlZmVyQmxvY2tGaXh0dXJlKTogTmVzdGVkRGVmZXJCbG9ja3Mge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZlckJsb2NrOiAoZGVmZXJCbG9ja0luZGV4ID0gMCkgPT4gdGhpcy5fZGVmZXJCbG9ja3NGb3JHaXZlbkZpeHR1cmUoZGVmZXJCbG9ja0luZGV4LCBkZWZlckZpeHR1cmUuZ2V0RGVmZXJCbG9ja3MoKSksXG4gICAgfTtcbiAgfVxufVxuIl19