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,7 +18,7 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ActivityTest < Test::Unit::TestCase
|
||||
fixtures :projects, :versions, :attachments, :users, :roles, :members, :issues, :journals, :journal_details,
|
||||
fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
|
||||
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages
|
||||
|
||||
def setup
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ChangesetTest < Test::Unit::TestCase
|
||||
fixtures :projects, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :users, :members, :trackers
|
||||
fixtures :projects, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :users, :members, :member_roles, :trackers
|
||||
|
||||
def setup
|
||||
end
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class IssueTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :members,
|
||||
fixtures :projects, :users, :members, :member_roles,
|
||||
:trackers, :projects_trackers,
|
||||
:issue_statuses, :issue_categories,
|
||||
:enumerations,
|
||||
@@ -242,6 +242,10 @@ class IssueTest < Test::Unit::TestCase
|
||||
assert !Issue.new(:due_date => 1.day.ago.to_date, :status => IssueStatus.find(:first, :conditions => {:is_closed => true})).overdue?
|
||||
end
|
||||
|
||||
def test_assignable_users
|
||||
assert_kind_of User, Issue.find(1).assignable_users.first
|
||||
end
|
||||
|
||||
def test_create_should_send_email_notification
|
||||
ActionMailer::Base.deliveries.clear
|
||||
issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 3, :status_id => 1, :priority => Enumeration.priorities.first, :subject => 'test_create', :estimated_hours => '1:30')
|
||||
|
||||
@@ -22,6 +22,7 @@ class MailHandlerTest < Test::Unit::TestCase
|
||||
:enabled_modules,
|
||||
:roles,
|
||||
:members,
|
||||
:member_roles,
|
||||
:issues,
|
||||
:issue_statuses,
|
||||
:workflows,
|
||||
|
||||
@@ -19,7 +19,7 @@ require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class MailerTest < Test::Unit::TestCase
|
||||
include Redmine::I18n
|
||||
fixtures :projects, :issues, :users, :members, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
|
||||
fixtures :projects, :issues, :users, :members, :member_roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
|
||||
|
||||
def test_generated_links_in_emails
|
||||
ActionMailer::Base.deliveries.clear
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class MessageTest < Test::Unit::TestCase
|
||||
fixtures :projects, :roles, :members, :boards, :messages, :users, :watchers
|
||||
fixtures :projects, :roles, :members, :member_roles, :boards, :messages, :users, :watchers
|
||||
|
||||
def setup
|
||||
@board = Board.find(1)
|
||||
@@ -116,7 +116,7 @@ class MessageTest < Test::Unit::TestCase
|
||||
author = message.author
|
||||
assert message.editable_by?(author)
|
||||
|
||||
author.role_for_project(message.project).remove_permission!(:edit_own_messages)
|
||||
author.roles_for_project(message.project).first.remove_permission!(:edit_own_messages)
|
||||
assert !message.reload.editable_by?(author.reload)
|
||||
end
|
||||
|
||||
@@ -125,7 +125,7 @@ class MessageTest < Test::Unit::TestCase
|
||||
author = message.author
|
||||
assert message.destroyable_by?(author)
|
||||
|
||||
author.role_for_project(message.project).remove_permission!(:delete_own_messages)
|
||||
author.roles_for_project(message.project).first.remove_permission!(:delete_own_messages)
|
||||
assert !message.reload.destroyable_by?(author.reload)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class NewsTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :roles, :members, :enabled_modules, :news
|
||||
fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news
|
||||
|
||||
def valid_news
|
||||
{ :title => 'Test news', :description => 'Lorem ipsum etc', :author => User.find(:first) }
|
||||
|
||||
@@ -20,8 +20,8 @@ require File.dirname(__FILE__) + '/../test_helper'
|
||||
class ProjectTest < Test::Unit::TestCase
|
||||
fixtures :projects, :enabled_modules,
|
||||
:issues, :issue_statuses, :journals, :journal_details,
|
||||
:users, :members, :roles, :projects_trackers, :trackers, :boards,
|
||||
:queries
|
||||
:users, :members, :member_roles, :roles, :projects_trackers, :trackers, :boards,
|
||||
:queries
|
||||
|
||||
def setup
|
||||
@ecookbook = Project.find(1)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class QueryTest < Test::Unit::TestCase
|
||||
fixtures :projects, :enabled_modules, :users, :members, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :watchers, :custom_fields, :custom_values, :versions, :queries
|
||||
fixtures :projects, :enabled_modules, :users, :members, :member_roles, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :watchers, :custom_fields, :custom_values, :versions, :queries
|
||||
|
||||
def test_custom_fields_for_all_projects_should_be_available_in_global_queries
|
||||
query = Query.new(:project => nil, :name => '_')
|
||||
|
||||
@@ -19,7 +19,8 @@ require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class SearchTest < Test::Unit::TestCase
|
||||
fixtures :users,
|
||||
:members,
|
||||
:members,
|
||||
:member_roles,
|
||||
:projects,
|
||||
:roles,
|
||||
:enabled_modules,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class UserTest < Test::Unit::TestCase
|
||||
fixtures :users, :members, :projects
|
||||
fixtures :users, :members, :projects, :roles, :member_roles
|
||||
|
||||
def setup
|
||||
@admin = User.find(1)
|
||||
@@ -130,14 +130,14 @@ class UserTest < Test::Unit::TestCase
|
||||
assert_equal key, @jsmith.rss_key
|
||||
end
|
||||
|
||||
def test_role_for_project
|
||||
def test_roles_for_project
|
||||
# user with a role
|
||||
role = @jsmith.role_for_project(Project.find(1))
|
||||
assert_kind_of Role, role
|
||||
assert_equal "Manager", role.name
|
||||
roles = @jsmith.roles_for_project(Project.find(1))
|
||||
assert_kind_of Role, roles.first
|
||||
assert_equal "Manager", roles.first.name
|
||||
|
||||
# user with no role
|
||||
assert !@dlopper.role_for_project(Project.find(2)).member?
|
||||
assert_nil @dlopper.roles_for_project(Project.find(2)).detect {|role| role.member?}
|
||||
end
|
||||
|
||||
def test_mail_notification_all
|
||||
|
||||
Reference in New Issue
Block a user