aboutsummaryrefslogtreecommitdiffstats
path: root/tests/mock
diff options
context:
space:
mode:
authorNathan Guse <nathaniel.guse@gmail.com>2012-11-20 18:14:48 -0600
committerNathan Guse <nathaniel.guse@gmail.com>2012-11-20 22:54:16 -0600
commit2afb8b9df873c3f9572a32ab7a62ea8ba8d8a45b (patch)
treeab584092e7e54f50a15dd9a22ed5b31200ea03f1 /tests/mock
parentd2187424da6ff2e0d4a69a6e21bac7e92f68335a (diff)
downloadforums-2afb8b9df873c3f9572a32ab7a62ea8ba8d8a45b.tar
forums-2afb8b9df873c3f9572a32ab7a62ea8ba8d8a45b.tar.gz
forums-2afb8b9df873c3f9572a32ab7a62ea8ba8d8a45b.tar.bz2
forums-2afb8b9df873c3f9572a32ab7a62ea8ba8d8a45b.tar.xz
forums-2afb8b9df873c3f9572a32ab7a62ea8ba8d8a45b.zip
[ticket/11103] Create user loader class, update for DIC
Create a very basic user loader class to handle querying/storing user data in a centralized location. Use DIC collection service for notification types/methods. Cleanup unused dependencies. Fix some other issues. PHPBB3-11103
Diffstat (limited to 'tests/mock')
-rw-r--r--tests/mock/container_builder.php19
-rw-r--r--tests/mock/notifications_notification_manager.php69
2 files changed, 88 insertions, 0 deletions
diff --git a/tests/mock/container_builder.php b/tests/mock/container_builder.php
index 8a81dd72d1..734d3e1741 100644
--- a/tests/mock/container_builder.php
+++ b/tests/mock/container_builder.php
@@ -11,6 +11,9 @@ use Symfony\Component\DependencyInjection\ScopeInterface;
class phpbb_mock_container_builder implements ContainerInterface
{
+ protected $services = array();
+ protected $parameters = array();
+
/**
* Sets a service.
*
@@ -22,6 +25,7 @@ class phpbb_mock_container_builder implements ContainerInterface
*/
public function set($id, $service, $scope = self::SCOPE_CONTAINER)
{
+ $this->services[$id] = $service;
}
/**
@@ -42,6 +46,12 @@ class phpbb_mock_container_builder implements ContainerInterface
*/
public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE)
{
+ if ($this->has($id))
+ {
+ return $this->services[$id];
+ }
+
+ throw new Exception('Could not find service: ' . $id);
}
/**
@@ -55,6 +65,7 @@ class phpbb_mock_container_builder implements ContainerInterface
*/
public function has($id)
{
+ return isset($this->services[$id]);
}
/**
@@ -70,6 +81,12 @@ class phpbb_mock_container_builder implements ContainerInterface
*/
public function getParameter($name)
{
+ if ($this->hasParameter($name))
+ {
+ return $this->parameters[$name];
+ }
+
+ throw new Exception('Could not find parameter: ' . $name);
}
/**
@@ -83,6 +100,7 @@ class phpbb_mock_container_builder implements ContainerInterface
*/
public function hasParameter($name)
{
+ return isset($this->parameters[$name]);
}
/**
@@ -95,6 +113,7 @@ class phpbb_mock_container_builder implements ContainerInterface
*/
public function setParameter($name, $value)
{
+ $this->parameters[$name] = $value;
}
/**
diff --git a/tests/mock/notifications_notification_manager.php b/tests/mock/notifications_notification_manager.php
new file mode 100644
index 0000000000..81f24e67c0
--- /dev/null
+++ b/tests/mock/notifications_notification_manager.php
@@ -0,0 +1,69 @@
+<?php
+/**
+*
+* @package notifications
+* @copyright (c) 2012 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+/**
+* Notifications service class
+* @package notifications
+*/
+class phpbb_mock_notifications_notification_manager extends phpbb_notification_manager
+{
+ public function set_var($name, $value)
+ {
+ $this->$name = $value;
+ }
+
+ // Extra dependencies for get_*_class functions
+ protected $auth = null;
+ protected $cache = null;
+ protected $config = null;
+ public function setDependencies($auth, $cache, $config)
+ {
+ $this->auth = $auth;
+ $this->cache = $cache;
+ $this->config = $config;
+ }
+
+ /**
+ * Helper to get the notifications item type class and set it up
+ */
+ public function get_item_type_class($item_type, $data = array())
+ {
+ $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->notifications_table, $this->user_notifications_table);
+
+ $item->set_notification_manager($this);
+
+ $item->set_initial_data($data);
+
+ return $item;
+ }
+
+ /**
+ * Helper to get the notifications method class and set it up
+ */
+ public function get_method_class($method_name)
+ {
+ $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->notifications_table, $this->user_notifications_table);
+
+ $method->set_notification_manager($this);
+
+ return $method;
+ }
+}