UNPKG

dipperts

Version:

Dependency injection library for typescript.

47 lines (36 loc) 1.36 kB
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); }); });