123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- <?php
- namespace Elgg;
- class WidgetsServiceTest extends \PHPUnit_Framework_TestCase {
- public function elgg_set_config($key, $val) {
- //do nothing, that's only for BC
- }
-
- public function testRegisterTypeParametersControl() {
- $service = new \Elgg\WidgetsService(array($this, 'elgg_set_config'));
- $this->assertFalse($service->registerType('', 'Widget name', 'Widget description'));
- $this->assertFalse($service->registerType(0, 'Widget name', 'Widget description'));
- $this->assertFalse($service->registerType(null, 'Widget name', 'Widget description'));
- $this->assertFalse($service->registerType(false, 'Widget name', 'Widget description'));
- $this->assertFalse($service->registerType('widget_type', '', 'Widget description'));
- $this->assertFalse($service->registerType('widget_type', 0, 'Widget description'));
- $this->assertFalse($service->registerType('widget_type', null, 'Widget description'));
- $this->assertFalse($service->registerType('widget_type', false, 'Widget description'));
- }
-
- /**
- * Tests register, exists and unregisrer
- */
- public function testCanRegisterType() {
- $service = new \Elgg\WidgetsService(array($this, 'elgg_set_config'));
-
- $this->assertFalse($service->validateType('widget_type'));
- $this->assertFalse($service->validateType('not_registered_widget'));
- $this->assertTrue($service->registerType('widget_type', 'Widget name1', 'Widget description1'));
- $this->assertTrue($service->registerType('widget_type_con', 'Widget name2', 'Widget description2', array('dashboard', 'profile')));
- $this->assertTrue($service->registerType('widget_type_mul', 'Widget name3', 'Widget description3', array('all'), true));
- $this->assertTrue($service->registerType('widget_type_con_mul', 'Widget name4', 'Widget description4', array('dashboard', 'settings'), true));
- //overwrite
- $this->assertTrue($service->registerType('widget_type_con_mul', 'Widget name5', 'Widget description5', array('dashboard', 'settings'), true));
-
- $this->assertTrue($service->validateType('widget_type'));
- $this->assertTrue($service->validateType('widget_type_con'));
- $this->assertTrue($service->validateType('widget_type_mul'));
- $this->assertTrue($service->validateType('widget_type_con_mul'));
- $this->assertFalse($service->validateType('not_registered_widget'));
- return $service;
- }
- /**
- * @depends testCanRegisterType
- * @param \Elgg\WidgetsService $service
- */
- public function testRegistrationParametersPreserveContext($service) {
-
- $params = array(
- //exact, context, expected
- array(false, 'all', array('widget_type', 'widget_type_mul')),
- array(false, 'dashboard', array('widget_type', 'widget_type_mul', 'widget_type_con', 'widget_type_con_mul')),
- array(false, 'profile', array('widget_type', 'widget_type_mul', 'widget_type_con')),
- array(false, 'settings', array('widget_type', 'widget_type_mul', 'widget_type_con_mul')),
- array(true, 'all', array('widget_type', 'widget_type_mul')),
- array(true, 'dashboard', array('widget_type_con', 'widget_type_con_mul')),
- array(true, 'profile', array('widget_type_con')),
- array(true, 'settings', array('widget_type_con_mul')),
- );
-
- //is returned set of handlers the same as expected
- foreach ($params as $case) {
- list($exact, $context, $expected) = $case;
- sort($expected);
- $actual = array_keys($service->getTypes($context, $exact));
- sort($actual);
- $this->assertEquals($expected, $actual);
- }
-
- return $service;
- }
-
- /**
- * @depends testRegistrationParametersPreserveContext
- * @param \Elgg\WidgetsService $service
- */
- public function testRegistrationParametersPreserveMultiple($service) {
-
- $resps = array(
- 'widget_type' => false,
- 'widget_type_con' => false,
- 'widget_type_mul' => true,
- 'widget_type_con_mul' => true,
- );
-
- $contexts = array('all', 'dashboard', 'profile', 'settings');
-
- foreach (array(false, true) as $exact) {
- foreach ($contexts as $context) {
- $items = $service->getTypes($context, $exact);
- foreach ($items as $handler => $item) {
- $this->assertInstanceOf('\stdClass', $item);
- $this->assertNotEmpty($handler);
- $this->assertInternalType('string', $handler);
- $this->assertArrayHasKey($handler, $resps);
- $this->assertSame($resps[$handler], $item->multiple);
- }
- }
- }
-
- return $service;
- }
-
- /**
- * @depends testRegistrationParametersPreserveMultiple
- * @param \Elgg\WidgetsService $service
- */
- public function testRegistrationParametersPreserveNameDescription($service) {
-
- $resps = array(
- 'widget_type' => array('Widget name1', 'Widget description1'),
- 'widget_type_con' => array('Widget name2', 'Widget description2'),
- 'widget_type_mul' => array('Widget name3', 'Widget description3'),
- 'widget_type_con_mul' => array('Widget name5', 'Widget description5'),
- );
-
- $contexts = array('all', 'dashboard', 'profile', 'settings');
-
- foreach (array(false, true) as $exact) {
- foreach ($contexts as $context) {
- $items = $service->getTypes($context, $exact);
- foreach ($items as $handler => $item) {
- $this->assertInstanceOf('\stdClass', $item);
- $this->assertNotEmpty($handler);
- $this->assertInternalType('string', $handler);
- $this->assertArrayHasKey($handler, $resps);
- list($name, $desc) = $resps[$handler];
- $this->assertSame($name, $item->name);
- $this->assertSame($desc, $item->description);
- }
- }
- }
-
- return $service;
- }
-
- /**
- * @depends testRegistrationParametersPreserveNameDescription
- * @param \Elgg\WidgetsService $service
- */
- public function testCanUnregisterType($service) {
- $this->assertTrue($service->unregisterType('widget_type'));
- $this->assertTrue($service->unregisterType('widget_type_con'));
- $this->assertTrue($service->unregisterType('widget_type_mul'));
- $this->assertTrue($service->unregisterType('widget_type_con_mul'));
- $this->assertFalse($service->unregisterType('widget_not_registered'));
-
- $this->assertFalse($service->validateType('widget_type'));
- $this->assertFalse($service->validateType('widget_type_con'));
- $this->assertFalse($service->validateType('widget_type_mul'));
- $this->assertFalse($service->validateType('not_registered_widget'));
- }
-
- //TODO get, view, create, canEditLayout, defaultWidgetsInit, createDefault, defaultWidgetsPermissionsOverride
- }
|