@ngneat/spectator
Version:
A powerful tool to simplify your Angular tests
43 lines • 8.04 kB
JavaScript
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