Skip to content

Commit fa19cb5

Browse files
committed
Add two more tests for optional and nullable arguments fallbacks
1 parent 95f0aac commit fa19cb5

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Technically\DependencyResolver\Specs\Fixtures;
4+
5+
use Psr\Container\ContainerInterface;
6+
7+
final class MyNullableArgumentService
8+
{
9+
public $container;
10+
11+
public function __construct(?ContainerInterface $container)
12+
{
13+
$this->container = $container;
14+
}
15+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace Technically\DependencyResolver\Specs\Fixtures;
4+
5+
final class MyOptionalArgumentService
6+
{
7+
public $name;
8+
9+
public function __construct(string $name = 'MyOptionalArgumentService')
10+
{
11+
$this->name = $name;
12+
}
13+
}

specs/dependency-resolver.spec.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
use Technically\DependencyResolver\Specs\Fixtures\MyAbstractClass;
88
use Technically\DependencyResolver\Specs\Fixtures\MyConcreteContainerService;
99
use Technically\DependencyResolver\Specs\Fixtures\MyAbstractContainerService;
10+
use Technically\DependencyResolver\Specs\Fixtures\MyNullableArgumentService;
11+
use Technically\DependencyResolver\Specs\Fixtures\MyOptionalArgumentService;
1012

1113
describe('DependencyResolver', function() {
1214
it('should instantiate', function () {
@@ -49,6 +51,26 @@
4951
assert($resolved->container !== $container);
5052
});
5153

54+
it('should instantiate a class falling back to default values, if possible', function () {
55+
$container = new ArrayContainer();
56+
$resolver = new DependencyResolver($container);
57+
58+
$resolved = $resolver->resolve(MyOptionalArgumentService::class);
59+
60+
assert($resolved instanceof MyOptionalArgumentService);
61+
assert($resolved->name === 'MyOptionalArgumentService');
62+
});
63+
64+
it('should instantiate a class falling back to null when there is no other choice', function () {
65+
$container = new ArrayContainer();
66+
$resolver = new DependencyResolver($container);
67+
68+
$resolved = $resolver->resolve(MyNullableArgumentService::class);
69+
70+
assert($resolved instanceof MyNullableArgumentService);
71+
assert($resolved->container === null);
72+
});
73+
5274
it('should throw exception if class being resolved is abstract', function () {
5375
$container = new ArrayContainer();
5476
$resolver = new DependencyResolver($container);

0 commit comments

Comments
 (0)