Merge pull request #17852 from owncloud/register-alias-factory
Add test for factories
This commit is contained in:
commit
cd0a2874de
5 changed files with 50 additions and 15 deletions
|
@ -57,6 +57,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
|
|||
* @param string $appName the name of the app
|
||||
*/
|
||||
public function __construct($appName, $urlParams = array()){
|
||||
parent::__construct();
|
||||
$this['AppName'] = $appName;
|
||||
$this['urlParams'] = $urlParams;
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@ class SimpleContainer extends Container implements IContainer {
|
|||
public function registerAlias($alias, $target) {
|
||||
$this->registerService($alias, function (IContainer $container) use ($target) {
|
||||
return $container->query($target);
|
||||
});
|
||||
}, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -75,6 +75,7 @@ class Server extends SimpleContainer implements IServerContainer {
|
|||
* @param string $webRoot
|
||||
*/
|
||||
public function __construct($webRoot) {
|
||||
parent::__construct();
|
||||
$this->webRoot = $webRoot;
|
||||
|
||||
$this->registerService('ContactsManager', function ($c) {
|
||||
|
|
|
@ -120,7 +120,8 @@ class RoutingTest extends \Test\TestCase
|
|||
}
|
||||
|
||||
// route mocks
|
||||
$route = $this->mockRoute($verb, $controllerName, $actionName, $requirements, $defaults);
|
||||
$container = new DIContainer('app1');
|
||||
$route = $this->mockRoute($container, $verb, $controllerName, $actionName, $requirements, $defaults);
|
||||
|
||||
// router mock
|
||||
$router = $this->getMock("\OC\Route\Router", array('create'));
|
||||
|
@ -133,7 +134,6 @@ class RoutingTest extends \Test\TestCase
|
|||
->will($this->returnValue($route));
|
||||
|
||||
// load route configuration
|
||||
$container = new DIContainer('app1');
|
||||
$config = new RouteConfig($container, $router, $routes);
|
||||
|
||||
$config->register();
|
||||
|
@ -151,11 +151,12 @@ class RoutingTest extends \Test\TestCase
|
|||
$router = $this->getMock("\OC\Route\Router", array('create'));
|
||||
|
||||
// route mocks
|
||||
$indexRoute = $this->mockRoute('GET', $controllerName, 'index');
|
||||
$showRoute = $this->mockRoute('GET', $controllerName, 'show');
|
||||
$createRoute = $this->mockRoute('POST', $controllerName, 'create');
|
||||
$updateRoute = $this->mockRoute('PUT', $controllerName, 'update');
|
||||
$destroyRoute = $this->mockRoute('DELETE', $controllerName, 'destroy');
|
||||
$container = new DIContainer('app1');
|
||||
$indexRoute = $this->mockRoute($container, 'GET', $controllerName, 'index');
|
||||
$showRoute = $this->mockRoute($container, 'GET', $controllerName, 'show');
|
||||
$createRoute = $this->mockRoute($container, 'POST', $controllerName, 'create');
|
||||
$updateRoute = $this->mockRoute($container, 'PUT', $controllerName, 'update');
|
||||
$destroyRoute = $this->mockRoute($container, 'DELETE', $controllerName, 'destroy');
|
||||
|
||||
$urlWithParam = $url . '/{' . $paramName . '}';
|
||||
|
||||
|
@ -191,21 +192,28 @@ class RoutingTest extends \Test\TestCase
|
|||
->will($this->returnValue($destroyRoute));
|
||||
|
||||
// load route configuration
|
||||
$container = new DIContainer('app1');
|
||||
$config = new RouteConfig($container, $router, $yaml);
|
||||
|
||||
$config->register();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DIContainer $container
|
||||
* @param string $verb
|
||||
* @param string $controllerName
|
||||
* @param string $actionName
|
||||
* @param array $requirements
|
||||
* @param array $defaults
|
||||
* @return \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private function mockRoute($verb, $controllerName, $actionName, array $requirements=array(), array $defaults=array())
|
||||
{
|
||||
$container = new DIContainer('app1');
|
||||
private function mockRoute(
|
||||
DIContainer $container,
|
||||
$verb,
|
||||
$controllerName,
|
||||
$actionName,
|
||||
array $requirements=array(),
|
||||
array $defaults=array()
|
||||
) {
|
||||
$route = $this->getMock("\OC\Route\Route", array('method', 'action', 'requirements', 'defaults'), array(), '', false);
|
||||
$route
|
||||
->expects($this->exactly(1))
|
||||
|
|
|
@ -159,10 +159,15 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
|
||||
public function testRegisterAliasService() {
|
||||
$this->container->registerService('test', function() {
|
||||
return 'abc';
|
||||
});
|
||||
return new \StdClass;
|
||||
}, true);
|
||||
$this->container->registerAlias('test1', 'test');
|
||||
$this->assertEquals('abc', $this->container->query('test1'));
|
||||
$this->assertSame(
|
||||
$this->container->query('test'), $this->container->query('test'));
|
||||
$this->assertSame(
|
||||
$this->container->query('test1'), $this->container->query('test1'));
|
||||
$this->assertSame(
|
||||
$this->container->query('test'), $this->container->query('test1'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -174,5 +179,25 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
);
|
||||
}
|
||||
|
||||
public function testRegisterFactory() {
|
||||
$this->container->registerService('test', function() {
|
||||
return new \StdClass();
|
||||
}, false);
|
||||
$this->assertNotSame(
|
||||
$this->container->query('test'), $this->container->query('test'));
|
||||
}
|
||||
|
||||
public function testRegisterAliasFactory() {
|
||||
$this->container->registerService('test', function() {
|
||||
return new \StdClass();
|
||||
}, false);
|
||||
$this->container->registerAlias('test1', 'test');
|
||||
$this->assertNotSame(
|
||||
$this->container->query('test'), $this->container->query('test'));
|
||||
$this->assertNotSame(
|
||||
$this->container->query('test1'), $this->container->query('test1'));
|
||||
$this->assertNotSame(
|
||||
$this->container->query('test'), $this->container->query('test1'));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue