@difizen/mana-syringe
Version:
44 lines (41 loc) • 1.32 kB
text/typescript
import assert from 'assert';
import { Syringe } from './core';
import { singleton, transient, injectable } from './decorator';
describe('decorator', () => {
it('#injectable without option', () => {
()
class Foo {}
const option = Reflect.getMetadata(Syringe.ClassOptionSymbol, Foo);
assert(option.target === Foo);
});
it('#injectable with option', () => {
const FooSymbol = Symbol('FooSymbol');
({ token: FooSymbol, lifecycle: Syringe.Lifecycle.singleton })
class Foo {}
const option: Syringe.DecoratorOption<Foo> = Reflect.getMetadata(
Syringe.ClassOptionSymbol,
Foo,
);
assert(option.token === FooSymbol);
});
it('#singleton', () => {
const FooSymbol = Symbol('FooSymbol');
({ token: FooSymbol })
class Foo {}
const option: Syringe.InjectOption<Foo> = Reflect.getMetadata(
Syringe.ClassOptionSymbol,
Foo,
);
assert(option.lifecycle === Syringe.Lifecycle.singleton);
});
it('#transient', () => {
const FooSymbol = Symbol('FooSymbol');
({ token: FooSymbol })
class Foo {}
const option: Syringe.InjectOption<Foo> = Reflect.getMetadata(
Syringe.ClassOptionSymbol,
Foo,
);
assert(option.lifecycle === Syringe.Lifecycle.transient);
});
});