All files / lib/modifiers/initializers RunInitMethodInitializer.ts

100% Statements 14/14
80% Branches 4/5
100% Functions 3/3
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3112x   12x     12x 45x   45x       58x       58x 58x 58x 57x   1x 1x 1x   1x          
import { Keys } from "../../Keys";
import { IResolver } from "../../interfaces/IResolver";
import { ArgResolver } from "../../definitions/helpers/ArgResolver";
import { IInitializer } from "./IInitializer";
 
export class RunInitMethodInitializer implements IInitializer {
    argResolver: ArgResolver = new ArgResolver(this.resolver);
 
    constructor(readonly resolver: IResolver) {
    }
 
    async run(resolvedInstance: any, definition: any): Promise<any> {
        return this.runInitMethod(resolvedInstance, definition);
    }
 
    async runInitMethod(resolvedInstance: any, definition: any): Promise<any> {
        const initMethodMeta = Reflect.getMetadata(Keys.INIT_METHOD_PROPERTY_DECORATOR_KEY, definition.content) || {};
        const initMethod: string = initMethodMeta[Keys.INIT_METHOD_PROPERTY_DECORATOR_KEY];
        if (initMethod === undefined) {
            return resolvedInstance;
        }
        const initMethodParamsMeta = Reflect.getMetadata(initMethod, definition.content) || {};
        const initFnArgs: any = await this.argResolver.resolveArguments(initMethodParamsMeta, definition.context, initMethod);
        resolvedInstance[initMethod](...initFnArgs);
 
        return resolvedInstance;
    }
 
 
}