mirror of
https://github.com/redmine/redmine.git
synced 2025-11-04 20:35:57 +01:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user