UNPKG

@ngneat/spectator

Version:

A powerful tool to simplify your Angular tests

43 lines 8.04 kB
import { By } from '@angular/platform-browser'; import { DOMSelector } from '../dom-selectors'; import { isString } from '../types'; export function getChildren(debugElementRoot) { return (directiveOrSelector, options = { root: false, read: undefined }) => { if (directiveOrSelector instanceof DOMSelector) { return directiveOrSelector.execute(debugElementRoot.nativeElement); } const debugElements = debugElementRoot.queryAll(isString(directiveOrSelector) ? By.css(directiveOrSelector) : By.directive(directiveOrSelector)); if (options.read) { return debugElements.map((debug) => debug.injector.get(options.read)); } if (isString(directiveOrSelector)) { return debugElements.map((debug) => debug.nativeElement); } return debugElements.map((debug) => debug.injector.get(directiveOrSelector)); }; } export function setProps(componentRef, keyOrKeyValues, value) { if (isString(keyOrKeyValues)) { componentRef.setInput(keyOrKeyValues, value); } else { // eslint-disable-next-line guard-for-in for (const p in keyOrKeyValues) { componentRef.setInput(p, keyOrKeyValues[p]); } } return componentRef.instance; } export function setHostProps(componentRef, keyOrKeyValues, value) { if (isString(keyOrKeyValues)) { componentRef.instance[keyOrKeyValues] = value; } else { // eslint-disable-next-line guard-for-in for (const p in keyOrKeyValues) { componentRef.instance[p] = keyOrKeyValues[p]; } } return componentRef.instance; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVjdGF0b3Ivc3JjL2xpYi9pbnRlcm5hbHMvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUEyQixNQUFNLFVBQVUsQ0FBQztBQUU3RCxNQUFNLFVBQVUsV0FBVyxDQUFJLGdCQUE4QjtJQUMzRCxPQUFPLENBQUMsbUJBQThCLEVBQUUsVUFBMkIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBTyxFQUFFO1FBQzFHLElBQUksbUJBQW1CLFlBQVksV0FBVyxFQUFFLENBQUM7WUFDL0MsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFVLENBQUM7UUFDOUUsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FDN0MsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUNoRyxDQUFDO1FBRUYsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDLENBQUM7QUFDSixDQUFDO0FBUUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxZQUErQixFQUFFLGNBQW1CLEVBQUUsS0FBVztJQUN4RixJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQzdCLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7U0FBTSxDQUFDO1FBQ04sd0NBQXdDO1FBQ3hDLEtBQUssTUFBTSxDQUFDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDL0IsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUM7QUFDL0IsQ0FBQztBQWNELE1BQU0sVUFBVSxZQUFZLENBQUMsWUFBK0IsRUFBRSxjQUFtQixFQUFFLEtBQVc7SUFDNUYsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUM3QixZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNoRCxDQUFDO1NBQU0sQ0FBQztRQUNOLHdDQUF3QztRQUN4QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQy9CLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnkgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgRE9NU2VsZWN0b3IgfSBmcm9tICcuLi9kb20tc2VsZWN0b3JzJztcbmltcG9ydCB7IGlzU3RyaW5nLCBRdWVyeU9wdGlvbnMsIFF1ZXJ5VHlwZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoaWxkcmVuPFI+KGRlYnVnRWxlbWVudFJvb3Q6IERlYnVnRWxlbWVudCk6IChkaXJlY3RpdmVPclNlbGVjdG9yOiBRdWVyeVR5cGUsIG9wdGlvbnM/OiBRdWVyeU9wdGlvbnM8Uj4pID0+IFJbXSB7XG4gIHJldHVybiAoZGlyZWN0aXZlT3JTZWxlY3RvcjogUXVlcnlUeXBlLCBvcHRpb25zOiBRdWVyeU9wdGlvbnM8Uj4gPSB7IHJvb3Q6IGZhbHNlLCByZWFkOiB1bmRlZmluZWQgfSk6IFJbXSA9PiB7XG4gICAgaWYgKGRpcmVjdGl2ZU9yU2VsZWN0b3IgaW5zdGFuY2VvZiBET01TZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIGRpcmVjdGl2ZU9yU2VsZWN0b3IuZXhlY3V0ZShkZWJ1Z0VsZW1lbnRSb290Lm5hdGl2ZUVsZW1lbnQpIGFzIGFueVtdO1xuICAgIH1cblxuICAgIGNvbnN0IGRlYnVnRWxlbWVudHMgPSBkZWJ1Z0VsZW1lbnRSb290LnF1ZXJ5QWxsKFxuICAgICAgaXNTdHJpbmcoZGlyZWN0aXZlT3JTZWxlY3RvcikgPyBCeS5jc3MoZGlyZWN0aXZlT3JTZWxlY3RvcikgOiBCeS5kaXJlY3RpdmUoZGlyZWN0aXZlT3JTZWxlY3RvciksXG4gICAgKTtcblxuICAgIGlmIChvcHRpb25zLnJlYWQpIHtcbiAgICAgIHJldHVybiBkZWJ1Z0VsZW1lbnRzLm1hcCgoZGVidWcpID0+IGRlYnVnLmluamVjdG9yLmdldChvcHRpb25zLnJlYWQpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcoZGlyZWN0aXZlT3JTZWxlY3RvcikpIHtcbiAgICAgIHJldHVybiBkZWJ1Z0VsZW1lbnRzLm1hcCgoZGVidWcpID0+IGRlYnVnLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWJ1Z0VsZW1lbnRzLm1hcCgoZGVidWcpID0+IGRlYnVnLmluamVjdG9yLmdldChkaXJlY3RpdmVPclNlbGVjdG9yKSk7XG4gIH07XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBTZXQgcHJvcHMgb24gYSBjb21wb25lbnQuIFRoaXMgaXMgdXNlZCBpbiBgY3JlYXRlQ29tcG9uZW50YCBhbmQgYGNyZWF0ZVJvdXRpbmdGYWN0b3J5YCBzaW5jZSB3ZSBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudFJlZi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BzPFQsIEsgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIFY+KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+LCBrZXk6IEssIHZhbHVlOiBWKTogVCAmIHsgW0tFWSBpbiBLXTogViB9O1xuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BzPFQsIEtWPihjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPiwga2V5VmFsdWVzPzogS1YpOiBUICYgS1Y7XG5leHBvcnQgZnVuY3Rpb24gc2V0UHJvcHMoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55Piwga2V5T3JLZXlWYWx1ZXM6IGFueSwgdmFsdWU/OiBhbnkpOiBhbnkge1xuICBpZiAoaXNTdHJpbmcoa2V5T3JLZXlWYWx1ZXMpKSB7XG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KGtleU9yS2V5VmFsdWVzLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGd1YXJkLWZvci1pblxuICAgIGZvciAoY29uc3QgcCBpbiBrZXlPcktleVZhbHVlcykge1xuICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KHAsIGtleU9yS2V5VmFsdWVzW3BdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50UmVmLmluc3RhbmNlO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogU2V0IHByb3BzIG9uIGEgaG9zdCBjb21wb25lbnQuIFRoaXMgaXMgdXNlZCBpbiBgY3JlYXRlSG9zdEZhY3RvcnlgLCBgY3JlYXRlRGlyZWN0aXZlRmFjdG9yeWAgYW5kIGBjcmVhdGVQaXBlRmFjdG9yeWAuXG4gKiBBcyB0aGVzZSBmYWN0b3JpZXMgY29udGFpbiBhIGN1c3RvbSBob3N0IGNvbXBvbmVudCwgd2Ugc2V0IHByb3BlcnRpZXMgb24gdGhpcyBob3N0IGNvbXBvbmVudCByYXRoZXIgdGhhbiB0aGUgdGVzdGVkIGNvbXBvbmVudCBpdHNlbGYuXG4gKiBTZXR0aW5nIHByb3BzIG9uIHRoZSBjb21wb25lbnQgdGhhdCdzIGJlaW5nIHRlc3RlZCBpcyBub3QgcG9zc2libGUgYXMgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gaXRzIGNvbXBvbmVudFJlZi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEhvc3RQcm9wczxULCBLIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBWPihcbiAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4sXG4gIGtleTogSyxcbiAgdmFsdWU6IFYsXG4pOiBUICYgeyBbS0VZIGluIEtdOiBWIH07XG5leHBvcnQgZnVuY3Rpb24gc2V0SG9zdFByb3BzPFQsIEtWPihjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPiwga2V5VmFsdWVzPzogS1YpOiBUICYgS1Y7XG5leHBvcnQgZnVuY3Rpb24gc2V0SG9zdFByb3BzKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4sIGtleU9yS2V5VmFsdWVzOiBhbnksIHZhbHVlPzogYW55KTogYW55IHtcbiAgaWYgKGlzU3RyaW5nKGtleU9yS2V5VmFsdWVzKSkge1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZVtrZXlPcktleVZhbHVlc10gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgZm9yIChjb25zdCBwIGluIGtleU9yS2V5VmFsdWVzKSB7XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2VbcF0gPSBrZXlPcktleVZhbHVlc1twXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50UmVmLmluc3RhbmNlO1xufVxuIl19