Allows multiple roles on the same project (#706). Prerequisite for user groups feature.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2726 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2009-05-10 10:54:31 +00:00
parent 814e138c2a
commit 7dccf9fda6
65 changed files with 340 additions and 175 deletions

View File

@@ -18,34 +18,54 @@
require File.dirname(__FILE__) + '/../test_helper'
class MemberTest < Test::Unit::TestCase
fixtures :users, :projects, :roles, :members
fixtures :users, :projects, :roles, :members, :member_roles
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
member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
assert member.save
member.reload
assert_equal 2, member.roles.size
assert_equal Role.find(1), member.roles.sort.first
end
def test_update
assert_equal "eCookbook", @jsmith.project.name
assert_equal "Manager", @jsmith.role.name
assert_equal "Manager", @jsmith.roles.first.name
assert_equal "jsmith", @jsmith.user.login
@jsmith.role = Role.find(2)
@jsmith.mail_notification = !@jsmith.mail_notification
assert @jsmith.save
end
def test_update_roles
assert_equal 1, @jsmith.roles.size
@jsmith.role_ids = [1, 2]
assert @jsmith.save
assert_equal 2, @jsmith.reload.roles.size
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
member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])
# same use can't have more than one membership for a project
assert !member.save
member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [])
# must have one role at least
assert !member.save
end
def test_destroy
@jsmith.destroy
def test_destroy
assert_difference 'Member.count', -1 do
assert_difference 'MemberRole.count', -1 do
@jsmith.destroy
end
end
assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
end
end