##// END OF EJS Templates
tests
tests

File last commit:

r41:eae7e609c38a di-typescript
r41:eae7e609c38a di-typescript
Show More
ContainerTests.ts
74 lines | 1.9 KiB | video/mp2t | TypeScriptLexer
/ test / ts / ContainerTests.ts
import { test, TapeWriter } from "./TestTraits";
import { Container } from "@implab/core/di/Container";
import { ReferenceDescriptor } from "@implab/core/di/ReferenceDescriptor";
import { AggregateDescriptor } from "@implab/core/di/AggregateDescriptor";
import { ValueDescriptor } from "@implab/core/di/ValueDescriptor";
import { TraceSource, DebugLevel } from "@implab/core/log/TraceSource";
import { Foo } from "./mock/Foo";
import { Bar } from "./mock/Bar";
import { isNull } from "@implab/core/safe";
test("Container register/resolve tests", async t => {
const writer = new TapeWriter(t);
TraceSource.on(ts => {
ts.level = DebugLevel;
writer.writeEvents(ts.events);
});
const container = new Container();
const connection1 = "db://localhost";
container.register("connection", new ValueDescriptor(connection1));
t.equals(container.getService("connection"), connection1);
container.register(
"dbParams",
new AggregateDescriptor({
timeout: 10,
connection: new ReferenceDescriptor({ name: "connection" })
})
);
const dbParams = container.getService("dbParams");
t.equals(dbParams.connection, connection1, "should get connection");
writer.destroy();
});
test("Container configure/resolve tests", async t => {
const writer = new TapeWriter(t);
TraceSource.on(ts => {
ts.level = DebugLevel;
writer.writeEvents(ts.events);
});
const container = new Container();
await container.configure({
foo: {
$type: Foo
},
bar: {
$type: Bar,
params: {
db: {
provider: {
$dependency: "db"
}
}
}
}
});
const f1 = container.resolve("foo");
t.assert(!isNull(f1), "foo should be not null");
const b1 = container.resolve("bar");
writer.destroy();
});