Skip to content

Commit

Permalink
Added static closures tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ElisDN committed Mar 27, 2021
1 parent 090498e commit 600c666
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions tests/CallableResolverTest.php
Expand Up @@ -61,6 +61,21 @@ public function testClosure()
$this->assertEquals(true, $callableMiddleware());
}

public function testStaticClosure()
{
$test = static function () {
return true;
};
$resolver = new CallableResolver(); // No container injected
$callable = $resolver->resolve($test);
$callableRoute = $resolver->resolveRoute($test);
$callableMiddleware = $resolver->resolveMiddleware($test);

$this->assertEquals(true, $callable());
$this->assertEquals(true, $callableRoute());
$this->assertEquals(true, $callableMiddleware());
}

public function testClosureContainer()
{
$this->containerProphecy->has('ultimateAnswer')->willReturn(true);
Expand All @@ -86,6 +101,55 @@ public function testClosureContainer()
$this->assertEquals(42, $callableMiddleware());
}

public function testClosureInNonObjectScopeContainer()
{
$this->containerProphecy->has('ultimateAnswer')->willReturn(true);
$this->containerProphecy->get('ultimateAnswer')->willReturn(42);

$that = $this;
$nonObjectScopeFactory = static function () use ($that) {
return function () use ($that) {
$that->assertInstanceOf(ContainerInterface::class, $this);

/** @var ContainerInterface $this */
return $this->get('ultimateAnswer');
};
};

$test = $nonObjectScopeFactory();

/** @var ContainerInterface $container */
$container = $this->containerProphecy->reveal();
$resolver = new CallableResolver($container);
$callable = $resolver->resolve($test);
$callableRoute = $resolver->resolveRoute($test);
$callableMiddleware = $resolver->resolveMiddleware($test);

$this->assertEquals(42, $callable());
$this->assertEquals(42, $callableRoute());
$this->assertEquals(42, $callableMiddleware());
}

public function testStaticClosureContainer()
{
$this->markTestIncomplete('Waiting for fixing error with PHP Warning');

$test = static function () {
return 42;
};

/** @var ContainerInterface $container */
$container = $this->containerProphecy->reveal();
$resolver = new CallableResolver($container);
$callable = $resolver->resolve($test);
$callableRoute = $resolver->resolveRoute($test);
$callableMiddleware = $resolver->resolveMiddleware($test);

$this->assertEquals(42, $callable());
$this->assertEquals(42, $callableRoute());
$this->assertEquals(42, $callableMiddleware());
}

public function testFunctionName()
{
$resolver = new CallableResolver(); // No container injected
Expand Down

0 comments on commit 600c666

Please sign in to comment.