Merge pull request #17852 from owncloud/register-alias-factory

Add test for factories
This commit is contained in:
Robin McCorkell 2015-08-11 13:30:56 +01:00
commit cd0a2874de
5 changed files with 50 additions and 15 deletions

View file

@ -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;

View file

@ -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);
}
}

View file

@ -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) {

View file

@ -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))

View file

@ -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'));
}
}