/** * @test */ public function Can_register_shared_type_with_closure_and_dependencies() { // arrange $Container = new TestContainer(); $Container->registerType('InjectableTestClassWithNoDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies'); $Container->registerType('InjectableTestClassWithSimpleDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithSimpleDependencies'); // act $Container->registerSharedType('NonInjectableClass', function (TestContainer $Container) { return NonInjectableClass::newNonInjectableClassWithSimpleDependency($Container->InjectableTestClassWithSimpleDependencies); }); $Instance = $Container->NonInjectableClass; // assert $this->assertInstanceOf('MindTouch\\OpenContainer\\test\\NonInjectableClass', $Instance); }
/** * @test */ public function Getting_a_stateless_type_always_returns_new_instance() { // arrange $Container = new TestContainer(); // act $Container->registerType('InjectableTestClassWithNoDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies'); $InstanceOne = $Container->InjectableTestClassWithNoDependencies; $InstanceTwo = $Container->InjectableTestClassWithNoDependencies; // assert $this->assertNotSame($InstanceOne, $InstanceTwo); }
/** * @test */ public function Can_get_registered_types() { // arrange $Container = new TestContainer(); $Container->registerType('InjectableTestClassWithNoDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies'); $Container->registerSharedType('InjectableTestClassWithSimpleDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithSimpleDependencies'); $Container->registerInstance('NonInjectableClass', NonInjectableClass::newNonInjectableClass()); // act $types = $Container->getRegisteredTypes(); // assert $this->assertEquals(array('InjectableTestClassWithNoDependencies', 'InjectableTestClassWithSimpleDependencies', 'NonInjectableClass'), $types); }
/** * @test */ public function Can_check_if_types_are_registered() { // arrange $Container = new TestContainer(); $type = 'InjectableTestClassWithNoDependencies'; // act $first = $Container->isRegistered($type); $Container->registerType($type, 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies'); $second = $Container->isRegistered($type); // assert $this->assertFalse($first); $this->assertTrue($second); }
/** * @test */ public function Can_register_type_with_instance_dependency() { // arrange $Container = new TestContainer(); $RegisteredInstance = NonInjectableClass::newNonInjectableClass(); $Container->registerInstance('NonInjectableClass', $RegisteredInstance); $expectedInstanceClass = 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithInstanceDependency'; // act $Container->registerType('InjectableTestClassWithInstanceDependency', $expectedInstanceClass); $Instance = $Container->InjectableTestClassWithInstanceDependency; // assert $this->assertInstanceOf($expectedInstanceClass, $Instance); }