From 3703de63dd5208e0431d89e29affe3bf39cdd25a Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Mon, 10 Jun 2013 16:45:27 +0200 Subject: [PATCH 01/12] [ticket/11600] Increase code test coverage of avatar manager Currently, not all methods and their possible behaviors are tested with unit tests. Add them for better code coverage. PHPBB3-11600 --- tests/avatar/manager_test.php | 114 +++++++++++++++++++++++++++------- 1 file changed, 92 insertions(+), 22 deletions(-) diff --git a/tests/avatar/manager_test.php b/tests/avatar/manager_test.php index cb895b521a..d8ab1f38ae 100644 --- a/tests/avatar/manager_test.php +++ b/tests/avatar/manager_test.php @@ -11,6 +11,8 @@ require_once dirname(__FILE__) . '/driver/foobar.php'; class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase { + protected $user; + public function setUp() { global $phpbb_root_path, $phpEx; @@ -19,24 +21,35 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase $this->phpbb_container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface'); $this->phpbb_container->expects($this->any()) ->method('get') - ->with('avatar.driver.foobar')->will($this->returnValue('avatar.driver.foobar')); + ->will($this->returnArgument(0)); // Prepare dependencies for avatar manager and driver $config = new phpbb_config(array()); $request = $this->getMock('phpbb_request'); $cache = $this->getMock('phpbb_cache_driver_interface'); + // $this->avatar_foobar will be needed later on $this->avatar_foobar = $this->getMock('phpbb_avatar_driver_foobar', array('get_name'), array($config, $phpbb_root_path, $phpEx, $cache)); $this->avatar_foobar->expects($this->any()) - ->method('get_name') - ->will($this->returnValue('avatar.driver.foobar')); + ->method('get_name') + ->will($this->returnValue('avatar.driver.foobar')); + // barfoo driver can't be mocked with constructor arguments $this->avatar_barfoo = $this->getMock('phpbb_avatar_driver_barfoo', array('get_name')); $this->avatar_barfoo->expects($this->any()) - ->method('get_name') - ->will($this->returnValue('avatar.driver.barfoo')); - + ->method('get_name') + ->will($this->returnValue('avatar.driver.barfoo')); $avatar_drivers = array($this->avatar_foobar, $this->avatar_barfoo); + foreach ($this->avatar_drivers() as $driver) + { + $cur_avatar = $this->getMock('phpbb_avatar_driver_' . $driver, array('get_name'), array($config, $phpbb_root_path, $phpEx, $cache)); + $cur_avatar->expects($this->any()) + ->method('get_name') + ->will($this->returnValue('avatar.driver.' . $driver)); + $config['allow_avatar_' . get_class($cur_avatar)] = false; + $avatar_drivers[] = $cur_avatar; + } + $config['allow_avatar_' . get_class($this->avatar_foobar)] = true; $config['allow_avatar_' . get_class($this->avatar_barfoo)] = false; @@ -44,28 +57,27 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase $this->manager = new phpbb_avatar_manager($config, $avatar_drivers, $this->phpbb_container); } - public function test_get_driver() + protected function avatar_drivers() { - $driver = $this->manager->get_driver('avatar.driver.foobar', false); - $this->assertEquals('avatar.driver.foobar', $driver); - - $driver = $this->manager->get_driver('avatar.driver.foo_wrong', false); - $this->assertNull($driver); - - $driver = $this->manager->get_driver('avatar.driver.foobar'); - $this->assertEquals('avatar.driver.foobar', $driver); - - $driver = $this->manager->get_driver('avatar.driver.foo_wrong'); - $this->assertNull($driver); + return array( + 'local', + 'upload', + 'remote', + 'gravatar', + ); } public function test_get_all_drivers() { $drivers = $this->manager->get_all_drivers(); - $this->assertArrayHasKey('avatar.driver.foobar', $drivers); - $this->assertArrayHasKey('avatar.driver.barfoo', $drivers); - $this->assertEquals('avatar.driver.foobar', $drivers['avatar.driver.foobar']); - $this->assertEquals('avatar.driver.barfoo', $drivers['avatar.driver.barfoo']); + $this->assertEquals(array( + 'avatar.driver.barfoo' => 'avatar.driver.barfoo', + 'avatar.driver.foobar' => 'avatar.driver.foobar', + 'avatar.driver.local' => 'avatar.driver.local', + 'avatar.driver.remote' => 'avatar.driver.remote', + 'avatar.driver.upload' => 'avatar.driver.upload', + 'avatar.driver.gravatar' => 'avatar.driver.gravatar', + ), $drivers); } public function test_get_enabled_drivers() @@ -76,6 +88,30 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase $this->assertEquals('avatar.driver.foobar', $drivers['avatar.driver.foobar']); } + public function get_driver_data() + { + return array( + array('avatar.driver.foobar', 'avatar.driver.foobar', false), + array('avatar.driver.foo_wrong', NULL, false), + array('avatar.driver.foobar', 'avatar.driver.foobar'), + array('avatar.driver.foo_wrong', NULL), + array('avatar.driver.local', 'avatar.driver.local', false), + array(AVATAR_GALLERY, 'avatar.driver.local', false), + array(AVATAR_UPLOAD, 'avatar.driver.upload', false), + array(AVATAR_REMOTE, 'avatar.driver.remote', false), + array(AVATAR_GALLERY, NULL), + ); + } + + /** + * @dataProvider get_driver_data + */ + public function test_get_driver($driver_name, $expected, $enabled_only = true) + { + $driver = $this->manager->get_driver($driver_name, $enabled_only); + $this->assertEquals($expected, $driver); + } + public function test_get_avatar_settings() { $avatar_settings = $this->manager->get_avatar_settings($this->avatar_foobar); @@ -157,4 +193,38 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase $this->assertArrayHasKey($key, $cleaned_row); } } + + public function test_clean_driver_name() + { + $this->assertEquals('avatar.driver.local', $this->manager->clean_driver_name('avatar_driver_local')); + } + + public function test_prepare_driver_name() + { + $this->assertEquals('avatar_driver_local', $this->manager->prepare_driver_name('avatar.driver.local')); + } + + public function test_localize_errors() + { + $this->user = $this->getMock('phpbb_user'); + $lang_array = array( + array('FOOBAR_OFF', 'foobar_off'), + array('FOOBAR_EXPLAIN', 'FOOBAR_EXPLAIN %s'), + ); + $this->user->expects($this->any()) + ->method('lang') + ->will($this->returnValueMap($lang_array)); + + // Pass error as string + $this->assertEquals(array('foobar_off'), $this->manager->localize_errors($this->user, array('FOOBAR_OFF'))); + + // Pass error as array for vsprintf() + $this->assertEquals(array('FOOBAR_EXPLAIN foo'), $this->manager->localize_errors($this->user, array(array('FOOBAR_EXPLAIN', 'foo')))); + + // Pass both types + $this->assertEquals(array('foobar_off', 'FOOBAR_EXPLAIN foo'), $this->manager->localize_errors($this->user, array( + 'FOOBAR_OFF', + array('FOOBAR_EXPLAIN', 'foo'), + ))); + } } From 25acf3f74cd5ea42dbdf23f5743feb17014c22a0 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Tue, 25 Jun 2013 11:31:15 +0200 Subject: [PATCH 02/12] =?UTF-8?q?[=C5=A7icket/11600]=20Split=20get=20drive?= =?UTF-8?q?r=20tests=20into=20tests=20for=20all=20and=20only=20enabled=20o?= =?UTF-8?q?nes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PHPBB3-11600 --- tests/avatar/manager_test.php | 44 +++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/tests/avatar/manager_test.php b/tests/avatar/manager_test.php index d8ab1f38ae..58cad06c5d 100644 --- a/tests/avatar/manager_test.php +++ b/tests/avatar/manager_test.php @@ -88,27 +88,51 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase $this->assertEquals('avatar.driver.foobar', $drivers['avatar.driver.foobar']); } - public function get_driver_data() + public function get_driver_data_enabled() { return array( - array('avatar.driver.foobar', 'avatar.driver.foobar', false), - array('avatar.driver.foo_wrong', NULL, false), array('avatar.driver.foobar', 'avatar.driver.foobar'), array('avatar.driver.foo_wrong', NULL), - array('avatar.driver.local', 'avatar.driver.local', false), - array(AVATAR_GALLERY, 'avatar.driver.local', false), - array(AVATAR_UPLOAD, 'avatar.driver.upload', false), - array(AVATAR_REMOTE, 'avatar.driver.remote', false), + array('avatar.driver.foobar', 'avatar.driver.foobar'), + array('avatar.driver.foo_wrong', NULL), + array('avatar.driver.local', NULL), + array(AVATAR_GALLERY, NULL), + array(AVATAR_UPLOAD, NULL), + array(AVATAR_REMOTE, NULL), array(AVATAR_GALLERY, NULL), ); } /** - * @dataProvider get_driver_data + * @dataProvider get_driver_data_enabled */ - public function test_get_driver($driver_name, $expected, $enabled_only = true) + public function test_get_driver_enabled($driver_name, $expected) { - $driver = $this->manager->get_driver($driver_name, $enabled_only); + $driver = $this->manager->get_driver($driver_name); + $this->assertEquals($expected, $driver); + } + + public function get_driver_data_all() + { + return array( + array('avatar.driver.foobar', 'avatar.driver.foobar'), + array('avatar.driver.foo_wrong', NULL), + array('avatar.driver.foobar', 'avatar.driver.foobar'), + array('avatar.driver.foo_wrong', NULL), + array('avatar.driver.local', 'avatar.driver.local'), + array(AVATAR_GALLERY, 'avatar.driver.local'), + array(AVATAR_UPLOAD, 'avatar.driver.upload'), + array(AVATAR_REMOTE, 'avatar.driver.remote'), + array(AVATAR_GALLERY, 'avatar.driver.local'), + ); + } + + /** + * @dataProvider get_driver_data_all + */ + public function test_get_driver_all($driver_name, $expected) + { + $driver = $this->manager->get_driver($driver_name, false); $this->assertEquals($expected, $driver); } From 72377075f465119241026728874e35791bbd1f0a Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Tue, 25 Jun 2013 11:35:04 +0200 Subject: [PATCH 03/12] [ticket/11600] Use local variable for $user in test_localize_errors PHPBB3-11600 --- tests/avatar/manager_test.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tests/avatar/manager_test.php b/tests/avatar/manager_test.php index 58cad06c5d..4d332e6b0d 100644 --- a/tests/avatar/manager_test.php +++ b/tests/avatar/manager_test.php @@ -11,8 +11,6 @@ require_once dirname(__FILE__) . '/driver/foobar.php'; class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase { - protected $user; - public function setUp() { global $phpbb_root_path, $phpEx; @@ -230,23 +228,23 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase public function test_localize_errors() { - $this->user = $this->getMock('phpbb_user'); + $user = $this->getMock('phpbb_user'); $lang_array = array( array('FOOBAR_OFF', 'foobar_off'), array('FOOBAR_EXPLAIN', 'FOOBAR_EXPLAIN %s'), ); - $this->user->expects($this->any()) + $user->expects($this->any()) ->method('lang') ->will($this->returnValueMap($lang_array)); // Pass error as string - $this->assertEquals(array('foobar_off'), $this->manager->localize_errors($this->user, array('FOOBAR_OFF'))); + $this->assertEquals(array('foobar_off'), $this->manager->localize_errors($user, array('FOOBAR_OFF'))); // Pass error as array for vsprintf() - $this->assertEquals(array('FOOBAR_EXPLAIN foo'), $this->manager->localize_errors($this->user, array(array('FOOBAR_EXPLAIN', 'foo')))); + $this->assertEquals(array('FOOBAR_EXPLAIN foo'), $this->manager->localize_errors($user, array(array('FOOBAR_EXPLAIN', 'foo')))); // Pass both types - $this->assertEquals(array('foobar_off', 'FOOBAR_EXPLAIN foo'), $this->manager->localize_errors($this->user, array( + $this->assertEquals(array('foobar_off', 'FOOBAR_EXPLAIN foo'), $this->manager->localize_errors($user, array( 'FOOBAR_OFF', array('FOOBAR_EXPLAIN', 'foo'), ))); From 6fc997924c2c9792c8151db67e3273202951de3e Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Tue, 25 Jun 2013 11:44:37 +0200 Subject: [PATCH 04/12] [ticket/11600] Use lowercase null and remove duplicate test cases PHPBB3-11600 --- tests/avatar/manager_test.php | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/tests/avatar/manager_test.php b/tests/avatar/manager_test.php index 4d332e6b0d..ec2cba3f53 100644 --- a/tests/avatar/manager_test.php +++ b/tests/avatar/manager_test.php @@ -90,14 +90,12 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase { return array( array('avatar.driver.foobar', 'avatar.driver.foobar'), - array('avatar.driver.foo_wrong', NULL), - array('avatar.driver.foobar', 'avatar.driver.foobar'), - array('avatar.driver.foo_wrong', NULL), - array('avatar.driver.local', NULL), - array(AVATAR_GALLERY, NULL), - array(AVATAR_UPLOAD, NULL), - array(AVATAR_REMOTE, NULL), - array(AVATAR_GALLERY, NULL), + array('avatar.driver.foo_wrong', null), + array('avatar.driver.local', null), + array(AVATAR_GALLERY, null), + array(AVATAR_UPLOAD, null), + array(AVATAR_REMOTE, null), + array(AVATAR_GALLERY, null), ); } @@ -114,9 +112,7 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase { return array( array('avatar.driver.foobar', 'avatar.driver.foobar'), - array('avatar.driver.foo_wrong', NULL), - array('avatar.driver.foobar', 'avatar.driver.foobar'), - array('avatar.driver.foo_wrong', NULL), + array('avatar.driver.foo_wrong', null), array('avatar.driver.local', 'avatar.driver.local'), array(AVATAR_GALLERY, 'avatar.driver.local'), array(AVATAR_UPLOAD, 'avatar.driver.upload'), From 5afcb1d5f4f642d3ad6d8c1a98295e6b115d9a77 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Thu, 4 Jul 2013 21:15:02 +0200 Subject: [PATCH 05/12] [ticket/11600] Remove duplicate test case PHPBB3-11600 --- tests/avatar/manager_test.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/avatar/manager_test.php b/tests/avatar/manager_test.php index ec2cba3f53..4ebe79c9cd 100644 --- a/tests/avatar/manager_test.php +++ b/tests/avatar/manager_test.php @@ -95,7 +95,6 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase array(AVATAR_GALLERY, null), array(AVATAR_UPLOAD, null), array(AVATAR_REMOTE, null), - array(AVATAR_GALLERY, null), ); } @@ -117,7 +116,6 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase array(AVATAR_GALLERY, 'avatar.driver.local'), array(AVATAR_UPLOAD, 'avatar.driver.upload'), array(AVATAR_REMOTE, 'avatar.driver.remote'), - array(AVATAR_GALLERY, 'avatar.driver.local'), ); } From 600d3bd1f61c83c339be56eac0aa5ee8e9353fbb Mon Sep 17 00:00:00 2001 From: Vjacheslav Trushkin Date: Thu, 23 May 2013 11:02:29 +0300 Subject: [PATCH 06/12] [ticket/11553] Move bulletin points to pseudo class Move bulletin points for .linklist lists to pseudo class Group pseudo classes for .linklist.bulletin and .icon-notification PHPBB3-11553 --- phpBB/styles/prosilver/template/forum_fn.js | 19 +++++++++++ .../styles/prosilver/template/index_body.html | 11 +++++-- .../prosilver/template/overall_footer.html | 23 +++++++------ .../prosilver/template/overall_header.html | 15 +++++---- phpBB/styles/prosilver/theme/buttons.css | 14 ++------ phpBB/styles/prosilver/theme/common.css | 32 +++++++++++++++++++ 6 files changed, 85 insertions(+), 29 deletions(-) diff --git a/phpBB/styles/prosilver/template/forum_fn.js b/phpBB/styles/prosilver/template/forum_fn.js index bb29f00490..019536ef86 100644 --- a/phpBB/styles/prosilver/template/forum_fn.js +++ b/phpBB/styles/prosilver/template/forum_fn.js @@ -385,3 +385,22 @@ function apply_onkeypress_event() { } jQuery(document).ready(apply_onkeypress_event); + +/** +* Adjust HTML code for IE8 and older versions +*/ +(function($) { + $(document).ready(function() { + var test = document.createElement('div'), + oldBrowser = (typeof test.style.borderRadius == 'undefined'); + delete test; + + if (!oldBrowser) { + return; + } + + // Fix .linkslist.bulletin lists + $('ul.linklist.bulletin li:first-child, ul.linklist.bulletin li.rightside:last-child').addClass('no-bulletin'); + }); +})(jQuery); + diff --git a/phpBB/styles/prosilver/template/index_body.html b/phpBB/styles/prosilver/template/index_body.html index 57ad540a4a..e0a9279738 100644 --- a/phpBB/styles/prosilver/template/index_body.html +++ b/phpBB/styles/prosilver/template/index_body.html @@ -4,9 +4,16 @@

{CURRENT_TIME}
{L_MCP} ]

{CURRENT_TIME}

- -