all files / core/decorators/ test-decorator.ts

100% Statements 13/13
100% Branches 4/4
100% Functions 4/4
100% Lines 10/10
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   99×     183×     183× 37×         1113× 104×           1254×     183×      
import "reflect-metadata";
 
export function Test(description?: string) {
  return (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => {
 
    // check if this has been registered as a test already
    let tests: Array<any> = Reflect.getMetadata("alsatian:tests", target);
 
    // if there are no tests registered yet then register it
    if (!tests) {
      tests = [ {
         key: propertyKey
      } ];
    }
    // otherwise add it to the register
    else if (tests.filter(test => test.key === propertyKey).length === 0) {
      tests.push( {
         key: propertyKey
      });
    }
 
    // set the description
    tests.filter(test => test.key === propertyKey)[0].description = description;
 
    // update the register
    Reflect.defineMetadata("alsatian:tests", tests, target);
};
}