mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 13:30:25 +02:00
Merge branch 'develop' of https://github.com/phpbb/phpbb3 into ticket/11531
This commit is contained in:
@@ -55,11 +55,14 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case
|
||||
'phpbb_',
|
||||
$tools
|
||||
);
|
||||
|
||||
$container = new phpbb_mock_container_builder();
|
||||
$container->set('migrator', $migrator);
|
||||
|
||||
$this->extension_manager = new phpbb_extension_manager(
|
||||
new phpbb_mock_container_builder(),
|
||||
$container,
|
||||
$this->db,
|
||||
$this->config,
|
||||
$this->migrator,
|
||||
new phpbb_filesystem(),
|
||||
'phpbb_ext',
|
||||
dirname(__FILE__) . '/../../phpBB/',
|
||||
|
16
tests/extension/ext/barfoo/acp/a_info.php
Normal file
16
tests/extension/ext/barfoo/acp/a_info.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
class phpbb_ext_barfoo_acp_a_info
|
||||
{
|
||||
public function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => 'phpbb_ext_barfoo_acp_a_module',
|
||||
'title' => 'Barfoo',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('ACP_MODS')),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
5
tests/extension/ext/barfoo/acp/a_module.php
Normal file
5
tests/extension/ext/barfoo/acp/a_module.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
class phpbb_ext_barfoo_acp_a_module
|
||||
{
|
||||
}
|
5
tests/extension/ext/barfoo/ext.php
Normal file
5
tests/extension/ext/barfoo/ext.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
class phpbb_ext_barfoo_ext extends phpbb_extension_base
|
||||
{
|
||||
}
|
16
tests/extension/ext/foo/acp/a_info.php
Normal file
16
tests/extension/ext/foo/acp/a_info.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
class phpbb_ext_foo_acp_a_info
|
||||
{
|
||||
public function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => 'phpbb_ext_foo_acp_a_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('ACP_MODS')),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
5
tests/extension/ext/foo/acp/a_module.php
Normal file
5
tests/extension/ext/foo/acp/a_module.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
class phpbb_ext_foo_acp_a_module
|
||||
{
|
||||
}
|
19
tests/extension/ext/foo/acp/fail_info.php
Normal file
19
tests/extension/ext/foo/acp/fail_info.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/*
|
||||
* Due to the mismatch between the class name and the file name, this module
|
||||
* file shouldn't be found by the extension finder
|
||||
*/
|
||||
class phpbb_ext_foo_acp_foo_info
|
||||
{
|
||||
public function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => 'phpbb_ext_foo_acp_fail_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('ACP_MODS')),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
8
tests/extension/ext/foo/acp/fail_module.php
Normal file
8
tests/extension/ext/foo/acp/fail_module.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
/*
|
||||
* Due to the mismatch between the class name and the file name of the module
|
||||
* info file, this module's info file shouldn't be found
|
||||
*/
|
||||
class phpbb_ext_foo_acp_fail_module
|
||||
{
|
||||
}
|
16
tests/extension/ext/foo/mcp/a_info.php
Normal file
16
tests/extension/ext/foo/mcp/a_info.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
class phpbb_ext_foo_mcp_a_info
|
||||
{
|
||||
public function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => 'phpbb_ext_foo_mcp_a_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('MCP_MAIN')),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
5
tests/extension/ext/foo/mcp/a_module.php
Normal file
5
tests/extension/ext/foo/mcp/a_module.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
class phpbb_ext_foo_mcp_a_module
|
||||
{
|
||||
}
|
@@ -158,6 +158,23 @@ class phpbb_extension_finder_test extends phpbb_test_case
|
||||
);
|
||||
}
|
||||
|
||||
public function test_find_from_extension()
|
||||
{
|
||||
$files = $this->finder
|
||||
->extension_directory('/type')
|
||||
->find_from_extension('foo', dirname(__FILE__) . '/ext/foo/');
|
||||
$classes = $this->finder->get_classes_from_files($files);
|
||||
|
||||
sort($classes);
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'phpbb_ext_foo_type_alternative',
|
||||
'phpbb_ext_foo_type_dummy_empty',
|
||||
),
|
||||
$classes
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* These do not work because of changes with PHPBB3-11386
|
||||
* They do not seem neccessary to me, so I am commenting them out for now
|
||||
|
28
tests/extension/includes/acp/acp_foobar.php
Normal file
28
tests/extension/includes/acp/acp_foobar.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package acp
|
||||
*/
|
||||
class acp_foobar
|
||||
{
|
||||
var $u_action;
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
}
|
||||
}
|
26
tests/extension/includes/acp/info/acp_foobar.php
Normal file
26
tests/extension/includes/acp/info/acp_foobar.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package module_install
|
||||
*/
|
||||
class acp_foobar_info
|
||||
{
|
||||
function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => 'acp_foobar',
|
||||
'title' => 'ACP Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'test' => array('title' => 'Test', 'auth' => '', 'cat' => array('ACP_GENERAL')),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@@ -30,7 +30,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case
|
||||
|
||||
public function test_available()
|
||||
{
|
||||
$this->assertEquals(array('bar', 'foo', 'vendor/moo'), array_keys($this->extension_manager->all_available()));
|
||||
$this->assertEquals(array('bar', 'barfoo', 'foo', 'vendor/moo'), array_keys($this->extension_manager->all_available()));
|
||||
}
|
||||
|
||||
public function test_enabled()
|
||||
@@ -107,11 +107,13 @@ class phpbb_extension_manager_test extends phpbb_database_test_case
|
||||
$table_prefix,
|
||||
array()
|
||||
);
|
||||
$container = new phpbb_mock_container_builder();
|
||||
$container->set('migrator', $migrator);
|
||||
|
||||
return new phpbb_extension_manager(
|
||||
new phpbb_mock_container_builder(),
|
||||
$container,
|
||||
$db,
|
||||
$config,
|
||||
$migrator,
|
||||
new phpbb_filesystem(),
|
||||
'phpbb_ext',
|
||||
dirname(__FILE__) . '/',
|
||||
|
@@ -61,11 +61,13 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case
|
||||
$this->table_prefix,
|
||||
array()
|
||||
);
|
||||
$container = new phpbb_mock_container_builder();
|
||||
$container->set('migrator', $migrator);
|
||||
|
||||
$this->extension_manager = new phpbb_extension_manager(
|
||||
new phpbb_mock_container_builder(),
|
||||
$container,
|
||||
$this->db,
|
||||
$this->config,
|
||||
$this->migrator,
|
||||
new phpbb_filesystem(),
|
||||
'phpbb_ext',
|
||||
$this->phpbb_root_path,
|
||||
|
192
tests/extension/modules_test.php
Normal file
192
tests/extension/modules_test.php
Normal file
@@ -0,0 +1,192 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/ext/foo/acp/a_info.php';
|
||||
require_once dirname(__FILE__) . '/ext/foo/mcp/a_info.php';
|
||||
require_once dirname(__FILE__) . '/ext/foo/acp/fail_info.php';
|
||||
require_once dirname(__FILE__) . '/ext/barfoo/acp/a_info.php';
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/acp/acp_modules.php';
|
||||
|
||||
class phpbb_extension_modules_test extends phpbb_test_case
|
||||
{
|
||||
protected $extension_manager;
|
||||
protected $finder;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
global $phpbb_extension_manager;
|
||||
|
||||
$this->extension_manager = new phpbb_mock_extension_manager(
|
||||
dirname(__FILE__) . '/',
|
||||
array(
|
||||
'foo' => array(
|
||||
'ext_name' => 'foo',
|
||||
'ext_active' => '1',
|
||||
'ext_path' => 'ext/foo/',
|
||||
),
|
||||
'bar' => array(
|
||||
'ext_name' => 'bar',
|
||||
'ext_active' => '1',
|
||||
'ext_path' => 'ext/bar/',
|
||||
),
|
||||
));
|
||||
$phpbb_extension_manager = $this->extension_manager;
|
||||
|
||||
$this->acp_modules = new acp_modules();
|
||||
}
|
||||
|
||||
public function test_get_module_infos()
|
||||
{
|
||||
global $phpbb_root_path;
|
||||
|
||||
// Correctly set the root path for this test to this directory, so the classes can be found
|
||||
$phpbb_root_path = dirname(__FILE__) . '/';
|
||||
|
||||
// Find acp module info files
|
||||
$this->acp_modules->module_class = 'acp';
|
||||
$acp_modules = $this->acp_modules->get_module_infos();
|
||||
$this->assertEquals(array(
|
||||
'phpbb_ext_foo_acp_a_module' => array(
|
||||
'filename' => 'phpbb_ext_foo_acp_a_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('ACP_MODS')),
|
||||
),
|
||||
),
|
||||
'acp_foobar' => array(
|
||||
'filename' => 'acp_foobar',
|
||||
'title' => 'ACP Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'test' => array('title' => 'Test', 'auth' => '', 'cat' => array('ACP_GENERAL')),
|
||||
),
|
||||
),
|
||||
), $acp_modules);
|
||||
|
||||
// Find mcp module info files
|
||||
$this->acp_modules->module_class = 'mcp';
|
||||
$acp_modules = $this->acp_modules->get_module_infos();
|
||||
$this->assertEquals(array(
|
||||
'phpbb_ext_foo_mcp_a_module' => array(
|
||||
'filename' => 'phpbb_ext_foo_mcp_a_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('MCP_MAIN')),
|
||||
),
|
||||
),
|
||||
), $acp_modules);
|
||||
|
||||
// Find a specific module info file (mcp_a_module)
|
||||
$this->acp_modules->module_class = 'mcp';
|
||||
$acp_modules = $this->acp_modules->get_module_infos('mcp_a_module');
|
||||
$this->assertEquals(array(
|
||||
'phpbb_ext_foo_mcp_a_module' => array(
|
||||
'filename' => 'phpbb_ext_foo_mcp_a_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('MCP_MAIN')),
|
||||
),
|
||||
),
|
||||
), $acp_modules);
|
||||
|
||||
// Find a specific module info file (mcp_a_module) with passing the module_class
|
||||
$this->acp_modules->module_class = '';
|
||||
$acp_modules = $this->acp_modules->get_module_infos('mcp_a_module', 'mcp');
|
||||
$this->assertEquals(array(
|
||||
'phpbb_ext_foo_mcp_a_module' => array(
|
||||
'filename' => 'phpbb_ext_foo_mcp_a_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('MCP_MAIN')),
|
||||
),
|
||||
),
|
||||
), $acp_modules);
|
||||
|
||||
// The mcp module info file we're looking for shouldn't exist
|
||||
$this->acp_modules->module_class = 'mcp';
|
||||
$acp_modules = $this->acp_modules->get_module_infos('mcp_a_fail');
|
||||
$this->assertEquals(array(), $acp_modules);
|
||||
|
||||
// As there are no ucp modules we shouldn't find any
|
||||
$this->acp_modules->module_class = 'ucp';
|
||||
$acp_modules = $this->acp_modules->get_module_infos();
|
||||
$this->assertEquals(array(), $acp_modules);
|
||||
|
||||
// Get module info of specified extension module
|
||||
$this->acp_modules->module_class = 'acp';
|
||||
$acp_modules = $this->acp_modules->get_module_infos('phpbb_ext_foo_acp_a_module');
|
||||
$this->assertEquals(array(
|
||||
'phpbb_ext_foo_acp_a_module' => array (
|
||||
'filename' => 'phpbb_ext_foo_acp_a_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array (
|
||||
'config' => array ('title' => 'Config', 'auth' => '', 'cat' => array ('ACP_MODS')),
|
||||
),
|
||||
),
|
||||
), $acp_modules);
|
||||
|
||||
// No specific module and module class set to an incorrect name
|
||||
$acp_modules = $this->acp_modules->get_module_infos('', 'wcp', true);
|
||||
$this->assertEquals(array(), $acp_modules);
|
||||
|
||||
// No specific module, no module_class set in the function parameter, and an incorrect module class
|
||||
$this->acp_modules->module_class = 'wcp';
|
||||
$acp_modules = $this->acp_modules->get_module_infos();
|
||||
$this->assertEquals(array(), $acp_modules);
|
||||
|
||||
// No specific module, module class set to false (will default to the above acp)
|
||||
// Setting $use_all_available will cause get_module_infos() to also load not enabled extensions (barfoo)
|
||||
$this->acp_modules->module_class = 'acp';
|
||||
$acp_modules = $this->acp_modules->get_module_infos('', false, true);
|
||||
$this->assertEquals(array(
|
||||
'phpbb_ext_foo_acp_a_module' => array(
|
||||
'filename' => 'phpbb_ext_foo_acp_a_module',
|
||||
'title' => 'Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('ACP_MODS')),
|
||||
),
|
||||
),
|
||||
'acp_foobar' => array(
|
||||
'filename' => 'acp_foobar',
|
||||
'title' => 'ACP Foobar',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'test' => array('title' => 'Test', 'auth' => '', 'cat' => array('ACP_GENERAL')),
|
||||
),
|
||||
),
|
||||
'phpbb_ext_barfoo_acp_a_module' => array(
|
||||
'filename' => 'phpbb_ext_barfoo_acp_a_module',
|
||||
'title' => 'Barfoo',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('ACP_MODS')),
|
||||
),
|
||||
)
|
||||
), $acp_modules);
|
||||
|
||||
// Specific module set to disabled extension
|
||||
$acp_modules = $this->acp_modules->get_module_infos('phpbb_ext_barfoo_acp_a_module', 'acp', true);
|
||||
$this->assertEquals(array(
|
||||
'phpbb_ext_barfoo_acp_a_module' => array(
|
||||
'filename' => 'phpbb_ext_barfoo_acp_a_module',
|
||||
'title' => 'Barfoo',
|
||||
'version' => '3.1.0-dev',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'Config', 'auth' => '', 'cat' => array('ACP_MODS')),
|
||||
),
|
||||
)
|
||||
), $acp_modules);
|
||||
}
|
||||
}
|
21
tests/functional/acp_groups_test.php
Normal file
21
tests/functional/acp_groups_test.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/common_groups_test.php';
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
class phpbb_functional_acp_groups_test extends phpbb_functional_common_groups_test
|
||||
{
|
||||
protected function get_url()
|
||||
{
|
||||
return 'adm/index.php?i=groups&mode=manage&action=edit';
|
||||
}
|
||||
}
|
51
tests/functional/common_groups_test.php
Normal file
51
tests/functional/common_groups_test.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
abstract class phpbb_functional_common_groups_test extends phpbb_functional_test_case
|
||||
{
|
||||
abstract protected function get_url();
|
||||
|
||||
public function groups_manage_test_data()
|
||||
{
|
||||
return array(
|
||||
array('', 'GROUP_UPDATED'),
|
||||
array('aa0000', 'GROUP_UPDATED'),
|
||||
|
||||
array('AAG000','WRONG_DATA_COLOUR'),
|
||||
array('#AA0000', 'WRONG_DATA_COLOUR'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider groups_manage_test_data
|
||||
*/
|
||||
public function test_groups_manage($input, $expected)
|
||||
{
|
||||
$this->markTestIncomplete(
|
||||
'Test fails on develop due to another test deleting the Administrators group.'
|
||||
);
|
||||
// See https://github.com/phpbb/phpbb3/pull/1407#issuecomment-18465480
|
||||
// and https://gist.github.com/bantu/22dc4f6c6c0b8f9e0fa1
|
||||
|
||||
$this->login();
|
||||
$this->admin_login();
|
||||
$this->add_lang(array('ucp', 'acp/groups'));
|
||||
|
||||
// Manage Administrators group
|
||||
$crawler = $this->request('GET', $this->get_url() . '&g=5&sid=' . $this->sid);
|
||||
$this->assert_response_success();
|
||||
$form = $crawler->selectButton($this->lang('SUBMIT'))->form();
|
||||
$form['group_colour']->setValue($input);
|
||||
$crawler = $this->client->submit($form);
|
||||
$this->assertContains($this->lang($expected), $crawler->text());
|
||||
}
|
||||
}
|
@@ -112,7 +112,7 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
|
||||
$crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&sid=' . $this->sid);
|
||||
|
||||
$this->assertCount(1, $crawler->filter('.ext_enabled'));
|
||||
$this->assertCount(4, $crawler->filter('.ext_disabled'));
|
||||
$this->assertCount(5, $crawler->filter('.ext_disabled'));
|
||||
|
||||
$this->assertContains('phpBB Foo Extension', $crawler->filter('.ext_enabled')->eq(0)->text());
|
||||
$this->assertContainsLang('PURGE', $crawler->filter('.ext_enabled')->eq(0)->text());
|
||||
|
130
tests/functional/extension_module_test.php
Normal file
130
tests/functional/extension_module_test.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/db/db_tools.php';
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/acp/acp_modules.php';
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
class phpbb_functional_extension_module_test extends phpbb_functional_test_case
|
||||
{
|
||||
protected $phpbb_extension_manager;
|
||||
static private $copied_files = array();
|
||||
static private $helper;
|
||||
|
||||
/**
|
||||
* This should only be called once before the tests are run.
|
||||
* This is used to copy the fixtures to the phpBB install
|
||||
*/
|
||||
static public function setUpBeforeClass()
|
||||
{
|
||||
global $phpbb_root_path;
|
||||
parent::setUpBeforeClass();
|
||||
|
||||
self::$helper = new phpbb_test_case_helpers(self);
|
||||
|
||||
self::$copied_files = array();
|
||||
|
||||
if (file_exists($phpbb_root_path . 'ext/'))
|
||||
{
|
||||
// First, move any extensions setup on the board to a temp directory
|
||||
self::$copied_files = self::$helper->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
|
||||
|
||||
// Then empty the ext/ directory on the board (for accurate test cases)
|
||||
self::$helper->empty_dir($phpbb_root_path . 'ext/');
|
||||
}
|
||||
|
||||
// Copy our ext/ files from the test case to the board
|
||||
self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/fixtures/ext/', $phpbb_root_path . 'ext/'));
|
||||
}
|
||||
|
||||
/**
|
||||
* This should only be called once after the tests are run.
|
||||
* This is used to remove the fixtures from the phpBB install
|
||||
*/
|
||||
static public function tearDownAfterClass()
|
||||
{
|
||||
global $phpbb_root_path;
|
||||
|
||||
if (file_exists($phpbb_root_path . 'store/temp_ext/'))
|
||||
{
|
||||
// Copy back the board installed extensions from the temp directory
|
||||
self::$helper->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
|
||||
}
|
||||
|
||||
// Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
|
||||
self::$helper->remove_files(self::$copied_files);
|
||||
|
||||
if (file_exists($phpbb_root_path . 'store/temp_ext/'))
|
||||
{
|
||||
self::$helper->empty_dir($phpbb_root_path . 'store/temp_ext/');
|
||||
}
|
||||
}
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
global $db;
|
||||
|
||||
parent::setUp();
|
||||
|
||||
$this->phpbb_extension_manager = $this->get_extension_manager();
|
||||
$this->phpbb_extension_manager->enable('foo/bar');
|
||||
|
||||
$modules = new acp_modules();
|
||||
$db = $this->get_db();
|
||||
|
||||
$sql = 'SELECT module_id
|
||||
FROM ' . MODULES_TABLE . "
|
||||
WHERE module_langname = 'acp'
|
||||
AND module_class = 'ACP_CAT_DOT_MODS'";
|
||||
$result = $db->sql_query($sql);
|
||||
$module_id = (int) $db->sql_fetchfield('module_id');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$parent_data = array(
|
||||
'module_basename' => '',
|
||||
'module_enabled' => 1,
|
||||
'module_display' => 1,
|
||||
'parent_id' => $module_id,
|
||||
'module_class' => 'acp',
|
||||
'module_langname' => 'ACP_FOOBAR_TITLE',
|
||||
'module_mode' => '',
|
||||
'module_auth' => '',
|
||||
);
|
||||
$modules->update_module_data($parent_data, true);
|
||||
|
||||
$module_data = array(
|
||||
'module_basename' => 'phpbb_ext_foo_bar_acp_main_module',
|
||||
'module_enabled' => 1,
|
||||
'module_display' => 1,
|
||||
'parent_id' => $parent_data['module_id'],
|
||||
'module_class' => 'acp',
|
||||
'module_langname' => 'ACP_FOOBAR_TITLE',
|
||||
'module_mode' => 'mode',
|
||||
'module_auth' => '',
|
||||
);
|
||||
$modules->update_module_data($module_data, true);
|
||||
|
||||
$this->purge_cache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check a controller for extension foo/bar.
|
||||
*/
|
||||
public function test_foo_bar()
|
||||
{
|
||||
$this->login();
|
||||
$this->admin_login();
|
||||
$crawler = $this->request('GET', 'adm/index.php?i=phpbb_ext_foo_bar_acp_main_module&mode=mode&sid=' . $this->sid, array(), true);
|
||||
$this->assert_response_success();
|
||||
$this->assertContains("Bertie rulez!", $crawler->filter('#main')->text());
|
||||
$this->phpbb_extension_manager->purge('foo/bar');
|
||||
}
|
||||
}
|
118
tests/functional/extension_permission_lang_test.php
Normal file
118
tests/functional/extension_permission_lang_test.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
class phpbb_functional_extension_permission_lang_test extends phpbb_functional_test_case
|
||||
{
|
||||
protected $phpbb_extension_manager;
|
||||
|
||||
static private $helper;
|
||||
|
||||
static private $copied_files = array();
|
||||
|
||||
static protected $fixtures = array(
|
||||
'foo/bar/language/en/',
|
||||
);
|
||||
|
||||
/**
|
||||
* This should only be called once before the tests are run.
|
||||
* This is used to copy the fixtures to the phpBB install
|
||||
*/
|
||||
static public function setUpBeforeClass()
|
||||
{
|
||||
global $phpbb_root_path;
|
||||
parent::setUpBeforeClass();
|
||||
|
||||
self::$helper = new phpbb_test_case_helpers(self);
|
||||
|
||||
self::$copied_files = array();
|
||||
|
||||
if (file_exists($phpbb_root_path . 'ext/'))
|
||||
{
|
||||
// First, move any extensions setup on the board to a temp directory
|
||||
self::$copied_files = self::$helper->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
|
||||
|
||||
// Then empty the ext/ directory on the board (for accurate test cases)
|
||||
self::$helper->empty_dir($phpbb_root_path . 'ext/');
|
||||
}
|
||||
|
||||
// Copy our ext/ files from the test case to the board
|
||||
self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/fixtures/ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture));
|
||||
}
|
||||
|
||||
/**
|
||||
* This should only be called once after the tests are run.
|
||||
* This is used to remove the fixtures from the phpBB install
|
||||
*/
|
||||
static public function tearDownAfterClass()
|
||||
{
|
||||
global $phpbb_root_path;
|
||||
|
||||
if (file_exists($phpbb_root_path . 'store/temp_ext/'))
|
||||
{
|
||||
// Copy back the board installed extensions from the temp directory
|
||||
self::$helper->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
|
||||
}
|
||||
|
||||
// Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
|
||||
self::$helper->remove_files(self::$copied_files);
|
||||
|
||||
if (file_exists($phpbb_root_path . 'store/temp_ext/'))
|
||||
{
|
||||
self::$helper->empty_dir($phpbb_root_path . 'store/temp_ext/');
|
||||
}
|
||||
}
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->get_db();
|
||||
|
||||
$acl_ary = array(
|
||||
'auth_option' => 'u_foo',
|
||||
'is_global' => 1,
|
||||
);
|
||||
|
||||
$sql = 'INSERT INTO phpbb_acl_options ' . $this->db->sql_build_array('INSERT', $acl_ary);
|
||||
$this->db->sql_query($sql);
|
||||
|
||||
$this->phpbb_extension_manager = $this->get_extension_manager();
|
||||
|
||||
$this->purge_cache();
|
||||
|
||||
$this->login();
|
||||
$this->admin_login();
|
||||
$this->add_lang('acp/permissions');
|
||||
}
|
||||
|
||||
public function test_auto_include_permission_lang_from_extensions()
|
||||
{
|
||||
$this->phpbb_extension_manager->enable('foo/bar');
|
||||
|
||||
// User permissions
|
||||
$crawler = $this->request('GET', 'adm/index.php?i=acp_permissions&icat=16&mode=setting_user_global&sid=' . $this->sid);
|
||||
$this->assert_response_success();
|
||||
|
||||
// Select admin
|
||||
$form = $crawler->selectButton($this->lang('SUBMIT'))->form();
|
||||
$data = array('username[0]' => 'admin');
|
||||
$form->setValues($data);
|
||||
$crawler = $this->client->submit($form);
|
||||
$this->assert_response_success();
|
||||
|
||||
// language from language/en/acp/permissions_phpbb.php
|
||||
$this->assertContains('Can attach files', $crawler->filter('body')->text());
|
||||
|
||||
// language from ext/foo/bar/language/en/permissions_foo.php
|
||||
$this->assertContains('Can view foo', $crawler->filter('body')->text());
|
||||
}
|
||||
}
|
32
tests/functional/fixtures/ext/foo/bar/acp/main_info.php
Normal file
32
tests/functional/fixtures/ext/foo/bar/acp/main_info.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
class phpbb_ext_foo_bar_acp_main_info
|
||||
{
|
||||
function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => 'phpbb_ext_foo_bar_acp_main_module',
|
||||
'title' => 'ACP_FOOBAR_TITLE',
|
||||
'version' => '1.0.0',
|
||||
'modes' => array(
|
||||
'mode' => array('title' => 'ACP_FOOBAR_MODE', 'auth' => '', 'cat' => array('ACP_FOOBAR_TITLE')),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
28
tests/functional/fixtures/ext/foo/bar/acp/main_module.php
Normal file
28
tests/functional/fixtures/ext/foo/bar/acp/main_module.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
class phpbb_ext_foo_bar_acp_main_module
|
||||
{
|
||||
var $u_action;
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
$this->tpl_name = 'foobar';
|
||||
$this->page_title = 'Bertie';
|
||||
}
|
||||
}
|
@@ -0,0 +1,3 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
Bertie rulez!
|
||||
<!-- INCLUDE overall_footer.html -->
|
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
// Admin Permissions
|
||||
$lang = array_merge($lang, array(
|
||||
'acl_u_foo' => array('lang' => 'Can view foo', 'cat' => 'misc'),
|
||||
));
|
@@ -43,7 +43,7 @@ class phpbb_functional_notification_test extends phpbb_functional_test_case
|
||||
$crawler = $this->request('GET', 'ucp.php?i=ucp_notifications&mode=notification_options');
|
||||
$this->assert_response_success();
|
||||
|
||||
$cplist = $crawler->filter('.cplist');
|
||||
$cplist = $crawler->filter('.table1');
|
||||
if ($expected_status)
|
||||
{
|
||||
$this->assert_checkbox_is_checked($cplist, $checkbox_name);
|
||||
|
21
tests/functional/ucp_groups_test.php
Normal file
21
tests/functional/ucp_groups_test.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/common_groups_test.php';
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
class phpbb_functional_ucp_groups_test extends phpbb_functional_common_groups_test
|
||||
{
|
||||
protected function get_url()
|
||||
{
|
||||
return 'ucp.php?i=groups&mode=manage&action=edit';
|
||||
}
|
||||
}
|
21
tests/functions/fixtures/language_select.xml
Normal file
21
tests/functions/fixtures/language_select.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_lang">
|
||||
<column>lang_id</column>
|
||||
<column>lang_iso</column>
|
||||
<column>lang_local_name</column>
|
||||
<column>lang_english_name</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>en</value>
|
||||
<value>English</value>
|
||||
<value>English</value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>cs</value>
|
||||
<value>Čeština</value>
|
||||
<value>Czech</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
27
tests/functions/fixtures/style_select.xml
Normal file
27
tests/functions/fixtures/style_select.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_styles">
|
||||
<column>style_id</column>
|
||||
<column>style_name</column>
|
||||
<column>style_active</column>
|
||||
<column>style_parent_tree</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>prosilver</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value>subsilver2</value>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3</value>
|
||||
<value>zoo</value>
|
||||
<value>0</value>
|
||||
<value></value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
56
tests/functions/is_absolute_test.php
Normal file
56
tests/functions/is_absolute_test.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||
|
||||
class phpbb_functions_is_absolute_test extends phpbb_test_case
|
||||
{
|
||||
static public function is_absolute_data()
|
||||
{
|
||||
return array(
|
||||
// Empty
|
||||
array('', false),
|
||||
|
||||
// Absolute unix style
|
||||
array('/etc/phpbb', true),
|
||||
// Unix does not support \ so that is not an absolute path
|
||||
array('\etc\phpbb', false),
|
||||
|
||||
// Absolute windows style
|
||||
array('c:\windows', true),
|
||||
array('C:\Windows', true),
|
||||
array('c:/windows', true),
|
||||
array('C:/Windows', true),
|
||||
|
||||
// Executable
|
||||
array('etc/phpbb', false),
|
||||
array('explorer.exe', false),
|
||||
|
||||
// Relative subdir
|
||||
array('Windows\System32', false),
|
||||
array('Windows\System32\explorer.exe', false),
|
||||
array('Windows/System32', false),
|
||||
array('Windows/System32/explorer.exe', false),
|
||||
|
||||
// Relative updir
|
||||
array('..\Windows\System32', false),
|
||||
array('..\Windows\System32\explorer.exe', false),
|
||||
array('../Windows/System32', false),
|
||||
array('../Windows/System32/explorer.exe', false),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider is_absolute_data
|
||||
*/
|
||||
public function test_is_absolute($path, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, phpbb_is_absolute($path));
|
||||
}
|
||||
}
|
39
tests/functions/language_select_test.php
Normal file
39
tests/functions/language_select_test.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||
|
||||
class phpbb_functions_language_select_test extends phpbb_database_test_case
|
||||
{
|
||||
public function getDataSet()
|
||||
{
|
||||
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/language_select.xml');
|
||||
}
|
||||
|
||||
static public function language_select_data()
|
||||
{
|
||||
return array(
|
||||
array('', '<option value="cs">Čeština</option><option value="en">English</option>'),
|
||||
array('en', '<option value="cs">Čeština</option><option value="en" selected="selected">English</option>'),
|
||||
array('cs', '<option value="cs" selected="selected">Čeština</option><option value="en">English</option>'),
|
||||
array('de', '<option value="cs">Čeština</option><option value="en">English</option>'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider language_select_data
|
||||
*/
|
||||
public function test_language_select($default, $expected)
|
||||
{
|
||||
global $db;
|
||||
$db = $this->new_dbal();
|
||||
|
||||
$this->assertEquals($expected, language_select($default));
|
||||
}
|
||||
}
|
41
tests/functions/style_select_test.php
Normal file
41
tests/functions/style_select_test.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||
|
||||
class phpbb_functions_style_select_test extends phpbb_database_test_case
|
||||
{
|
||||
public function getDataSet()
|
||||
{
|
||||
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/style_select.xml');
|
||||
}
|
||||
|
||||
static public function style_select_data()
|
||||
{
|
||||
return array(
|
||||
array('', false, '<option value="1">prosilver</option><option value="2">subsilver2</option>'),
|
||||
array('', true, '<option value="1">prosilver</option><option value="2">subsilver2</option><option value="3">zoo</option>'),
|
||||
array('1', false, '<option value="1" selected="selected">prosilver</option><option value="2">subsilver2</option>'),
|
||||
array('1', true, '<option value="1" selected="selected">prosilver</option><option value="2">subsilver2</option><option value="3">zoo</option>'),
|
||||
array('3', false, '<option value="1">prosilver</option><option value="2">subsilver2</option>'),
|
||||
array('3', true, '<option value="1">prosilver</option><option value="2">subsilver2</option><option value="3" selected="selected">zoo</option>'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider style_select_data
|
||||
*/
|
||||
public function test_style_select($default, $all, $expected)
|
||||
{
|
||||
global $db;
|
||||
$db = $this->new_dbal();
|
||||
|
||||
$this->assertEquals($expected, style_select($default, $all));
|
||||
}
|
||||
}
|
121
tests/functions/validate_hex_colour_test.php
Normal file
121
tests/functions/validate_hex_colour_test.php
Normal file
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
|
||||
|
||||
class phpbb_functions_validate_hex_colour_test extends phpbb_test_case
|
||||
{
|
||||
public function positive_match_data()
|
||||
{
|
||||
return array(
|
||||
array('a00'),
|
||||
array('AFF'),
|
||||
array('AA0000'),
|
||||
array('aa00FF'),
|
||||
array('000'),
|
||||
array('000000'),
|
||||
);
|
||||
}
|
||||
|
||||
public function negative_match_data()
|
||||
{
|
||||
return array(
|
||||
// Invalid prefix
|
||||
array('#aa0'),
|
||||
array('#AA0000'),
|
||||
array('vAA0000'),
|
||||
|
||||
// Invalid suffix
|
||||
array('AA0000v'),
|
||||
|
||||
// Correct length, but out of hex range
|
||||
array('ag0'),
|
||||
array('AAG000'),
|
||||
|
||||
// Too long
|
||||
array('AA00000'),
|
||||
array('AA0000 '),
|
||||
array('AA0000 abf'),
|
||||
array('AA0000 AA0000'),
|
||||
|
||||
// empty()
|
||||
array('0'),
|
||||
);
|
||||
}
|
||||
|
||||
public function optional_only_data()
|
||||
{
|
||||
return array(
|
||||
// The empty colour, i.e. "no colour".
|
||||
array(''),
|
||||
);
|
||||
}
|
||||
|
||||
public function strict_negative_match_data()
|
||||
{
|
||||
return array_merge(
|
||||
$this->negative_match_data(),
|
||||
$this->optional_only_data()
|
||||
);
|
||||
}
|
||||
|
||||
public function nonstrict_positive_match_data()
|
||||
{
|
||||
return array_merge(
|
||||
$this->positive_match_data(),
|
||||
$this->optional_only_data()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider positive_match_data
|
||||
*/
|
||||
public function test_strict_positive_match($input)
|
||||
{
|
||||
$this->assertFalse(
|
||||
phpbb_validate_hex_colour($input, false),
|
||||
"Failed asserting that $input passes as a valid hex colour."
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider strict_negative_match_data
|
||||
*/
|
||||
public function test_strict_negative_match($input)
|
||||
{
|
||||
$this->assertSame(
|
||||
'WRONG_DATA',
|
||||
phpbb_validate_hex_colour($input, false),
|
||||
"Failed asserting that $input does not pass as a valid hex colour."
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider nonstrict_positive_match_data
|
||||
*/
|
||||
public function test_nonstrict_positive_match($input)
|
||||
{
|
||||
$this->assertFalse(
|
||||
phpbb_validate_hex_colour($input, true),
|
||||
"Failed asserting that $input passes as a valid or optional hex colour."
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider negative_match_data
|
||||
*/
|
||||
public function test_nonstrict_negative_match($input)
|
||||
{
|
||||
$this->assertSame(
|
||||
'WRONG_DATA',
|
||||
phpbb_validate_hex_colour($input, true),
|
||||
"Failed asserting that $input does not pass as a valid or optional hex colour."
|
||||
);
|
||||
}
|
||||
}
|
@@ -49,6 +49,7 @@ class phpbb_functions_acp_build_cfg_template_test extends phpbb_test_case
|
||||
global $user, $phpbb_dispatcher;
|
||||
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||
$user = new phpbb_mock_user();
|
||||
$user->lang = new phpbb_mock_lang();
|
||||
|
||||
$this->assertEquals($expected, build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
|
||||
@@ -58,20 +59,20 @@ class phpbb_functions_acp_build_cfg_template_test extends phpbb_test_case
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
array('dimension', 20, 255),
|
||||
'key_name',
|
||||
array('dimension', 5, 15),
|
||||
'number_key_name',
|
||||
array('config_key_name_width' => 10, 'config_key_name_height' => 20),
|
||||
'config_key_name',
|
||||
array(),
|
||||
'<input id="key_name" type="text" size="20" maxlength="255" name="config[config_key_name_width]" value="10" /> x <input type="text" size="20" maxlength="255" name="config[config_key_name_height]" value="20" />',
|
||||
'<input id="number_key_name" type="number" size="2" maxlength="2" min="5" max="15" name="config[config_key_name_width]" value="10" /> x <input type="number" size="2" maxlength="2" min="5" max="15" name="config[config_key_name_height]" value="20" />',
|
||||
),
|
||||
array(
|
||||
array('dimension', 0, 255),
|
||||
'key_name',
|
||||
array('dimension', 0, 15),
|
||||
'number_key_name',
|
||||
array('config_key_name_width' => 10, 'config_key_name_height' => 20),
|
||||
'config_key_name',
|
||||
array(),
|
||||
'<input id="key_name" type="text" maxlength="255" name="config[config_key_name_width]" value="10" /> x <input type="text" maxlength="255" name="config[config_key_name_height]" value="20" />',
|
||||
'<input id="number_key_name" type="number" size="2" maxlength="2" min="0" max="15" name="config[config_key_name_width]" value="10" /> x <input type="number" size="2" maxlength="2" min="0" max="15" name="config[config_key_name_height]" value="20" />',
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -84,6 +85,43 @@ class phpbb_functions_acp_build_cfg_template_test extends phpbb_test_case
|
||||
global $user, $phpbb_dispatcher;
|
||||
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||
$user = new phpbb_mock_user();
|
||||
$user->lang = new phpbb_mock_lang();
|
||||
|
||||
$this->assertEquals($expected, build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
|
||||
}
|
||||
|
||||
public function build_cfg_template_number_data()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
array('number', 5, 15),
|
||||
'number_key_name',
|
||||
array('config_key_name' => 10),
|
||||
'config_key_name',
|
||||
array(),
|
||||
'<input id="number_key_name" type="number" maxlength="2" min="5" max="15" name="config[config_key_name]" value="10" />',
|
||||
),
|
||||
array(
|
||||
array('number', -1, 9999),
|
||||
'number_key_name',
|
||||
array('config_key_name' => 10),
|
||||
'config_key_name',
|
||||
array(),
|
||||
'<input id="number_key_name" type="number" maxlength="4" min="-1" max="9999" name="config[config_key_name]" value="10" />',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider build_cfg_template_number_data
|
||||
*/
|
||||
public function test_build_cfg_template_number($tpl_type, $key, $new, $config_key, $vars, $expected)
|
||||
{
|
||||
global $user, $phpbb_dispatcher;
|
||||
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||
$user = new phpbb_mock_user();
|
||||
$user->lang = new phpbb_mock_lang();
|
||||
|
||||
$this->assertEquals($expected, build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
|
||||
@@ -111,6 +149,7 @@ class phpbb_functions_acp_build_cfg_template_test extends phpbb_test_case
|
||||
global $user, $phpbb_dispatcher;
|
||||
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||
$user = new phpbb_mock_user();
|
||||
$user->lang = new phpbb_mock_lang();
|
||||
|
||||
$this->assertEquals($expected, build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
|
||||
@@ -162,6 +201,7 @@ class phpbb_functions_acp_build_cfg_template_test extends phpbb_test_case
|
||||
global $user, $phpbb_dispatcher;
|
||||
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||
$user = new phpbb_mock_user();
|
||||
$user->lang = new phpbb_mock_lang();
|
||||
|
||||
$this->assertEquals($expected, build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
|
||||
@@ -189,6 +229,7 @@ class phpbb_functions_acp_build_cfg_template_test extends phpbb_test_case
|
||||
global $user, $phpbb_dispatcher;
|
||||
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||
$user = new phpbb_mock_user();
|
||||
$user->lang = new phpbb_mock_lang();
|
||||
|
||||
$this->assertEquals($expected, build_cfg_template($tpl_type, $key, $new, $config_key, $vars));
|
||||
|
@@ -29,14 +29,14 @@
|
||||
</row>
|
||||
</table>
|
||||
<table name="phpbb_notifications">
|
||||
<column>item_type</column>
|
||||
<column>notification_type_id</column>
|
||||
<column>user_id</column>
|
||||
<column>item_id</column>
|
||||
<column>item_parent_id</column>
|
||||
<column>notification_read</column>
|
||||
<column>notification_data</column>
|
||||
<row>
|
||||
<value>bookmark</value>
|
||||
<value>1</value>
|
||||
<value>5</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
@@ -45,9 +45,11 @@
|
||||
</row>
|
||||
</table>
|
||||
<table name="phpbb_notification_types">
|
||||
<column>notification_type</column>
|
||||
<column>notification_type_id</column>
|
||||
<column>notification_type_name</column>
|
||||
<column>notification_type_enabled</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>bookmark</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
|
@@ -21,14 +21,14 @@
|
||||
</row>
|
||||
</table>
|
||||
<table name="phpbb_notifications">
|
||||
<column>item_type</column>
|
||||
<column>notification_type_id</column>
|
||||
<column>user_id</column>
|
||||
<column>item_id</column>
|
||||
<column>item_parent_id</column>
|
||||
<column>notification_read</column>
|
||||
<column>notification_data</column>
|
||||
<row>
|
||||
<value>post</value>
|
||||
<value>1</value>
|
||||
<value>5</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
@@ -36,7 +36,7 @@
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>post</value>
|
||||
<value>1</value>
|
||||
<value>8</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
@@ -45,9 +45,11 @@
|
||||
</row>
|
||||
</table>
|
||||
<table name="phpbb_notification_types">
|
||||
<column>notification_type</column>
|
||||
<column>notification_type_id</column>
|
||||
<column>notification_type_name</column>
|
||||
<column>notification_type_enabled</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>post</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
|
@@ -1,14 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_notifications">
|
||||
<column>item_type</column>
|
||||
<column>notification_type_id</column>
|
||||
<column>user_id</column>
|
||||
<column>item_id</column>
|
||||
<column>item_parent_id</column>
|
||||
<column>notification_read</column>
|
||||
<column>notification_data</column>
|
||||
<row>
|
||||
<value>post_in_queue</value>
|
||||
<value>1</value>
|
||||
<value>6</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
@@ -17,9 +17,11 @@
|
||||
</row>
|
||||
</table>
|
||||
<table name="phpbb_notification_types">
|
||||
<column>notification_type</column>
|
||||
<column>notification_type_id</column>
|
||||
<column>notification_type_name</column>
|
||||
<column>notification_type_enabled</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>post_in_queue</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
|
@@ -1,14 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<dataset>
|
||||
<table name="phpbb_notifications">
|
||||
<column>item_type</column>
|
||||
<column>notification_type_id</column>
|
||||
<column>user_id</column>
|
||||
<column>item_id</column>
|
||||
<column>item_parent_id</column>
|
||||
<column>notification_read</column>
|
||||
<column>notification_data</column>
|
||||
<row>
|
||||
<value>quote</value>
|
||||
<value>1</value>
|
||||
<value>5</value>
|
||||
<value>1</value>
|
||||
<value>1</value>
|
||||
@@ -17,9 +17,11 @@
|
||||
</row>
|
||||
</table>
|
||||
<table name="phpbb_notification_types">
|
||||
<column>notification_type</column>
|
||||
<column>notification_type_id</column>
|
||||
<column>notification_type_name</column>
|
||||
<column>notification_type_enabled</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value>quote</value>
|
||||
<value>1</value>
|
||||
</row>
|
||||
|
@@ -19,7 +19,7 @@ if (!defined('IN_PHPBB'))
|
||||
* Notifications service class
|
||||
* @package notifications
|
||||
*/
|
||||
class phpbb_mock_notifications_notification_manager extends phpbb_notification_manager
|
||||
class phpbb_notification_manager_helper extends phpbb_notification_manager
|
||||
{
|
||||
public function set_var($name, $value)
|
||||
{
|
||||
@@ -28,12 +28,10 @@ class phpbb_mock_notifications_notification_manager extends phpbb_notification_m
|
||||
|
||||
// Extra dependencies for get_*_class functions
|
||||
protected $auth = null;
|
||||
protected $cache = null;
|
||||
protected $config = null;
|
||||
public function setDependencies($auth, $cache, $config)
|
||||
public function setDependencies($auth, $config)
|
||||
{
|
||||
$this->auth = $auth;
|
||||
$this->cache = $cache;
|
||||
$this->config = $config;
|
||||
}
|
||||
|
||||
@@ -44,7 +42,7 @@ class phpbb_mock_notifications_notification_manager extends phpbb_notification_m
|
||||
{
|
||||
$item_type = 'phpbb_notification_type_' . $item_type;
|
||||
|
||||
$item = new $item_type($this->user_loader, $this->db, $this->cache, $this->user, $this->auth, $this->config, $this->phpbb_root_path, $this->php_ext, $this->notification_types_table, $this->notifications_table, $this->user_notifications_table);
|
||||
$item = new $item_type($this->user_loader, $this->db, $this->cache->get_driver(), $this->user, $this->auth, $this->config, $this->phpbb_root_path, $this->php_ext, $this->notification_types_table, $this->notifications_table, $this->user_notifications_table);
|
||||
|
||||
$item->set_notification_manager($this);
|
||||
|
||||
@@ -60,7 +58,7 @@ class phpbb_mock_notifications_notification_manager extends phpbb_notification_m
|
||||
{
|
||||
$method_name = 'phpbb_notification_method_' . $method_name;
|
||||
|
||||
$method = new $method_name($this->user_loader, $this->db, $this->cache, $this->user, $this->auth, $this->config, $this->phpbb_root_path, $this->php_ext, $this->notification_types_table, $this->notifications_table, $this->user_notifications_table);
|
||||
$method = new $method_name($this->user_loader, $this->db, $this->cache->get_driver(), $this->user, $this->auth, $this->config, $this->phpbb_root_path, $this->php_ext, $this->notification_types_table, $this->notifications_table, $this->user_notifications_table);
|
||||
|
||||
$method->set_notification_manager($this);
|
||||
|
@@ -7,6 +7,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/manager_helper.php';
|
||||
|
||||
class phpbb_notification_test extends phpbb_database_test_case
|
||||
{
|
||||
protected $notifications, $db, $container, $user, $config, $auth, $cache;
|
||||
@@ -31,19 +33,26 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
'allow_topic_notify' => true,
|
||||
'allow_forum_notify' => true,
|
||||
));
|
||||
$this->user = new phpbb_mock_user();
|
||||
$this->user = new phpbb_user();
|
||||
$this->user_loader = new phpbb_user_loader($this->db, $phpbb_root_path, $phpEx, 'phpbb_users');
|
||||
$this->auth = new phpbb_mock_notifications_auth();
|
||||
$this->cache = new phpbb_mock_cache();
|
||||
$this->cache = new phpbb_cache_service(
|
||||
new phpbb_cache_driver_null(),
|
||||
$this->config,
|
||||
$this->db,
|
||||
$phpbb_root_path,
|
||||
$phpEx
|
||||
);
|
||||
|
||||
$this->container = new phpbb_mock_container_builder();
|
||||
|
||||
$this->notifications = new phpbb_mock_notifications_notification_manager(
|
||||
$this->notifications = new phpbb_notification_manager_helper(
|
||||
array(),
|
||||
array(),
|
||||
$this->container,
|
||||
$this->user_loader,
|
||||
$this->db,
|
||||
$this->cache,
|
||||
$this->user,
|
||||
$phpbb_root_path,
|
||||
$phpEx,
|
||||
@@ -52,7 +61,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
'phpbb_user_notifications'
|
||||
);
|
||||
|
||||
$this->notifications->setDependencies($this->auth, $this->cache, $this->config);
|
||||
$this->notifications->setDependencies($this->auth, $this->config);
|
||||
|
||||
$types = array();
|
||||
foreach (array(
|
||||
@@ -87,7 +96,36 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
return new $type($this->user_loader, $this->db, $this->cache, $this->user, $this->auth, $this->config, $phpbb_root_path, $phpEx, 'phpbb_notification_types', 'phpbb_notifications', 'phpbb_user_notifications');
|
||||
return new $type($this->user_loader, $this->db, $this->cache->get_driver(), $this->user, $this->auth, $this->config, $phpbb_root_path, $phpEx, 'phpbb_notification_types', 'phpbb_notifications', 'phpbb_user_notifications');
|
||||
}
|
||||
|
||||
public function test_get_notification_type_id()
|
||||
{
|
||||
// They should be inserted the first time
|
||||
$this->assertEquals(1, $this->notifications->get_notification_type_id('post'));
|
||||
$this->assertEquals(2, $this->notifications->get_notification_type_id('quote'));
|
||||
$this->assertEquals(3, $this->notifications->get_notification_type_id('test'));
|
||||
|
||||
$this->assertEquals(array(
|
||||
'test' => 3,
|
||||
'quote' => 2,
|
||||
'post' => 1,
|
||||
),
|
||||
$this->notifications->get_notification_type_ids(array(
|
||||
'test',
|
||||
'quote',
|
||||
'post',
|
||||
)
|
||||
));
|
||||
$this->assertEquals(2, $this->notifications->get_notification_type_id('quote'));
|
||||
|
||||
try
|
||||
{
|
||||
$this->assertEquals(3, $this->notifications->get_notification_type_id('fail'));
|
||||
|
||||
$this->fail('Non-existent type should throw an exception');
|
||||
}
|
||||
catch (Exception $e) {}
|
||||
}
|
||||
|
||||
public function test_get_subscription_types()
|
||||
@@ -121,6 +159,20 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
|
||||
public function test_notifications()
|
||||
{
|
||||
$this->db->sql_query('DELETE FROM phpbb_notification_types');
|
||||
|
||||
$types = array('quote', 'bookmark', 'post', 'test');
|
||||
foreach ($types as $id => $type)
|
||||
{
|
||||
$this->db->sql_query('INSERT INTO phpbb_notification_types ' .
|
||||
$this->db->sql_build_array('INSERT', array(
|
||||
'notification_type_id' => ($id + 1),
|
||||
'notification_type_name' => $type,
|
||||
'notification_type_enabled' => 1,
|
||||
))
|
||||
);
|
||||
}
|
||||
|
||||
// Used to test post notifications later
|
||||
$this->db->sql_query('INSERT INTO ' . TOPICS_WATCH_TABLE . ' ' . $this->db->sql_build_array('INSERT', array(
|
||||
'topic_id' => 2,
|
||||
@@ -195,7 +247,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
|
||||
$expected = array(
|
||||
1 => array(
|
||||
'item_type' => 'test',
|
||||
'notification_type_id' => 4,
|
||||
'item_id' => 1,
|
||||
'item_parent_id' => 1,
|
||||
'user_id' => 0,
|
||||
@@ -204,7 +256,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
'notification_data' => array(),
|
||||
),
|
||||
2 => array(
|
||||
'item_type' => 'test',
|
||||
'notification_type_id' => 4,
|
||||
'item_id' => 2,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
@@ -213,7 +265,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
'notification_data' => array(),
|
||||
),
|
||||
3 => array(
|
||||
'item_type' => 'test',
|
||||
'notification_type_id' => 4,
|
||||
'item_id' => 3,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
@@ -222,7 +274,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
'notification_data' => array(),
|
||||
),
|
||||
4 => array(
|
||||
'item_type' => 'post',
|
||||
'notification_type_id' => 3,
|
||||
'item_id' => 4,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
@@ -238,7 +290,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
),
|
||||
),
|
||||
5 => array(
|
||||
'item_type' => 'bookmark',
|
||||
'notification_type_id' => 2,
|
||||
'item_id' => 5,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
@@ -301,7 +353,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
|
||||
$expected = array(
|
||||
1 => array(
|
||||
'item_type' => 'test',
|
||||
'notification_type_id' => 4,
|
||||
'item_id' => 1,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
@@ -310,7 +362,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
'notification_data' => array(),
|
||||
),
|
||||
2 => array(
|
||||
'item_type' => 'test',
|
||||
'notification_type_id' => 4,
|
||||
'item_id' => 2,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
@@ -319,7 +371,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
'notification_data' => array(),
|
||||
),
|
||||
3 => array(
|
||||
'item_type' => 'test',
|
||||
'notification_type_id' => 4,
|
||||
'item_id' => 3,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
@@ -328,7 +380,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
'notification_data' => array(),
|
||||
),
|
||||
4 => array(
|
||||
'item_type' => 'post',
|
||||
'notification_type_id' => 3,
|
||||
'item_id' => 4,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
@@ -344,7 +396,7 @@ class phpbb_notification_test extends phpbb_database_test_case
|
||||
),
|
||||
),
|
||||
5 => array(
|
||||
'item_type' => 'bookmark',
|
||||
'notification_type_id' => 2,
|
||||
'item_id' => 5,
|
||||
'item_parent_id' => 2,
|
||||
'user_id' => 0,
|
||||
|
@@ -52,9 +52,6 @@ class phpbb_notification_submit_post_base extends phpbb_database_test_case
|
||||
$this->db = $this->new_dbal();
|
||||
$db = $this->db;
|
||||
|
||||
// Cache
|
||||
$cache = new phpbb_mock_cache();
|
||||
|
||||
// Auth
|
||||
$auth = $this->getMock('phpbb_auth');
|
||||
$auth->expects($this->any())
|
||||
@@ -72,6 +69,14 @@ class phpbb_notification_submit_post_base extends phpbb_database_test_case
|
||||
set_config(null, null, null, $config);
|
||||
set_config_count(null, null, null, $config);
|
||||
|
||||
$cache = new phpbb_cache_service(
|
||||
new phpbb_cache_driver_null(),
|
||||
$config,
|
||||
$db,
|
||||
$phpbb_root_path,
|
||||
$phpEx
|
||||
);
|
||||
|
||||
// Event dispatcher
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||
|
||||
@@ -94,23 +99,28 @@ class phpbb_notification_submit_post_base extends phpbb_database_test_case
|
||||
|
||||
$user_loader = new phpbb_user_loader($db, $phpbb_root_path, $phpEx, USERS_TABLE);
|
||||
|
||||
// Notification Manager
|
||||
$phpbb_notifications = new phpbb_notification_manager(array(), array(),
|
||||
$phpbb_container, $user_loader, $db, $user,
|
||||
$phpbb_root_path, $phpEx,
|
||||
NOTIFICATION_TYPES_TABLE, NOTIFICATIONS_TABLE, USER_NOTIFICATIONS_TABLE);
|
||||
$phpbb_container->set('notification_manager', $phpbb_notifications);
|
||||
|
||||
// Notification Types
|
||||
$notification_types = array('quote', 'bookmark', 'post', 'post_in_queue');
|
||||
$notification_types = array('quote', 'bookmark', 'post', 'post_in_queue', 'topic', 'approve_topic', 'approve_post');
|
||||
$notification_types_array = array();
|
||||
foreach ($notification_types as $type)
|
||||
{
|
||||
$class_name = 'phpbb_notification_type_' . $type;
|
||||
$phpbb_container->set('notification.type.' . $type, new $class_name(
|
||||
$user_loader, $db, $cache, $user, $auth, $config,
|
||||
$class = new $class_name(
|
||||
$user_loader, $db, $cache->get_driver(), $user, $auth, $config,
|
||||
$phpbb_root_path, $phpEx,
|
||||
NOTIFICATION_TYPES_TABLE, NOTIFICATIONS_TABLE, USER_NOTIFICATIONS_TABLE));
|
||||
NOTIFICATION_TYPES_TABLE, NOTIFICATIONS_TABLE, USER_NOTIFICATIONS_TABLE);
|
||||
|
||||
$phpbb_container->set('notification.type.' . $type, $class);
|
||||
|
||||
$notification_types_array['notification.type.' . $type] = $class;
|
||||
}
|
||||
|
||||
// Notification Manager
|
||||
$phpbb_notifications = new phpbb_notification_manager($notification_types_array, array(),
|
||||
$phpbb_container, $user_loader, $db, $cache, $user,
|
||||
$phpbb_root_path, $phpEx,
|
||||
NOTIFICATION_TYPES_TABLE, NOTIFICATIONS_TABLE, USER_NOTIFICATIONS_TABLE);
|
||||
$phpbb_container->set('notification_manager', $phpbb_notifications);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,8 +129,9 @@ class phpbb_notification_submit_post_base extends phpbb_database_test_case
|
||||
public function test_submit_post($additional_post_data, $expected_before, $expected_after)
|
||||
{
|
||||
$sql = 'SELECT user_id, item_id, item_parent_id
|
||||
FROM ' . NOTIFICATIONS_TABLE . "
|
||||
WHERE item_type = '" . $this->item_type . "'
|
||||
FROM ' . NOTIFICATIONS_TABLE . ' n, ' . NOTIFICATION_TYPES_TABLE . " nt
|
||||
WHERE nt.notification_type_name = '" . $this->item_type . "'
|
||||
AND n.notification_type_id = nt.notification_type_id
|
||||
ORDER BY user_id, item_id ASC";
|
||||
$result = $this->db->sql_query($sql);
|
||||
$this->assertEquals($expected_before, $this->db->sql_fetchrowset($result));
|
||||
@@ -131,8 +142,9 @@ class phpbb_notification_submit_post_base extends phpbb_database_test_case
|
||||
submit_post('reply', '', 'poster-name', POST_NORMAL, $poll_data, $post_data, false, false);
|
||||
|
||||
$sql = 'SELECT user_id, item_id, item_parent_id
|
||||
FROM ' . NOTIFICATIONS_TABLE . "
|
||||
WHERE item_type = '" . $this->item_type . "'
|
||||
FROM ' . NOTIFICATIONS_TABLE . ' n, ' . NOTIFICATION_TYPES_TABLE . " nt
|
||||
WHERE nt.notification_type_name = '" . $this->item_type . "'
|
||||
AND n.notification_type_id = nt.notification_type_id
|
||||
ORDER BY user_id ASC, item_id ASC";
|
||||
$result = $this->db->sql_query($sql);
|
||||
$this->assertEquals($expected_after, $this->db->sql_fetchrowset($result));
|
||||
|
@@ -59,10 +59,6 @@ class phpbb_template_template_spacing_test extends phpbb_template_template_test_
|
||||
*/
|
||||
public function test_event($desc, $dataset, $style_names, $file, array $vars, array $block_vars, array $destroy, $expected)
|
||||
{
|
||||
$this->markTestIncomplete(
|
||||
'This test will fail until PHPBB3-11435 is fixed'
|
||||
);
|
||||
|
||||
// Reset the engine state
|
||||
$this->setup_engine_for_events($dataset, $style_names);
|
||||
|
||||
|
@@ -132,6 +132,20 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"xyz\nabc\nabc\nbar\nbar\nabc",
|
||||
),
|
||||
array(
|
||||
'define_advanced.html',
|
||||
array(),
|
||||
array('loop' => array(array(), array(), array(), array(), array(), array(), array()), 'test' => array(array()), 'test.deep' => array(array()), 'test.deep.defines' => array(array())),
|
||||
array(),
|
||||
"abc\nzxc\ncde\nbcd",
|
||||
),
|
||||
array(
|
||||
'define_unclosed.html',
|
||||
array(),
|
||||
array(),
|
||||
array(),
|
||||
"test",
|
||||
),
|
||||
array(
|
||||
'expressions.html',
|
||||
array(),
|
||||
|
@@ -7,5 +7,3 @@
|
||||
{$VALUE}
|
||||
<!-- UNDEFINE $VALUE -->
|
||||
{$VALUE}
|
||||
<!-- DEFINE $VALUE -->
|
||||
|
||||
|
12
tests/template/templates/define_advanced.html
Normal file
12
tests/template/templates/define_advanced.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!-- DEFINE $VALUE -->
|
||||
abc
|
||||
<!-- ENDDEFINE -->
|
||||
{$VALUE}
|
||||
<!-- DEFINE $VALUE1 -->
|
||||
bcd
|
||||
<!-- ENDDEFINE -->
|
||||
<!-- DEFINE $VALUE2 -->
|
||||
cde
|
||||
<!-- ENDDEFINE -->
|
||||
<!-- INCLUDE define_include2.html -->
|
||||
{$INCLUDED_VALUE3}
|
11
tests/template/templates/define_include2.html
Normal file
11
tests/template/templates/define_include2.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- DEFINE $INCLUDED_VALUE1 -->
|
||||
zxc
|
||||
<!-- ENDDEFINE -->
|
||||
<!-- DEFINE $INCLUDED_VALUE2 -->
|
||||
qwe
|
||||
<!-- ENDDEFINE -->
|
||||
{$INCLUDED_VALUE1}
|
||||
<!-- DEFINE $INCLUDED_VALUE3 -->
|
||||
{$VALUE2}
|
||||
{$VALUE1}
|
||||
<!-- ENDDEFINE -->
|
2
tests/template/templates/define_unclosed.html
Normal file
2
tests/template/templates/define_unclosed.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<!-- DEFINE $VALUE -->
|
||||
test
|
@@ -142,6 +142,28 @@ class phpbb_database_test_connection_manager
|
||||
}
|
||||
|
||||
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
switch ($this->config['dbms'])
|
||||
{
|
||||
case 'phpbb_db_driver_mysql':
|
||||
case 'phpbb_db_driver_mysqli':
|
||||
$this->pdo->exec('SET NAMES utf8');
|
||||
|
||||
/*
|
||||
* The phpBB MySQL drivers set the STRICT_ALL_TABLES and
|
||||
* STRICT_TRANS_TABLES flags/modes, so as a minimum requirement
|
||||
* we want to make sure those are set for the PDO side of the
|
||||
* test suite.
|
||||
*
|
||||
* The TRADITIONAL flag implies STRICT_ALL_TABLES and
|
||||
* STRICT_TRANS_TABLES as well as other useful strictness flags
|
||||
* the phpBB MySQL driver does not set.
|
||||
*/
|
||||
$this->pdo->exec("SET SESSION sql_mode='TRADITIONAL'");
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -148,11 +148,13 @@ class phpbb_functional_test_case extends phpbb_test_case
|
||||
self::$config['table_prefix'],
|
||||
array()
|
||||
);
|
||||
$container = new phpbb_mock_container_builder();
|
||||
$container->set('migrator', $migrator);
|
||||
|
||||
$extension_manager = new phpbb_extension_manager(
|
||||
new phpbb_mock_container_builder(),
|
||||
$container,
|
||||
$db,
|
||||
$config,
|
||||
$migrator,
|
||||
new phpbb_filesystem(),
|
||||
self::$config['table_prefix'] . 'ext',
|
||||
dirname(__FILE__) . '/',
|
||||
|
@@ -2,22 +2,38 @@
|
||||
<dataset>
|
||||
<table name="phpbb_users">
|
||||
<column>user_id</column>
|
||||
<column>user_permissions</column>
|
||||
<column>username</column>
|
||||
<column>username_clean</column>
|
||||
<column>user_sig</column>
|
||||
<column>user_occ</column>
|
||||
<column>user_interests</column>
|
||||
<row>
|
||||
<value>1</value>
|
||||
<value></value>
|
||||
<value>Guest</value>
|
||||
<value>guest</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>2</value>
|
||||
<value></value>
|
||||
<value>Admin</value>
|
||||
<value>admin</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3</value>
|
||||
<value></value>
|
||||
<value>Test</value>
|
||||
<value>test</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
||||
|
Reference in New Issue
Block a user