aboutsummaryrefslogtreecommitdiff
path: root/tests/TestBase.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/TestBase.php')
-rw-r--r--tests/TestBase.php159
1 files changed, 159 insertions, 0 deletions
diff --git a/tests/TestBase.php b/tests/TestBase.php
new file mode 100644
index 0000000..4bffd1b
--- /dev/null
+++ b/tests/TestBase.php
@@ -0,0 +1,159 @@
+<?php
+/**
+ * SemanticScuttle - your social bookmark manager.
+ *
+ * PHP version 5.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+
+/**
+ * Base unittest class that provides several helper methods.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+class TestBase extends PHPUnit_Framework_TestCase
+{
+ /**
+ * Create a new bookmark.
+ *
+ * @param integer $user User ID the bookmark shall belong
+ * @param string $address Bookmark address to use
+ * @param integer $status Bookmark visibility
+ * @param array $tags Array of tags to attach. If "null" is given,
+ * it will automatically be "unittest"
+ * @param string $title Bookmark title
+ * @param string $date strtotime-compatible string
+ *
+ * @return integer ID of bookmark
+ *
+ * @see SemanticScuttle_Service_Bookmark::addBookmark()
+ */
+ protected function addBookmark(
+ $user = null, $address = null, $status = 0,
+ $tags = null, $title = null, $date = null
+ ) {
+ if ($user === null) {
+ $user = $this->addUser();
+ }
+ if ($tags === null) {
+ $tags = array('unittest');
+ }
+
+ $bs = SemanticScuttle_Service_Factory::get('Bookmark');
+ $rand = rand();
+
+ if ($address === null) {
+ $address = 'http://example.org/' . $rand;
+ }
+ if ($title === null) {
+ $title = 'unittest bookmark #' . $rand;
+ }
+
+ $bid = $bs->addBookmark(
+ $address,
+ $title,
+ 'description',
+ null,
+ $status,
+ $tags,
+ null, $date, false, false,
+ $user
+ );
+ return $bid;
+ }
+
+
+
+ /**
+ * Creates a new user in the database.
+ *
+ * @param string $username Username, may be null
+ * @param string $password Password, may be null
+ * @param mixed $privateKey String private key or boolean true to generate one
+ *
+ * @return integer ID of user
+ *
+ * @uses addUserData()
+ */
+ protected function addUser(
+ $username = null, $password = null, $privateKey = null
+ ) {
+ return rreset($this->addUserData($username, $password, $privateKey));
+ }
+
+
+
+ /**
+ * Creates a new user in the database and returns id, username and password.
+ *
+ * @param string $username Username, may be null
+ * @param string $password Password, may be null
+ * @param mixed $privateKey String private key or boolean true to generate one
+ *
+ * @return array ID of user, Name of user, password of user, privateKey
+ */
+ protected function addUserData(
+ $username = null, $password = null, $privateKey = null
+ ) {
+ $us = SemanticScuttle_Service_Factory::get('User');
+ $rand = rand();
+
+ if ($username === null) {
+ $username = 'unittestuser-' . $rand;
+ }
+ if ($password === null) {
+ $password = $rand;
+ }
+ if ($privateKey === true) {
+ $privateKey = $this->us->getNewPrivateKey();
+ }
+
+ $uid = $us->addUser(
+ $username,
+ $password,
+ 'unittest-' . $rand . '@example.org',
+ $privateKey
+ );
+ return array($uid, $username, $password, $privateKey);
+ }
+
+
+
+ /**
+ * Retrieves the UID of an admin user.
+ * If that user does not exist in the database, it is created.
+ *
+ * @return integer UID of admin user
+ */
+ protected function getAdminUser()
+ {
+ if (count($GLOBALS['admin_users']) == 0) {
+ $this->fail('No admin users configured');
+ }
+ $adminUserName = reset($GLOBALS['admin_users']);
+
+ $us = SemanticScuttle_Service_Factory::get('User');
+ $uid = $us->getIdFromUser($adminUserName);
+ if ($uid === null) {
+ //that user does not exist in the database; create it
+ $uid = $us->addUser(
+ $adminUserName,
+ rand(),
+ 'unittest-admin-' . $adminUserName . '@example.org'
+ );
+ }
+
+ return $uid;
+ }
+}
+
+?>