diff --git a/test/di_container_test.dart b/test/di_container_test.dart index 6b56ec6..5a5a3d8 100644 --- a/test/di_container_test.dart +++ b/test/di_container_test.dart @@ -73,64 +73,74 @@ void main() { expect(container.resolve(), expectedValue); }); - }); - test("Container resolve() returns a several value from parent container", - () { - final expectedIntValue = 5; - final expectedStringValue = "Hello world"; - final parentContainer = DiContainer(); - final container = DiContainer(parentContainer); + test("Container resolve() returns a several value from parent container", + () { + final expectedIntValue = 5; + final expectedStringValue = "Hello world"; + final parentContainer = DiContainer(); + final container = DiContainer(parentContainer); - parentContainer.bind().toResolver(_makeResolver(expectedIntValue)); - parentContainer - .bind() - .toResolver(_makeResolver(expectedStringValue)); + parentContainer.bind().toResolver(_makeResolver(expectedIntValue)); + parentContainer + .bind() + .toResolver(_makeResolver(expectedStringValue)); - expect(container.resolve(), expectedIntValue); - expect(container.resolve(), expectedStringValue); - }); + expect(container.resolve(), expectedIntValue); + expect(container.resolve(), expectedStringValue); + }); - test("Container resolve() throws a state error if parent hasn't value too", - () { - final parentContainer = DiContainer(); - final container = DiContainer(parentContainer); - expect(() => container.resolve(), throwsA(isA())); - }); + test("Container resolve() throws a state error if parent hasn't value too", + () { + final parentContainer = DiContainer(); + final container = DiContainer(parentContainer); + expect(() => container.resolve(), throwsA(isA())); + }); - test("Container has() returns false if parent has a resolver", () { - final parentContainer = DiContainer(); - final container = DiContainer(parentContainer); + test("Container has() returns false if parent has a resolver", () { + final parentContainer = DiContainer(); + final container = DiContainer(parentContainer); - parentContainer.bind().toResolver(_makeResolver(5)); + parentContainer.bind().toResolver(_makeResolver(5)); - expect(container.has(), false); - }); + expect(container.has(), false); + }); - test("Container has() returns false if parent hasn't a resolver", () { - final parentContainer = DiContainer(); - final container = DiContainer(parentContainer); + test("Container has() returns false if parent hasn't a resolver", () { + final parentContainer = DiContainer(); + final container = DiContainer(parentContainer); - expect(container.has(), false); - }); + expect(container.has(), false); + }); - test("Container hasInTree() returns true if parent has a resolver", () { - final parentContainer = DiContainer(); - final container = DiContainer(parentContainer); + test("Container hasInTree() returns true if parent has a resolver", () { + final parentContainer = DiContainer(); + final container = DiContainer(parentContainer); - parentContainer.bind().toResolver(_makeResolver(5)); + parentContainer.bind().toResolver(_makeResolver(5)); - expect(container.hasInTree(), true); - }); + expect(container.hasInTree(), true); + }); - test("Test asSingelton", () { - final expectedIntValue = 10; - final containerA = DiContainer(); - final containerB = DiContainer(containerA); + test("Test asSingelton", () { + final expectedIntValue = 10; + final containerA = DiContainer(); + final containerB = DiContainer(containerA); - containerA.bind().toValue(expectedIntValue).asSingleton(); + containerA.bind().toValue(expectedIntValue).asSingleton(); - expect(containerB.resolve(), expectedIntValue); + expect(containerB.resolve(), expectedIntValue); + }); + + test("Child container can resolve parent container's value", () { + final containerA = DiContainer(); + final a = AA(); + containerA.bind().toValue(a); + + final containerB = DiContainer(containerA); + final containerC = DiContainer(containerB); + expect(containerC.resolve(), a); + }); }); test("Bind to the factory resolves with value", () {