From 1ed7ec98ba7dc9a57d1b5dde55b47154797330a8 Mon Sep 17 00:00:00 2001 From: Kelt Dockins Date: Thu, 7 Feb 2013 00:13:00 -0600 Subject: [PATCH] adding unit tests for ioc changes --- laravel/tests/cases/ioc.test.php | 79 ++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/laravel/tests/cases/ioc.test.php b/laravel/tests/cases/ioc.test.php index 56918337..a93442dd 100644 --- a/laravel/tests/cases/ioc.test.php +++ b/laravel/tests/cases/ioc.test.php @@ -1,5 +1,34 @@ class_one = $class_one; + } +} + + class IoCTest extends PHPUnit_Framework_TestCase { /** @@ -71,4 +100,54 @@ public function testControllerMethodRegistersAController() $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