##// END OF EJS Templates
fix member validate test of empty role at unit test...
Toshi MARUYAMA -
r7926:3d1e6f5b96d5
parent child
Show More
@@ -1,150 +1,154
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 def setup
36 def setup
37 @jsmith = Member.find(1)
37 @jsmith = Member.find(1)
38 end
38 end
39
39
40 def test_create
40 def test_create
41 member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
41 member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
42 assert member.save
42 assert member.save
43 member.reload
43 member.reload
44
44
45 assert_equal 2, member.roles.size
45 assert_equal 2, member.roles.size
46 assert_equal Role.find(1), member.roles.sort.first
46 assert_equal Role.find(1), member.roles.sort.first
47 end
47 end
48
48
49 def test_update
49 def test_update
50 assert_equal "eCookbook", @jsmith.project.name
50 assert_equal "eCookbook", @jsmith.project.name
51 assert_equal "Manager", @jsmith.roles.first.name
51 assert_equal "Manager", @jsmith.roles.first.name
52 assert_equal "jsmith", @jsmith.user.login
52 assert_equal "jsmith", @jsmith.user.login
53
53
54 @jsmith.mail_notification = !@jsmith.mail_notification
54 @jsmith.mail_notification = !@jsmith.mail_notification
55 assert @jsmith.save
55 assert @jsmith.save
56 end
56 end
57
57
58 def test_update_roles
58 def test_update_roles
59 assert_equal 1, @jsmith.roles.size
59 assert_equal 1, @jsmith.roles.size
60 @jsmith.role_ids = [1, 2]
60 @jsmith.role_ids = [1, 2]
61 assert @jsmith.save
61 assert @jsmith.save
62 assert_equal 2, @jsmith.reload.roles.size
62 assert_equal 2, @jsmith.reload.roles.size
63 end
63 end
64
64
65 def test_validate
65 def test_validate
66 member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])
66 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
67 # same use can't have more than one membership for a project
68 assert !member.save
68 assert !member.save
69
69
70 member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [])
71 # must have one role at least
70 # must have one role at least
71 user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo")
72 user.login = "test_validate"
73 user.password, user.password_confirmation = "password", "password"
74 assert user.save
75 member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [])
72 assert !member.save
76 assert !member.save
73 end
77 end
74
78
75 def test_destroy
79 def test_destroy
76 assert_difference 'Member.count', -1 do
80 assert_difference 'Member.count', -1 do
77 assert_difference 'MemberRole.count', -1 do
81 assert_difference 'MemberRole.count', -1 do
78 @jsmith.destroy
82 @jsmith.destroy
79 end
83 end
80 end
84 end
81
85
82 assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
86 assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
83 end
87 end
84
88
85 context "removing permissions" do
89 context "removing permissions" do
86 setup do
90 setup do
87 Watcher.delete_all("user_id = 9")
91 Watcher.delete_all("user_id = 9")
88 user = User.find(9)
92 user = User.find(9)
89 # public
93 # public
90 Watcher.create!(:watchable => Issue.find(1), :user => user)
94 Watcher.create!(:watchable => Issue.find(1), :user => user)
91 # private
95 # private
92 Watcher.create!(:watchable => Issue.find(4), :user => user)
96 Watcher.create!(:watchable => Issue.find(4), :user => user)
93 Watcher.create!(:watchable => Message.find(7), :user => user)
97 Watcher.create!(:watchable => Message.find(7), :user => user)
94 Watcher.create!(:watchable => Wiki.find(2), :user => user)
98 Watcher.create!(:watchable => Wiki.find(2), :user => user)
95 Watcher.create!(:watchable => WikiPage.find(3), :user => user)
99 Watcher.create!(:watchable => WikiPage.find(3), :user => user)
96 end
100 end
97
101
98 context "of user" do
102 context "of user" do
99 setup do
103 setup do
100 @member = Member.create!(:project => Project.find(2), :principal => User.find(9), :role_ids => [1, 2])
104 @member = Member.create!(:project => Project.find(2), :principal => User.find(9), :role_ids => [1, 2])
101 end
105 end
102
106
103 context "by deleting membership" do
107 context "by deleting membership" do
104 should "prune watchers" do
108 should "prune watchers" do
105 assert_difference 'Watcher.count', -4 do
109 assert_difference 'Watcher.count', -4 do
106 @member.destroy
110 @member.destroy
107 end
111 end
108 end
112 end
109 end
113 end
110
114
111 context "by updating roles" do
115 context "by updating roles" do
112 should "prune watchers" do
116 should "prune watchers" do
113 Role.find(2).remove_permission! :view_wiki_pages
117 Role.find(2).remove_permission! :view_wiki_pages
114 member = Member.first(:order => 'id desc')
118 member = Member.first(:order => 'id desc')
115 assert_difference 'Watcher.count', -2 do
119 assert_difference 'Watcher.count', -2 do
116 member.role_ids = [2]
120 member.role_ids = [2]
117 member.save
121 member.save
118 end
122 end
119 assert !Message.find(7).watched_by?(@user)
123 assert !Message.find(7).watched_by?(@user)
120 end
124 end
121 end
125 end
122 end
126 end
123
127
124 context "of group" do
128 context "of group" do
125 setup do
129 setup do
126 group = Group.find(10)
130 group = Group.find(10)
127 @member = Member.create!(:project => Project.find(2), :principal => group, :role_ids => [1, 2])
131 @member = Member.create!(:project => Project.find(2), :principal => group, :role_ids => [1, 2])
128 group.users << User.find(9)
132 group.users << User.find(9)
129 end
133 end
130
134
131 context "by deleting membership" do
135 context "by deleting membership" do
132 should "prune watchers" do
136 should "prune watchers" do
133 assert_difference 'Watcher.count', -4 do
137 assert_difference 'Watcher.count', -4 do
134 @member.destroy
138 @member.destroy
135 end
139 end
136 end
140 end
137 end
141 end
138
142
139 context "by updating roles" do
143 context "by updating roles" do
140 should "prune watchers" do
144 should "prune watchers" do
141 Role.find(2).remove_permission! :view_wiki_pages
145 Role.find(2).remove_permission! :view_wiki_pages
142 assert_difference 'Watcher.count', -2 do
146 assert_difference 'Watcher.count', -2 do
143 @member.role_ids = [2]
147 @member.role_ids = [2]
144 @member.save
148 @member.save
145 end
149 end
146 end
150 end
147 end
151 end
148 end
152 end
149 end
153 end
150 end
154 end
General Comments 0
You need to be logged in to leave comments. Login now