177 lines
5.3 KiB
PHP
177 lines
5.3 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License
|
||
|
* as published by the Free Software Foundation; under version 2
|
||
|
* of the License (non-upgradable).
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with this program; if not, write to the Free Software
|
||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
*
|
||
|
* Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA;
|
||
|
*/
|
||
|
|
||
|
namespace oat\tao\test\unit\modules;
|
||
|
|
||
|
use oat\oatbox\service\ConfigurableService;
|
||
|
use oat\tao\model\modules\AbstractModuleRegistry;
|
||
|
use oat\tao\model\modules\AbstractModuleService;
|
||
|
use oat\tao\model\modules\DynamicModule;
|
||
|
use Prophecy\Prophet;
|
||
|
use oat\generis\test\TestCase;
|
||
|
|
||
|
/**
|
||
|
* Concrete class ModuleRegistry
|
||
|
* @package oat\tao\test\unit\modules
|
||
|
*/
|
||
|
class ModuleRegistry extends AbstractModuleRegistry
|
||
|
{
|
||
|
/**
|
||
|
* @see \oat\oatbox\AbstractRegistry::getExtension()
|
||
|
*/
|
||
|
protected function getExtension()
|
||
|
{
|
||
|
$prophet = new Prophet();
|
||
|
$prophecy = $prophet->prophesize();
|
||
|
$prophecy->willExtend(\common_ext_Extension::class);
|
||
|
|
||
|
return $prophecy->reveal();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @see \oat\oatbox\AbstractRegistry::getConfigId()
|
||
|
*/
|
||
|
protected function getConfigId()
|
||
|
{
|
||
|
return 'module_registry';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Concrete class ModuleService
|
||
|
* @package oat\tao\test\unit\modules
|
||
|
*/
|
||
|
class ModuleService extends AbstractModuleService
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test the AbstractModuleService
|
||
|
*
|
||
|
* @author Bertrand Chevrier <bertrand@taotesting.com>
|
||
|
* @author Jean-Sébastien Conan <jean-sebastien@taotesting.com>
|
||
|
*/
|
||
|
class AbstractModuleServiceTest extends TestCase
|
||
|
{
|
||
|
//data to stub the registry content
|
||
|
private static $moduleData = [
|
||
|
'my/wonderful/module/title' => [
|
||
|
'id' => 'title',
|
||
|
'module' => 'my/wonderful/module/title',
|
||
|
'bundle' => 'modules/bundle.min',
|
||
|
'position' => 1,
|
||
|
'name' => 'Wonderful Title',
|
||
|
'description' => 'Display a wonderful title',
|
||
|
'category' => 'content',
|
||
|
'active' => true,
|
||
|
'tags' => ['core', 'component']
|
||
|
],
|
||
|
'my/wonderful/module/text' => [
|
||
|
'id' => 'text',
|
||
|
'module' => 'my/wonderful/module/text',
|
||
|
'bundle' => 'modules/bundle.min',
|
||
|
'position' => 2,
|
||
|
'name' => 'Wonderful Text',
|
||
|
'description' => 'Display a wonderful text',
|
||
|
'category' => 'content',
|
||
|
'active' => true,
|
||
|
'tags' => ['core', 'component']
|
||
|
]
|
||
|
];
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Get the service with the stubbed registry
|
||
|
* @return AbstractModuleService
|
||
|
*/
|
||
|
protected function getModuleService()
|
||
|
{
|
||
|
$prophet = new Prophet();
|
||
|
$prophecy = $prophet->prophesize();
|
||
|
$prophecy->willExtend(ModuleRegistry::class);
|
||
|
$prophecy->getMap()->willReturn(self::$moduleData);
|
||
|
|
||
|
$moduleService = new ModuleService();
|
||
|
$moduleService->setRegistry($prophecy->reveal());
|
||
|
|
||
|
return $moduleService;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Check the service is a service
|
||
|
*/
|
||
|
public function testApi()
|
||
|
{
|
||
|
$moduleService = $this->getModuleService();
|
||
|
$this->assertInstanceOf(AbstractModuleService::class, $moduleService);
|
||
|
$this->assertInstanceOf(ConfigurableService::class, $moduleService);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test the method AbstractModuleService::getAllModules
|
||
|
*/
|
||
|
public function testGetAllModules()
|
||
|
{
|
||
|
$moduleService = $this->getModuleService();
|
||
|
|
||
|
$modules = $moduleService->getAllModules();
|
||
|
|
||
|
$this->assertEquals(2, count($modules));
|
||
|
|
||
|
$module0 = $modules['my/wonderful/module/title'];
|
||
|
$module1 = $modules['my/wonderful/module/text'];
|
||
|
|
||
|
$this->assertInstanceOf(DynamicModule::class, $module0);
|
||
|
$this->assertInstanceOf(DynamicModule::class, $module1);
|
||
|
|
||
|
$this->assertEquals('title', $module0->getId());
|
||
|
$this->assertEquals('text', $module1->getId());
|
||
|
|
||
|
$this->assertEquals('Wonderful Title', $module0->getName());
|
||
|
$this->assertEquals('Wonderful Text', $module1->getName());
|
||
|
|
||
|
$this->assertEquals(1, $module0->getPosition());
|
||
|
$this->assertEquals(2, $module1->getPosition());
|
||
|
|
||
|
$this->assertTrue($module0->isActive());
|
||
|
$this->assertTrue($module1->isActive());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test the method AbstractModuleService::getModule
|
||
|
*/
|
||
|
public function testGetOneModule()
|
||
|
{
|
||
|
$moduleService = $this->getModuleService();
|
||
|
|
||
|
$module = $moduleService->getModule('text');
|
||
|
|
||
|
$this->assertInstanceOf(DynamicModule::class, $module);
|
||
|
$this->assertEquals('text', $module->getId());
|
||
|
$this->assertEquals('Wonderful Text', $module->getName());
|
||
|
$this->assertEquals(2, $module->getPosition());
|
||
|
$this->assertEquals('my/wonderful/module/text', $module->getModule());
|
||
|
$this->assertEquals('content', $module->getCategory());
|
||
|
|
||
|
$this->assertTrue($module->isActive());
|
||
|
}
|
||
|
}
|