resume/tests/Silex/Tests/CallbackServicesTest.php

110 lines
2.3 KiB
PHP

<?php
/*
* This file is part of the Silex framework.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Silex\Tests;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Silex\Provider\ServiceControllerServiceProvider;
/**
* Callback as services test cases.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class CallbackServicesTest extends \PHPUnit_Framework_TestCase
{
public $called = array();
public function testCallbacksAsServices()
{
$app = new Application();
$app->register(new ServiceControllerServiceProvider());
$app['service'] = function () {
return new CallbackServicesTest();
};
$app->before('service:beforeApp');
$app->after('service:afterApp');
$app->finish('service:finishApp');
$app->error('service:error');
$app->on('kernel.request', 'service:onRequest');
$app
->match('/', 'service:controller')
->convert('foo', 'service:convert')
->before('service:before')
->after('service:after')
;
$request = Request::create('/');
$response = $app->handle($request);
$app->terminate($request, $response);
$this->assertEquals(array(
'BEFORE APP',
'ON REQUEST',
'BEFORE',
'CONVERT',
'ERROR',
'AFTER',
'AFTER APP',
'FINISH APP',
), $app['service']->called);
}
public function controller(Application $app)
{
$app->abort(404);
}
public function before()
{
$this->called[] = 'BEFORE';
}
public function after()
{
$this->called[] = 'AFTER';
}
public function beforeApp()
{
$this->called[] = 'BEFORE APP';
}
public function afterApp()
{
$this->called[] = 'AFTER APP';
}
public function finishApp()
{
$this->called[] = 'FINISH APP';
}
public function error()
{
$this->called[] = 'ERROR';
}
public function convert()
{
$this->called[] = 'CONVERT';
}
public function onRequest()
{
$this->called[] = 'ON REQUEST';
}
}