diff options
author | Tim Almdal <tnalmdal@shaw.ca> | 2008-11-05 22:10:35 +0000 |
---|---|---|
committer | Tim Almdal <tnalmdal@shaw.ca> | 2008-11-05 22:10:35 +0000 |
commit | 134bac46d07a4d027ef350c69a6cc8f787bfa6e9 (patch) | |
tree | 0cb31e5aac7a7984294be9ac5e289dd1f2e0f3bb | |
parent | dbf0fda99b2751378d924f6f8fda7509eb1c04b3 (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.php | 3 | ||||
-rw-r--r-- | modules/user/helpers/user_installer.php | 44 | ||||
-rw-r--r-- | modules/user/tests/User_Installer_Test.php | 55 |
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); + } +} |