Commit 1ed7ec98 authored by Kelt Dockins's avatar Kelt Dockins

adding unit tests for ioc changes

parent b48031b0
<?php
/**
* Testing Optional Parameters in classes' Dependency Injection
*/
class TestOptionalParamClassForIoC
{
public function __construct($optional_param = 42) {}
}
/**
* Testing Dependency Injection with this class
*/
class TestClassOneForIoC
{
public $_variable;
}
/**
* Testing Dependency Injection of ClassOne
*/
class TestClassTwoForIoC
{
public $class_one;
public function __construct(TestClassOneForIoC $class_one)
{
$this->class_one = $class_one;
}
}
class IoCTest extends PHPUnit_Framework_TestCase {
/**
......@@ -71,4 +100,54 @@ class IoCTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(IoC::registered('controller: ioc.test'));
}
/**
* Test that classes with optional parameters can resolve
*/
public function testOptionalParamClassResolves()
{
$test = IoC::resolve('TestOptionalParamClassForIoC');
$this->assertInstanceOf('TestOptionalParamClassForIoC', $test);
}
/**
* Test that we can resolve TestClassOneForIoC using IoC
*/
public function testClassOneForIoCResolves()
{
$test = IoC::resolve('TestClassOneForIoC');
$this->assertInstanceOf('TestClassOneForIoC', $test);
}
/**
* Test that we can resolve TestClassTwoForIoC
*/
public function testClassTwoForIoCResolves()
{
$test = IoC::resolve('TestClassTwoForIoC');
$this->assertInstanceOf('TestClassTwoForIoC', $test);
}
/**
* Test that when we resolve TestClassTwoForIoC we auto resolve
* the dependency for TestClassOneForIoC
*/
public function testClassTwoResolvesClassOneDependency()
{
$test = IoC::resolve('TestClassTwoForIoC');
$this->assertInstanceOf('TestClassOneForIoC', $test->TestClassOneForIoC);
}
/**
* Test that when we resolve TestClassTwoForIoC with a parameter
* that it actually uses that instead of a blank class TestClassOneForIoC
*/
public function testClassTwoResolvesClassOneWithArgument()
{
$class_one = IoC::resolve('TestClassOneForIoC');
$class_one->test_variable = 42;
$class_two = IoC::resolve('TestClassTwoForIoC', [$class_one]);
$this->assertEquals(42, $class_two->class_one->test_variable);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment