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