aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2014-10-25 16:56:05 -0700
committerNils Adermann <naderman@naderman.de>2014-10-25 16:56:05 -0700
commit26d4483d36ec82f6dc8f4943f289be94302ab7ce (patch)
tree3a14ab74c35a76081d53361b143c454f21b7473e
parentf22cd2d7348dc3a103e53aa773b6f91abe998ddd (diff)
parent4859cec0c50cc522e73dba5555def308835b1357 (diff)
downloadforums-26d4483d36ec82f6dc8f4943f289be94302ab7ce.tar
forums-26d4483d36ec82f6dc8f4943f289be94302ab7ce.tar.gz
forums-26d4483d36ec82f6dc8f4943f289be94302ab7ce.tar.bz2
forums-26d4483d36ec82f6dc8f4943f289be94302ab7ce.tar.xz
forums-26d4483d36ec82f6dc8f4943f289be94302ab7ce.zip
Merge branch 'prep-release-3.1.0' into develop-ascraeus
* prep-release-3.1.0: [ticket/13207] Add notification manager mock to user_add method in tests [ticket/13207] Move default user notifications settings to user_add() [ticket/13207] Add default subscription options for newly registered users
-rw-r--r--phpBB/includes/functions_user.php28
-rw-r--r--tests/functional/registration_test.php16
-rw-r--r--tests/test_framework/phpbb_functional_test_case.php10
3 files changed, 45 insertions, 9 deletions
diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php
index e4479f07b0..f79a8998c4 100644
--- a/phpBB/includes/functions_user.php
+++ b/phpBB/includes/functions_user.php
@@ -161,9 +161,10 @@ function user_update_name($old_name, $new_name)
*
* @param mixed $user_row An array containing the following keys (and the appropriate values): username, group_id (the group to place the user in), user_email and the user_type(usually 0). Additional entries not overridden by defaults will be forwarded.
* @param string $cp_data custom profile fields, see custom_profile::build_insert_sql_array
+* @param array $notifications_data The notifications settings for the new user
* @return the new user's ID.
*/
-function user_add($user_row, $cp_data = false)
+function user_add($user_row, $cp_data = false, $notifications_data = null)
{
global $db, $user, $auth, $config, $phpbb_root_path, $phpEx;
global $phpbb_dispatcher, $phpbb_container;
@@ -347,6 +348,31 @@ function user_add($user_row, $cp_data = false)
set_config('newest_user_colour', $row['group_colour'], true);
}
+ // Use default notifications settings if notifications_data is not set
+ if ($notifications_data === null)
+ {
+ $notifications_data = array(
+ array(
+ 'item_type' => 'notification.type.post',
+ 'method' => 'notification.method.email',
+ ),
+ array(
+ 'item_type' => 'notification.type.topic',
+ 'method' => 'notification.method.email',
+ ),
+ );
+ }
+
+ // Subscribe user to notifications if necessary
+ if (!empty($notifications_data))
+ {
+ $phpbb_notifications = $phpbb_container->get('notification_manager');
+ foreach ($notifications_data as $subscription)
+ {
+ $phpbb_notifications->add_subscription($subscription['item_type'], 0, $subscription['method'], $user_id);
+ }
+ }
+
/**
* Event that returns user id, user detals and user CPF of newly registared user
*
diff --git a/tests/functional/registration_test.php b/tests/functional/registration_test.php
index 45a684db19..26473c4fcd 100644
--- a/tests/functional/registration_test.php
+++ b/tests/functional/registration_test.php
@@ -45,12 +45,24 @@ class phpbb_functional_registration_test extends phpbb_functional_test_case
$form = $crawler->selectButton('Submit')->form(array(
'username' => 'user-reg-test',
'email' => 'user-reg-test@phpbb.com',
- 'new_password' => 'testtest',
- 'password_confirm' => 'testtest',
+ 'new_password' => 'user-reg-testuser-reg-test',
+ 'password_confirm' => 'user-reg-testuser-reg-test',
));
$form['tz']->select('Europe/Berlin');
$crawler = self::submit($form);
$this->assertContainsLang('ACCOUNT_ADDED', $crawler->filter('#message')->text());
}
+
+ /**
+ * @depends test_register_new_account
+ */
+ public function test_default_subscription_options()
+ {
+ $this->login('user-reg-test');
+ $crawler = self::request('GET', 'ucp.php?i=ucp_notifications&mode=notification_options&sid=' . $this->sid);
+ $form_values = $crawler->selectButton('Submit')->form()->getValues();
+ $this->assertEquals(1, $form_values['notification.type.post_notification.method.email']);
+ $this->assertEquals(1, $form_values['notification.type.topic_notification.method.email']);
+ }
}
diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index 49cc72363e..840ff981cb 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -556,12 +556,10 @@ class phpbb_functional_test_case extends phpbb_test_case
$cache = new phpbb_mock_null_cache;
$cache_driver = new \phpbb\cache\driver\null();
- $phpbb_container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
- $phpbb_container
- ->expects($this->any())
- ->method('get')
- ->with('cache.driver')
- ->will($this->returnValue($cache_driver));
+ $phpbb_container = new phpbb_mock_container_builder();
+ $phpbb_container->set('cache.driver', $cache_driver);
+ $phpbb_notifications = new phpbb_mock_notification_manager();
+ $phpbb_container->set('notification_manager', $phpbb_notifications);
if (!function_exists('utf_clean_string'))
{