reflect-metadata.ts
1.32 KB
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
31
32
33
34
35
36
37
38
39
40
// 4.1.2 Reflect.metadata ( metadataKey, metadataValue )
// https://rbuckton.github.io/reflect-metadata/#reflect.metadata
import "../Reflect";
import { assert } from "chai";
describe("Reflect.metadata", () => {
it("ReturnsDecoratorFunction", () => {
let result = Reflect.metadata("key", "value");
assert.equal(typeof result, "function");
});
it("DecoratorThrowsWithInvalidTargetWithTargetKey", () => {
let decorator = Reflect.metadata("key", "value");
assert.throws(() => decorator(undefined, "name"), TypeError);
});
it("DecoratorThrowsWithInvalidTargetKey", () => {
let decorator = Reflect.metadata("key", "value");
assert.throws(() => decorator({}, <any>{}), TypeError);
});
it("OnTargetWithoutTargetKey", () => {
let decorator = Reflect.metadata("key", "value");
let target = function () {}
decorator(target);
let result = Reflect.hasOwnMetadata("key", target, undefined);
assert.equal(result, true);
});
it("OnTargetWithTargetKey", () => {
let decorator = Reflect.metadata("key", "value");
let target = {}
decorator(target, "name");
let result = Reflect.hasOwnMetadata("key", target, "name");
assert.equal(result, true);
});
});