/** * @test */ public function Getting_a_shared_state_type_always_returns_same_instance() { // arrange $Container = new TestContainer(); // act $Container->registerSharedType('InjectableTestClassWithNoDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies'); $InstanceOne = $Container->InjectableTestClassWithNoDependencies; $InstanceTwo = $Container->InjectableTestClassWithNoDependencies; // assert $this->assertSame($InstanceOne, $InstanceTwo); }
/** * @test */ public function Can_register_instance_and_get_instance() { // arrange $Container = new TestContainer(); $expectedInstanceClass = 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies'; // act $Container->registerSharedType('InjectableTestClassWithNoDependencies', $expectedInstanceClass); $Instance = $Container->InjectableTestClassWithNoDependencies; // assert $this->assertInstanceOf($expectedInstanceClass, $Instance); }
/** * @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_shared_types_are_registered() { // arrange $Container = new TestContainer(); $type = 'InjectableTestClassWithNoDependencies'; // act $first = $Container->isRegistered($type); $Container->registerSharedType($type, 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies'); $second = $Container->isRegistered($type); // assert $this->assertFalse($first); $this->assertTrue($second); }
/** * @test */ public function Registered_shared_type_is_recreated_after_flush() { // arrange $Container = new TestContainer(); $type = 'InjectableTestClassWithNoDependencies'; $expectedInstanceClass = 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies'; // act $Container->registerSharedType($type, $expectedInstanceClass); $FirstInstance = $Container->InjectableTestClassWithNoDependencies; $Container->flush($type); $SecondInstance = $Container->InjectableTestClassWithNoDependencies; // assert $this->assertInstanceOf($expectedInstanceClass, $FirstInstance); $this->assertInstanceOf($expectedInstanceClass, $SecondInstance); $this->assertNotSame($FirstInstance, $SecondInstance); }
/** * @test */ public function Can_register_shared_type_with_instance_dependency() { // arrange $Container = new TestContainer(); $RegisteredInstance = NonInjectableClass::newNonInjectableClass(); $Container->registerInstance('NonInjectableClass', $RegisteredInstance); $expectedInstanceClass = 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithInstanceDependency'; // act $Container->registerSharedType('InjectableTestClassWithInstanceDependency', $expectedInstanceClass); $Instance = $Container->InjectableTestClassWithInstanceDependency; // assert $this->assertInstanceOf($expectedInstanceClass, $Instance); }