summaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/member_test.rb51
-rw-r--r--test/unit/project_test.rb79
-rw-r--r--test/unit/token_test.rb10
-rw-r--r--test/unit/user_preference_test.rb10
-rw-r--r--test/unit/user_test.rb88
5 files changed, 238 insertions, 0 deletions
diff --git a/test/unit/member_test.rb b/test/unit/member_test.rb
new file mode 100644
index 000000000..079782306
--- /dev/null
+++ b/test/unit/member_test.rb
@@ -0,0 +1,51 @@
+# redMine - project management software
+# Copyright (C) 2006 Jean-Philippe Lang
+#
+# 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.
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class MemberTest < Test::Unit::TestCase
+ fixtures :users, :projects, :roles, :members
+
+ def setup
+ @jsmith = Member.find(1)
+ end
+
+ def test_create
+ member = Member.new(:project_id => 1, :user_id => 4, :role_id => 1)
+ assert member.save
+ end
+
+ def test_update
+ assert_equal "eCookbook", @jsmith.project.name
+ assert_equal "Manager", @jsmith.role.name
+ assert_equal "jsmith", @jsmith.user.login
+
+ @jsmith.role = Role.find(2)
+ assert @jsmith.save
+ end
+
+ def test_validate
+ member = Member.new(:project_id => 1, :user_id => 2, :role_id =>2)
+ # same use can't have more than one role for a project
+ assert !member.save
+ end
+
+ def test_destroy
+ @jsmith.destroy
+ assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
+ end
+end
diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb
new file mode 100644
index 000000000..9c8f0c97e
--- /dev/null
+++ b/test/unit/project_test.rb
@@ -0,0 +1,79 @@
+# redMine - project management software
+# Copyright (C) 2006 Jean-Philippe Lang
+#
+# 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.
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class ProjectTest < Test::Unit::TestCase
+ fixtures :projects
+
+ def setup
+ @ecookbook = Project.find(1)
+ @ecookbook_sub1 = Project.find(3)
+ end
+
+ def test_truth
+ assert_kind_of Project, @ecookbook
+ assert_equal "eCookbook", @ecookbook.name
+ end
+
+ def test_update
+ assert_equal "eCookbook", @ecookbook.name
+ @ecookbook.name = "eCook"
+ assert @ecookbook.save, @ecookbook.errors.full_messages.join("; ")
+ @ecookbook.reload
+ assert_equal "eCook", @ecookbook.name
+ end
+
+ def test_validate
+ @ecookbook.name = ""
+ assert !@ecookbook.save
+ assert_equal 1, @ecookbook.errors.count
+ assert_equal l(:activerecord_error_blank), @ecookbook.errors.on(:name)
+ end
+
+ def test_public_projects
+ public_projects = Project.find(:all, :conditions => ["is_public=?", true])
+ assert_equal 3, public_projects.length
+ assert_equal true, public_projects[0].is_public?
+ end
+
+ def test_destroy
+ @ecookbook.destroy
+ assert_raise(ActiveRecord::RecordNotFound) { Project.find(@ecookbook.id) }
+ end
+
+ def test_subproject_ok
+ sub = Project.find(2)
+ sub.parent = @ecookbook
+ assert sub.save
+ assert_equal @ecookbook.id, sub.parent.id
+ @ecookbook.reload
+ assert_equal 3, @ecookbook.projects_count
+ end
+
+ def test_subproject_invalid
+ sub = Project.find(2)
+ sub.parent = @ecookbook_sub1
+ assert !sub.save
+ end
+
+ def test_subproject_invalid_2
+ sub = @ecookbook
+ sub.parent = Project.find(2)
+ assert !sub.save
+ end
+end
diff --git a/test/unit/token_test.rb b/test/unit/token_test.rb
new file mode 100644
index 000000000..1c3820e99
--- /dev/null
+++ b/test/unit/token_test.rb
@@ -0,0 +1,10 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class TokenTest < Test::Unit::TestCase
+ fixtures :tokens
+
+ # Replace this with your real tests.
+ def test_truth
+ assert true
+ end
+end
diff --git a/test/unit/user_preference_test.rb b/test/unit/user_preference_test.rb
new file mode 100644
index 000000000..4675a2652
--- /dev/null
+++ b/test/unit/user_preference_test.rb
@@ -0,0 +1,10 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class UserPreferenceTest < Test::Unit::TestCase
+ fixtures :user_preferences
+
+ # Replace this with your real tests.
+ def test_truth
+ assert true
+ end
+end
diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb
new file mode 100644
index 000000000..211e6554c
--- /dev/null
+++ b/test/unit/user_test.rb
@@ -0,0 +1,88 @@
+# redMine - project management software
+# Copyright (C) 2006 Jean-Philippe Lang
+#
+# 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.
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class UserTest < Test::Unit::TestCase
+ fixtures :users
+
+ def setup
+ @admin = User.find(1)
+ @jsmith = User.find(2)
+ end
+
+ def test_truth
+ assert_kind_of User, @jsmith
+ end
+
+ def test_create
+ user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
+
+ user.login = "jsmith"
+ user.password, user.password_confirmation = "password", "password"
+ # login uniqueness
+ assert !user.save
+ assert_equal 1, user.errors.count
+
+ user.login = "newuser"
+ user.password, user.password_confirmation = "passwd", "password"
+ # password confirmation
+ assert !user.save
+ assert_equal 1, user.errors.count
+
+ user.password, user.password_confirmation = "password", "password"
+ assert user.save
+ end
+
+ def test_update
+ assert_equal "admin", @admin.login
+ @admin.login = "john"
+ assert @admin.save, @admin.errors.full_messages.join("; ")
+ @admin.reload
+ assert_equal "john", @admin.login
+ end
+
+ def test_validate
+ @admin.login = ""
+ assert !@admin.save
+ assert_equal 2, @admin.errors.count
+ end
+
+ def test_password
+ user = User.try_to_login("admin", "admin")
+ assert_kind_of User, user
+ assert_equal "admin", user.login
+ user.password = "hello"
+ assert user.save
+
+ user = User.try_to_login("admin", "hello")
+ assert_kind_of User, user
+ assert_equal "admin", user.login
+ assert_equal User.hash_password("hello"), user.hashed_password
+ end
+
+ def test_lock
+ user = User.try_to_login("jsmith", "jsmith")
+ assert_equal @jsmith, user
+
+ @jsmith.status = User::STATUS_LOCKED
+ assert @jsmith.save
+
+ user = User.try_to_login("jsmith", "jsmith")
+ assert_equal nil, user
+ end
+end