dipperts
Version:
Dependency injection library for typescript.
47 lines (36 loc) • 1.36 kB
text/typescript
import * as dipper from "../src";
import { ContainerBuilder, ResolvingContainer } from "../src";
import { IScopeProvider, IContainer } from "../src/IContainer";
interface ILogger {
}
interface ILoggerContainer {
logger: ILogger;
}
interface IMyStore1 {
logger: ILogger;
}
interface IMyContainer {
store: IMyStore1;
}
type MyContainerType = ResolvingContainer<IMyContainer> &
ResolvingContainer<ILoggerContainer> &
IScopeProvider<IContainer & ResolvingContainer<ILoggerContainer>>;
describe("When combining two containers", () => {
var builder = new ContainerBuilder();
let container: MyContainerType = builder.addIndependent<ILoggerContainer>(c => ({
logger: c.single(() => ({}))
}))
.addDependent<IMyContainer>(c => ({
store: c.single<IMyStore1>(() => ({ logger: c.logger() }))
}))
.create();
var logger = container.logger();
var store = container.store();
it("all services are available on finished container", () => {
expect(logger).toBeDefined();
expect(store).toBeDefined();
});
it("dependencies are resolved accross container borders", () => {
expect(store.logger).toBe(logger);
});
});