summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2008-11-05 22:10:35 +0000
committerTim Almdal <tnalmdal@shaw.ca>2008-11-05 22:10:35 +0000
commit134bac46d07a4d027ef350c69a6cc8f787bfa6e9 (patch)
tree0cb31e5aac7a7984294be9ac5e289dd1f2e0f3bb
parentdbf0fda99b2751378d924f6f8fda7509eb1c04b3 (diff)
add installation unit tests and corrected a problem where the groups_users pivot table was not populated.
-rw-r--r--modules/gallery_unit_test/controllers/test.php3
-rw-r--r--modules/user/helpers/user_installer.php44
-rw-r--r--modules/user/tests/User_Installer_Test.php55
3 files changed, 83 insertions, 19 deletions
diff --git a/modules/gallery_unit_test/controllers/test.php b/modules/gallery_unit_test/controllers/test.php
index 4a019dcd..5084957b 100644
--- a/modules/gallery_unit_test/controllers/test.php
+++ b/modules/gallery_unit_test/controllers/test.php
@@ -63,6 +63,9 @@ class Test_Controller extends Controller {
core_installer::uninstall();
core_installer::install();
+ user_installer::uninstall();
+ user_installer::install();
+
print new Unit_Test();
}
}
diff --git a/modules/user/helpers/user_installer.php b/modules/user/helpers/user_installer.php
index e27eaaab..3e3af696 100644
--- a/modules/user/helpers/user_installer.php
+++ b/modules/user/helpers/user_installer.php
@@ -19,6 +19,7 @@
*/
class user_installer {
public static function install() {
+ Kohana::log("debug", "user_installer::install");
$db = Database::instance();
try {
$base_version = ORM::factory("module")->where("name", "user")->find()->version;
@@ -26,34 +27,36 @@ class user_installer {
if ($e->getMessage() == "Table modules does not exist in your database.") {
$base_version = 0;
} else {
+ Kohana::log("error", $e);
throw $e;
}
}
+ Kohana::log("debug", "base_version: $base_version");
if ($base_version == 0) {
$db->query("CREATE TABLE IF NOT EXISTS `users` (
- `id` int(9) NOT NULL auto_increment,
- `name` varchar(255) NOT NULL,
- `display_name` char(255) NOT NULL,
- `email` int(9) default NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY(`display_name`))
- ENGINE=InnoDB DEFAULT CHARSET=utf8;");
+ `id` int(9) NOT NULL auto_increment,
+ `name` varchar(255) NOT NULL,
+ `display_name` char(255) NOT NULL,
+ `email` int(9) default NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY(`display_name`))
+ ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$db->query("CREATE TABLE IF NOT EXISTS`groups` (
- `id` int(9) NOT NULL auto_increment,
- `name` char(255) default NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY(`name`))
- ENGINE=InnoDB DEFAULT CHARSET=utf8;");
+ `id` int(9) NOT NULL auto_increment,
+ `name` char(255) default NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY(`name`))
+ ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$db->query("CREATE TABLE IF NOT EXISTS `groups_users` (
- `group_id` int(9) NOT NULL,
- `user_id` int(9) NOT NULL,
- PRIMARY KEY (`group_id`, `user_id`),
- UNIQUE KEY(`user_id`, `group_id`))
- ENGINE=InnoDB DEFAULT CHARSET=utf8;");
-
+ `group_id` int(9) NOT NULL,
+ `user_id` int(9) NOT NULL,
+ PRIMARY KEY (`group_id`, `user_id`),
+ UNIQUE KEY(`user_id`, `group_id`))
+ ENGINE=InnoDB DEFAULT CHARSET=utf8;");
+
$user_module = ORM::factory("module")->where("name", "user")->find();
$user_module->name = "user";
$user_module->version = 1;
@@ -67,8 +70,11 @@ class user_installer {
foreach (array("administrator", "registered") as $group_name) {
$group = ORM::factory("group")->where("name", $group_name)->find();
$group->name = $group_name;
- $group->add($user);
$group->save();
+ if (!$group->add($user)) {
+ /** @todo replace this by throwing an exception once exceptions are implemented */
+ Kohana::Log("debug", "{$user->name} was not added to {$group_name}");
+ }
}
}
}
diff --git a/modules/user/tests/User_Installer_Test.php b/modules/user/tests/User_Installer_Test.php
new file mode 100644
index 00000000..2acfcaeb
--- /dev/null
+++ b/modules/user/tests/User_Installer_Test.php
@@ -0,0 +1,55 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * This test case operates under the assumption that core_installer::install() is called by the
+ * test controller before it starts.
+ */
+class User_Installer_Test extends Unit_Test_Case {
+ public function install_creates_admin_user_test() {
+ $user = ORM::factory('user')->find(1);
+ $this->assert_equal("Gallery Administrator", $user->display_name);
+ $this->assert_equal("admin", $user->name);
+
+ $groups = $user->groups->as_array();
+ $this->assert_equal(2, count($groups));
+ $this->assert_equal("administrator", $groups[0]->name);
+
+ $this->assert_equal("registered", $groups[1]->name);
+ }
+
+ public function install_creates_admininstrator_group_test() {
+ $group = ORM::factory('group')->find(1);
+ $this->assert_equal("administrator", $group->name);
+
+ $users = $group->users->as_array();
+ $this->assert_equal(1, count($users));
+ $this->assert_equal("admin", $users[0]->name);
+ }
+
+ public function install_creates_registered_group_test() {
+ $group = ORM::factory('group')->find(2);
+ $this->assert_equal("registered", $group->name);
+
+ $users = $group->users->as_array();
+ $this->assert_equal(1, count($users));
+ $this->assert_equal("admin", $users[0]->name);
+ }
+}