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