@@ -19,7 +19,7 class Member < ActiveRecord::Base | |||
|
19 | 19 | belongs_to :user |
|
20 | 20 | belongs_to :principal, :foreign_key => 'user_id' |
|
21 | 21 | has_many :member_roles, :dependent => :destroy |
|
22 | has_many :roles, :through => :member_roles | |
|
22 | has_many :roles, lambda {uniq}, :through => :member_roles | |
|
23 | 23 | belongs_to :project |
|
24 | 24 | |
|
25 | 25 | validates_presence_of :principal, :project |
@@ -958,6 +958,27 class IssueTest < ActiveSupport::TestCase | |||
|
958 | 958 | assert_equal %w(done_ratio start_date), issue.read_only_attribute_names(user).sort |
|
959 | 959 | end |
|
960 | 960 | |
|
961 | def test_workflow_rules_should_work_for_member_with_duplicate_role | |
|
962 | WorkflowPermission.delete_all | |
|
963 | WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 1, | |
|
964 | :role_id => 1, :field_name => 'due_date', | |
|
965 | :rule => 'required') | |
|
966 | WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 1, | |
|
967 | :role_id => 1, :field_name => 'start_date', | |
|
968 | :rule => 'readonly') | |
|
969 | ||
|
970 | user = User.generate! | |
|
971 | m = Member.new(:user_id => user.id, :project_id => 1) | |
|
972 | m.member_roles.build(:role_id => 1) | |
|
973 | m.member_roles.build(:role_id => 1) | |
|
974 | m.save! | |
|
975 | ||
|
976 | issue = Issue.new(:project_id => 1, :tracker_id => 1, :status_id => 1) | |
|
977 | ||
|
978 | assert_equal %w(due_date), issue.required_attribute_names(user) | |
|
979 | assert_equal %w(start_date), issue.read_only_attribute_names(user) | |
|
980 | end | |
|
981 | ||
|
961 | 982 | def test_copy |
|
962 | 983 | issue = Issue.new.copy_from(1) |
|
963 | 984 | assert issue.copy? |
@@ -133,6 +133,16 class MemberTest < ActiveSupport::TestCase | |||
|
133 | 133 | Member._destroy_callbacks.delete(:destroy_test_callback) |
|
134 | 134 | end |
|
135 | 135 | |
|
136 | def test_roles_should_be_unique | |
|
137 | m = Member.new(:user_id => 1, :project_id => 1) | |
|
138 | m.member_roles.build(:role_id => 1) | |
|
139 | m.member_roles.build(:role_id => 1) | |
|
140 | m.save! | |
|
141 | m.reload | |
|
142 | assert_equal 1, m.roles.count | |
|
143 | assert_equal [1], m.roles.ids | |
|
144 | end | |
|
145 | ||
|
136 | 146 | def test_sort_without_roles |
|
137 | 147 | a = Member.new(:roles => [Role.first]) |
|
138 | 148 | b = Member.new |
@@ -907,6 +907,18 class UserTest < ActiveSupport::TestCase | |||
|
907 | 907 | assert_equal [], roles.map(&:name).sort |
|
908 | 908 | end |
|
909 | 909 | |
|
910 | def test_roles_for_project_should_be_unique | |
|
911 | m = Member.new(:user_id => 1, :project_id => 1) | |
|
912 | m.member_roles.build(:role_id => 1) | |
|
913 | m.member_roles.build(:role_id => 1) | |
|
914 | m.save! | |
|
915 | ||
|
916 | user = User.find(1) | |
|
917 | project = Project.find(1) | |
|
918 | assert_equal 1, user.roles_for_project(project).size | |
|
919 | assert_equal [1], user.roles_for_project(project).map(&:id) | |
|
920 | end | |
|
921 | ||
|
910 | 922 | def test_projects_by_role_for_user_with_role |
|
911 | 923 | user = User.find(2) |
|
912 | 924 | assert_kind_of Hash, user.projects_by_role |
General Comments 0
You need to be logged in to leave comments.
Login now