Skip to content

Commit 1ed7ec9

Browse files
author
Kelt Dockins
committed
adding unit tests for ioc changes
1 parent b48031b commit 1ed7ec9

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

laravel/tests/cases/ioc.test.php

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
<?php
22

3+
/**
4+
* Testing Optional Parameters in classes' Dependency Injection
5+
*/
6+
class TestOptionalParamClassForIoC
7+
{
8+
public function __construct($optional_param = 42) {}
9+
}
10+
11+
/**
12+
* Testing Dependency Injection with this class
13+
*/
14+
class TestClassOneForIoC
15+
{
16+
public $_variable;
17+
}
18+
19+
/**
20+
* Testing Dependency Injection of ClassOne
21+
*/
22+
class TestClassTwoForIoC
23+
{
24+
public $class_one;
25+
public function __construct(TestClassOneForIoC $class_one)
26+
{
27+
$this->class_one = $class_one;
28+
}
29+
}
30+
31+
332
class IoCTest extends PHPUnit_Framework_TestCase {
433

534
/**
@@ -71,4 +100,54 @@ public function testControllerMethodRegistersAController()
71100
$this->assertTrue(IoC::registered('controller: ioc.test'));
72101
}
73102

103+
/**
104+
* Test that classes with optional parameters can resolve
105+
*/
106+
public function testOptionalParamClassResolves()
107+
{
108+
$test = IoC::resolve('TestOptionalParamClassForIoC');
109+
$this->assertInstanceOf('TestOptionalParamClassForIoC', $test);
110+
}
111+
112+
/**
113+
* Test that we can resolve TestClassOneForIoC using IoC
114+
*/
115+
public function testClassOneForIoCResolves()
116+
{
117+
$test = IoC::resolve('TestClassOneForIoC');
118+
$this->assertInstanceOf('TestClassOneForIoC', $test);
119+
}
120+
121+
/**
122+
* Test that we can resolve TestClassTwoForIoC
123+
*/
124+
public function testClassTwoForIoCResolves()
125+
{
126+
$test = IoC::resolve('TestClassTwoForIoC');
127+
$this->assertInstanceOf('TestClassTwoForIoC', $test);
128+
}
129+
130+
/**
131+
* Test that when we resolve TestClassTwoForIoC we auto resolve
132+
* the dependency for TestClassOneForIoC
133+
*/
134+
public function testClassTwoResolvesClassOneDependency()
135+
{
136+
$test = IoC::resolve('TestClassTwoForIoC');
137+
$this->assertInstanceOf('TestClassOneForIoC', $test->TestClassOneForIoC);
138+
}
139+
140+
/**
141+
* Test that when we resolve TestClassTwoForIoC with a parameter
142+
* that it actually uses that instead of a blank class TestClassOneForIoC
143+
*/
144+
public function testClassTwoResolvesClassOneWithArgument()
145+
{
146+
$class_one = IoC::resolve('TestClassOneForIoC');
147+
$class_one->test_variable = 42;
148+
149+
$class_two = IoC::resolve('TestClassTwoForIoC', [$class_one]);
150+
$this->assertEquals(42, $class_two->class_one->test_variable);
151+
}
152+
74153
}

0 commit comments

Comments
 (0)