Mercurial > hg > soundsoftware-site
comparison test/unit/member_test.rb @ 1526:404aa68d4227
Merge from live branch
author | Chris Cannam |
---|---|
date | Thu, 11 Sep 2014 12:46:20 +0100 |
parents | dffacf8a6908 |
children |
comparison
equal
deleted
inserted
replaced
1493:a5f2bdf3b486 | 1526:404aa68d4227 |
---|---|
1 # Redmine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2012 Jean-Philippe Lang | 2 # Copyright (C) 2006-2014 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. |
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, | |
29 :groups_users, | 28 :groups_users, |
30 :watchers, | 29 :watchers, |
31 :journals, :journal_details, | 30 :journals, :journal_details, |
32 :messages, | 31 :messages, |
33 :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, | 32 :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, |
68 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]) |
69 # 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 |
70 assert !member.save | 69 assert !member.save |
71 | 70 |
72 # must have one role at least | 71 # must have one role at least |
73 user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo") | 72 user = User.new(:firstname => "new1", :lastname => "user1", |
73 :mail => "test_validate@somenet.foo") | |
74 user.login = "test_validate" | 74 user.login = "test_validate" |
75 user.password, user.password_confirmation = "password", "password" | 75 user.password, user.password_confirmation = "password", "password" |
76 assert user.save | 76 assert user.save |
77 | 77 |
78 set_language_if_valid 'fr' | 78 set_language_if_valid 'fr' |
83 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding) | 83 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding) |
84 assert_equal str, [member.errors.full_messages].flatten.join | 84 assert_equal str, [member.errors.full_messages].flatten.join |
85 end | 85 end |
86 | 86 |
87 def test_validate_member_role | 87 def test_validate_member_role |
88 user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo") | 88 user = User.new(:firstname => "new1", :lastname => "user1", |
89 :mail => "test_validate@somenet.foo") | |
89 user.login = "test_validate_member_role" | 90 user.login = "test_validate_member_role" |
90 user.password, user.password_confirmation = "password", "password" | 91 user.password, user.password_confirmation = "password", "password" |
91 assert user.save | 92 assert user.save |
92 member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [5]) | 93 member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [5]) |
93 assert !member.save | 94 assert !member.save |
104 assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) } | 105 assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) } |
105 category1.reload | 106 category1.reload |
106 assert_nil category1.assigned_to_id | 107 assert_nil category1.assigned_to_id |
107 end | 108 end |
108 | 109 |
110 def test_destroy_should_trigger_callbacks_only_once | |
111 Member.class_eval { def destroy_test_callback; end} | |
112 Member.after_destroy :destroy_test_callback | |
113 | |
114 m = Member.create!(:user_id => 1, :project_id => 1, :role_ids => [1,3]) | |
115 | |
116 Member.any_instance.expects(:destroy_test_callback).once | |
117 assert_difference 'Member.count', -1 do | |
118 assert_difference 'MemberRole.count', -2 do | |
119 m.destroy | |
120 end | |
121 end | |
122 assert m.destroyed? | |
123 ensure | |
124 Member._destroy_callbacks.reject! {|c| c.filter==:destroy_test_callback} | |
125 end | |
126 | |
109 def test_sort_without_roles | 127 def test_sort_without_roles |
110 a = Member.new(:roles => [Role.first]) | 128 a = Member.new(:roles => [Role.first]) |
111 b = Member.new | 129 b = Member.new |
112 | 130 |
113 assert_equal -1, a <=> b | 131 assert_equal -1, a <=> b |
120 b = Member.new(:roles => [role]) | 138 b = Member.new(:roles => [role]) |
121 | 139 |
122 assert_equal -1, a <=> b | 140 assert_equal -1, a <=> b |
123 assert_equal 1, b <=> a | 141 assert_equal 1, b <=> a |
124 end | 142 end |
125 | |
126 context "removing permissions" do | |
127 setup do | |
128 Watcher.delete_all("user_id = 9") | |
129 user = User.find(9) | |
130 # public | |
131 Watcher.create!(:watchable => Issue.find(1), :user => user) | |
132 # private | |
133 Watcher.create!(:watchable => Issue.find(4), :user => user) | |
134 Watcher.create!(:watchable => Message.find(7), :user => user) | |
135 Watcher.create!(:watchable => Wiki.find(2), :user => user) | |
136 Watcher.create!(:watchable => WikiPage.find(3), :user => user) | |
137 end | |
138 | |
139 context "of user" do | |
140 setup do | |
141 @member = Member.create!(:project => Project.find(2), :principal => User.find(9), :role_ids => [1, 2]) | |
142 end | |
143 | |
144 context "by deleting membership" do | |
145 should "prune watchers" do | |
146 assert_difference 'Watcher.count', -4 do | |
147 @member.destroy | |
148 end | |
149 end | |
150 end | |
151 | |
152 context "by updating roles" do | |
153 should "prune watchers" do | |
154 Role.find(2).remove_permission! :view_wiki_pages | |
155 member = Member.first(:order => 'id desc') | |
156 assert_difference 'Watcher.count', -2 do | |
157 member.role_ids = [2] | |
158 member.save | |
159 end | |
160 assert !Message.find(7).watched_by?(@user) | |
161 end | |
162 end | |
163 end | |
164 | |
165 context "of group" do | |
166 setup do | |
167 group = Group.find(10) | |
168 @member = Member.create!(:project => Project.find(2), :principal => group, :role_ids => [1, 2]) | |
169 group.users << User.find(9) | |
170 end | |
171 | |
172 context "by deleting membership" do | |
173 should "prune watchers" do | |
174 assert_difference 'Watcher.count', -4 do | |
175 @member.destroy | |
176 end | |
177 end | |
178 end | |
179 | |
180 context "by updating roles" do | |
181 should "prune watchers" do | |
182 Role.find(2).remove_permission! :view_wiki_pages | |
183 assert_difference 'Watcher.count', -2 do | |
184 @member.role_ids = [2] | |
185 @member.save | |
186 end | |
187 end | |
188 end | |
189 end | |
190 end | |
191 end | 143 end |