##// END OF EJS Templates
add unit test of error message in case that member role is empty...
Toshi MARUYAMA -
r8006:740b54f55b65
parent child
Show More
@@ -1,166 +1,174
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19
19
20 class MemberTest < ActiveSupport::TestCase
20 class MemberTest < ActiveSupport::TestCase
21 fixtures :projects, :trackers, :issue_statuses, :issues,
21 fixtures :projects, :trackers, :issue_statuses, :issues,
22 :enumerations, :users, :issue_categories,
22 :enumerations, :users, :issue_categories,
23 :projects_trackers,
23 :projects_trackers,
24 :roles,
24 :roles,
25 :member_roles,
25 :member_roles,
26 :members,
26 :members,
27 :enabled_modules,
27 :enabled_modules,
28 :workflows,
28 :workflows,
29 :groups_users,
29 :groups_users,
30 :watchers,
30 :watchers,
31 :journals, :journal_details,
31 :journals, :journal_details,
32 :messages,
32 :messages,
33 :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions,
33 :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions,
34 :boards
34 :boards
35
35
36 include Redmine::I18n
37
36 def setup
38 def setup
37 @jsmith = Member.find(1)
39 @jsmith = Member.find(1)
38 end
40 end
39
41
40 def test_create
42 def test_create
41 member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
43 member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
42 assert member.save
44 assert member.save
43 member.reload
45 member.reload
44
46
45 assert_equal 2, member.roles.size
47 assert_equal 2, member.roles.size
46 assert_equal Role.find(1), member.roles.sort.first
48 assert_equal Role.find(1), member.roles.sort.first
47 end
49 end
48
50
49 def test_update
51 def test_update
50 assert_equal "eCookbook", @jsmith.project.name
52 assert_equal "eCookbook", @jsmith.project.name
51 assert_equal "Manager", @jsmith.roles.first.name
53 assert_equal "Manager", @jsmith.roles.first.name
52 assert_equal "jsmith", @jsmith.user.login
54 assert_equal "jsmith", @jsmith.user.login
53
55
54 @jsmith.mail_notification = !@jsmith.mail_notification
56 @jsmith.mail_notification = !@jsmith.mail_notification
55 assert @jsmith.save
57 assert @jsmith.save
56 end
58 end
57
59
58 def test_update_roles
60 def test_update_roles
59 assert_equal 1, @jsmith.roles.size
61 assert_equal 1, @jsmith.roles.size
60 @jsmith.role_ids = [1, 2]
62 @jsmith.role_ids = [1, 2]
61 assert @jsmith.save
63 assert @jsmith.save
62 assert_equal 2, @jsmith.reload.roles.size
64 assert_equal 2, @jsmith.reload.roles.size
63 end
65 end
64
66
65 def test_validate
67 def test_validate
66 member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])
68 member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])
67 # same use can't have more than one membership for a project
69 # same use can't have more than one membership for a project
68 assert !member.save
70 assert !member.save
69
71
70 # must have one role at least
72 # must have one role at least
71 user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo")
73 user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo")
72 user.login = "test_validate"
74 user.login = "test_validate"
73 user.password, user.password_confirmation = "password", "password"
75 user.password, user.password_confirmation = "password", "password"
74 assert user.save
76 assert user.save
77
78 set_language_if_valid 'fr'
75 member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [])
79 member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [])
76 assert !member.save
80 assert !member.save
81 assert_equal I18n.translate('activerecord.errors.messages.empty'), member.errors[:role].to_s
82 str = "R\xc3\xb4le doit \xc3\xaatre renseign\xc3\xa9(e)"
83 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
84 assert_equal str, member.errors.full_messages.to_s
77 end
85 end
78
86
79 def test_validate_member_role
87 def test_validate_member_role
80 user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo")
88 user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo")
81 user.login = "test_validate_member_role"
89 user.login = "test_validate_member_role"
82 user.password, user.password_confirmation = "password", "password"
90 user.password, user.password_confirmation = "password", "password"
83 assert user.save
91 assert user.save
84 member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [5])
92 member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [5])
85 assert !member.save
93 assert !member.save
86 end
94 end
87
95
88 def test_destroy
96 def test_destroy
89 category1 = IssueCategory.find(1)
97 category1 = IssueCategory.find(1)
90 assert_equal @jsmith.user.id, category1.assigned_to_id
98 assert_equal @jsmith.user.id, category1.assigned_to_id
91 assert_difference 'Member.count', -1 do
99 assert_difference 'Member.count', -1 do
92 assert_difference 'MemberRole.count', -1 do
100 assert_difference 'MemberRole.count', -1 do
93 @jsmith.destroy
101 @jsmith.destroy
94 end
102 end
95 end
103 end
96 assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
104 assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
97 category1.reload
105 category1.reload
98 assert_nil category1.assigned_to_id
106 assert_nil category1.assigned_to_id
99 end
107 end
100
108
101 context "removing permissions" do
109 context "removing permissions" do
102 setup do
110 setup do
103 Watcher.delete_all("user_id = 9")
111 Watcher.delete_all("user_id = 9")
104 user = User.find(9)
112 user = User.find(9)
105 # public
113 # public
106 Watcher.create!(:watchable => Issue.find(1), :user => user)
114 Watcher.create!(:watchable => Issue.find(1), :user => user)
107 # private
115 # private
108 Watcher.create!(:watchable => Issue.find(4), :user => user)
116 Watcher.create!(:watchable => Issue.find(4), :user => user)
109 Watcher.create!(:watchable => Message.find(7), :user => user)
117 Watcher.create!(:watchable => Message.find(7), :user => user)
110 Watcher.create!(:watchable => Wiki.find(2), :user => user)
118 Watcher.create!(:watchable => Wiki.find(2), :user => user)
111 Watcher.create!(:watchable => WikiPage.find(3), :user => user)
119 Watcher.create!(:watchable => WikiPage.find(3), :user => user)
112 end
120 end
113
121
114 context "of user" do
122 context "of user" do
115 setup do
123 setup do
116 @member = Member.create!(:project => Project.find(2), :principal => User.find(9), :role_ids => [1, 2])
124 @member = Member.create!(:project => Project.find(2), :principal => User.find(9), :role_ids => [1, 2])
117 end
125 end
118
126
119 context "by deleting membership" do
127 context "by deleting membership" do
120 should "prune watchers" do
128 should "prune watchers" do
121 assert_difference 'Watcher.count', -4 do
129 assert_difference 'Watcher.count', -4 do
122 @member.destroy
130 @member.destroy
123 end
131 end
124 end
132 end
125 end
133 end
126
134
127 context "by updating roles" do
135 context "by updating roles" do
128 should "prune watchers" do
136 should "prune watchers" do
129 Role.find(2).remove_permission! :view_wiki_pages
137 Role.find(2).remove_permission! :view_wiki_pages
130 member = Member.first(:order => 'id desc')
138 member = Member.first(:order => 'id desc')
131 assert_difference 'Watcher.count', -2 do
139 assert_difference 'Watcher.count', -2 do
132 member.role_ids = [2]
140 member.role_ids = [2]
133 member.save
141 member.save
134 end
142 end
135 assert !Message.find(7).watched_by?(@user)
143 assert !Message.find(7).watched_by?(@user)
136 end
144 end
137 end
145 end
138 end
146 end
139
147
140 context "of group" do
148 context "of group" do
141 setup do
149 setup do
142 group = Group.find(10)
150 group = Group.find(10)
143 @member = Member.create!(:project => Project.find(2), :principal => group, :role_ids => [1, 2])
151 @member = Member.create!(:project => Project.find(2), :principal => group, :role_ids => [1, 2])
144 group.users << User.find(9)
152 group.users << User.find(9)
145 end
153 end
146
154
147 context "by deleting membership" do
155 context "by deleting membership" do
148 should "prune watchers" do
156 should "prune watchers" do
149 assert_difference 'Watcher.count', -4 do
157 assert_difference 'Watcher.count', -4 do
150 @member.destroy
158 @member.destroy
151 end
159 end
152 end
160 end
153 end
161 end
154
162
155 context "by updating roles" do
163 context "by updating roles" do
156 should "prune watchers" do
164 should "prune watchers" do
157 Role.find(2).remove_permission! :view_wiki_pages
165 Role.find(2).remove_permission! :view_wiki_pages
158 assert_difference 'Watcher.count', -2 do
166 assert_difference 'Watcher.count', -2 do
159 @member.role_ids = [2]
167 @member.role_ids = [2]
160 @member.save
168 @member.save
161 end
169 end
162 end
170 end
163 end
171 end
164 end
172 end
165 end
173 end
166 end
174 end
General Comments 0
You need to be logged in to leave comments. Login now