piumino
Version:
Piumino, meaning duvet in Italian, is like a duvet over the bed called Angular TestBed. It provides test helpers to test trivial things like inputs and outputs with a single line.
43 lines (42 loc) • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NgHelper = void 0;
const core_1 = require("@angular/core");
const types_1 = require("../types");
const object_helper_1 = require("./object.helper");
class NgHelper {
static getProperty(element, property) {
if (element.nativeElement.hasAttribute(property)) {
return element.nativeElement.getAttribute(property);
}
for (const token of element.providerTokens) {
const provider = object_helper_1.ObjectHelper.isObject(token) && token.provide ? token.provide : token;
const instance = element.injector.get(provider);
const propertyMap = NgHelper.getDirectivePropertyMap(instance);
if (propertyMap[property] in instance) {
return instance[propertyMap[property]];
}
}
return types_1.NOTHING;
}
static hasProperty(element, property) {
return NgHelper.getProperty(element, property) !== types_1.NOTHING;
}
static getDirectivePropertyMap(directive) {
const propertyMap = {};
const metadata = this.reflectionCapabilities.propMetadata(directive.constructor);
if (metadata) {
for (const [property, decorators] of Object.entries(metadata)) {
propertyMap[property] = property;
for (const decorator of decorators) {
if (decorator.bindingPropertyName) {
propertyMap[decorator.bindingPropertyName] = property;
}
}
}
}
return propertyMap;
}
}
exports.NgHelper = NgHelper;
NgHelper.reflectionCapabilities = new core_1.ɵReflectionCapabilities();