##// END OF EJS Templates
Speeds up rendering of the project list for users who belong to hundreds of projects....
Speeds up rendering of the project list for users who belong to hundreds of projects. git-svn-id: http://svn.redmine.org/redmine/trunk@16123 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r15293:57afa5345eea
r15741:f8df935dcada
Show More
watcher_test.rb
201 lines | 6.2 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634 #
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634 #
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Jean-Baptiste Barth
Use absolute paths in test/**/* requires for Ruby 1.9.2 compatibility. #4050...
r4395 require File.expand_path('../../test_helper', __FILE__)
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class WatcherTest < ActiveSupport::TestCase
Jean-Philippe Lang
Add support for multiple email addresses per user (#4244)....
r13504 fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles, :enabled_modules,
Jean-Baptiste Barth
Fixed test/unit/watcher_test.rb breaking when run alone (#12285)...
r10557 :issues, :issue_statuses, :enumerations, :trackers, :projects_trackers,
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 :boards, :messages,
:wikis, :wiki_pages,
:watchers
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450
def setup
@user = User.find(1)
@issue = Issue.find(1)
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Toshi MARUYAMA
add unit test to validate watcher...
r7951 def test_validate
user = User.find(5)
assert !user.active?
watcher = Watcher.new(:user_id => user.id)
assert !watcher.save
end
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 def test_watch
assert @issue.add_watcher(@user)
@issue.reload
assert @issue.watchers.detect { |w| w.user == @user }
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 def test_cant_watch_twice
assert @issue.add_watcher(@user)
assert !@issue.add_watcher(@user)
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 def test_watched_by
assert @issue.add_watcher(@user)
@issue.reload
assert @issue.watched_by?(@user)
assert Issue.watched_by(@user).include?(@issue)
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Fixed: validation error on issue creation when trying to add an invalid user as a watcher (#5373)....
r5760 def test_watcher_users
watcher_users = Issue.find(2).watcher_users
Toshi MARUYAMA
Rails4 compatibility of WatcherTest#test_watcher_users...
r12469 assert_kind_of Array, watcher_users.collect{|w| w}
Jean-Philippe Lang
Fixed: validation error on issue creation when trying to add an invalid user as a watcher (#5373)....
r5760 assert_kind_of User, watcher_users.first
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
When creating issues by receiving an email, watchers created via CC in the mail don't get an email notification (#23278)....
r15227 def test_watcher_users_should_be_reloaded_after_adding_a_watcher
issue = Issue.find(2)
user = User.generate!
assert_difference 'issue.watcher_users.to_a.size' do
issue.add_watcher user
end
end
Jean-Philippe Lang
Fixed: validation error on issue creation when trying to add an invalid user as a watcher (#5373)....
r5760 def test_watcher_users_should_not_validate_user
Toshi MARUYAMA
Rails4: replace deprecated Relation#update_all at WatcherTest...
r12278 User.where(:id => 1).update_all("firstname = ''")
Jean-Philippe Lang
Fixed: validation error on issue creation when trying to add an invalid user as a watcher (#5373)....
r5760 @user.reload
assert !@user.valid?
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Fixed: validation error on issue creation when trying to add an invalid user as a watcher (#5373)....
r5760 issue = Issue.new(:project => Project.find(1), :tracker_id => 1, :subject => "test", :author => User.find(2))
issue.watcher_users << @user
issue.save!
assert issue.watched_by?(@user)
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Fixed: watchers selection lost when issue creation fails (#5406). #watched_by? was fixed in order to work with #watcher_user_ids= used in controllers on unsaved objects....
r3591 def test_watcher_user_ids
Jean-Philippe Lang
Fixed: validation error on issue creation when trying to add an invalid user as a watcher (#5373)....
r5760 assert_equal [1, 3], Issue.find(2).watcher_user_ids.sort
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Fixed: validation error on issue creation when trying to add an invalid user as a watcher (#5373)....
r5760 def test_watcher_user_ids=
Jean-Philippe Lang
Fixed: watchers selection lost when issue creation fails (#5406). #watched_by? was fixed in order to work with #watcher_user_ids= used in controllers on unsaved objects....
r3591 issue = Issue.new
issue.watcher_user_ids = ['1', '3']
assert issue.watched_by?(User.find(1))
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Override watcher_user_ids= to make ids uniq (#10538)....
r9141 def test_watcher_user_ids_should_make_ids_uniq
issue = Issue.new(:project => Project.find(1), :tracker_id => 1, :subject => "test", :author => User.find(2))
issue.watcher_user_ids = ['1', '3', '1']
issue.save!
assert_equal 2, issue.watchers.count
end
Jean-Philippe Lang
Do not propose users that can't view an issue as watchers (#7412)....
r5756 def test_addable_watcher_users
addable_watcher_users = @issue.addable_watcher_users
assert_kind_of Array, addable_watcher_users
assert_kind_of User, addable_watcher_users.first
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Do not propose users that can't view an issue as watchers (#7412)....
r5756 def test_addable_watcher_users_should_not_include_user_that_cannot_view_the_object
issue = Issue.new(:project => Project.find(1), :is_private => true)
assert_nil issue.addable_watcher_users.detect {|user| !issue.visible?(user)}
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Adds Watcher.any_watched? to check if at least one object of a collection is watched....
r11729 def test_any_watched_should_return_false_if_no_object_is_watched
objects = (0..2).map {Issue.generate!}
assert_equal false, Watcher.any_watched?(objects, @user)
end
def test_any_watched_should_return_true_if_one_object_is_watched
objects = (0..2).map {Issue.generate!}
objects.last.add_watcher(@user)
assert_equal true, Watcher.any_watched?(objects, @user)
end
def test_any_watched_should_return_false_with_no_object
assert_equal false, Watcher.any_watched?([], @user)
end
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 def test_recipients
@issue.watchers.delete_all
@issue.reload
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 assert @issue.watcher_recipients.empty?
assert @issue.add_watcher(@user)
Jean-Philippe Lang
Fixed: Email notifications are sent to watchers even if 'No events' setting is chosen (#7763)....
r4884 @user.mail_notification = 'all'
@user.save!
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 @issue.reload
assert @issue.watcher_recipients.include?(@user.mail)
Jean-Philippe Lang
Fixed: Email notifications are sent to watchers even if 'No events' setting is chosen (#7763)....
r4884 @user.mail_notification = 'none'
@user.save!
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 @issue.reload
Jean-Philippe Lang
Fixed: Email notifications are sent to watchers even if 'No events' setting is chosen (#7763)....
r4884 assert !@issue.watcher_recipients.include?(@user.mail)
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 def test_unwatch
assert @issue.add_watcher(@user)
@issue.reload
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634 assert_equal 1, @issue.remove_watcher(@user)
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Adds a test for Watcher.prune with :project option....
r13342 def test_prune_with_user
Jean-Philippe Lang
Don't pass conditions to #delete_all....
r15293 Watcher.where("user_id = 9").delete_all
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 user = User.find(9)
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 # public
Watcher.create!(:watchable => Issue.find(1), :user => user)
Watcher.create!(:watchable => Issue.find(2), :user => user)
Watcher.create!(:watchable => Message.find(1), :user => user)
Watcher.create!(:watchable => Wiki.find(1), :user => user)
Watcher.create!(:watchable => WikiPage.find(2), :user => user)
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 # private project (id: 2)
Member.create!(:project => Project.find(2), :principal => user, :role_ids => [1])
Watcher.create!(:watchable => Issue.find(4), :user => user)
Watcher.create!(:watchable => Message.find(7), :user => user)
Watcher.create!(:watchable => Wiki.find(2), :user => user)
Watcher.create!(:watchable => WikiPage.find(3), :user => user)
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 assert_no_difference 'Watcher.count' do
Watcher.prune(:user => User.find(9))
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 Member.delete_all
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 assert_difference 'Watcher.count', -4 do
Watcher.prune(:user => User.find(9))
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/watcher_test.rb....
r6634
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 assert Issue.find(1).watched_by?(user)
assert !Issue.find(4).watched_by?(user)
end
Jean-Philippe Lang
Additional test for Watcher.prune....
r9284
Jean-Philippe Lang
Adds a test for Watcher.prune with :project option....
r13342 def test_prune_with_project
user = User.find(9)
Watcher.new(:watchable => Issue.find(4), :user => User.find(9)).save(:validate => false) # project 2
Watcher.new(:watchable => Issue.find(6), :user => User.find(9)).save(:validate => false) # project 5
assert Watcher.prune(:project => Project.find(5)) > 0
assert Issue.find(4).watched_by?(user)
assert !Issue.find(6).watched_by?(user)
end
Jean-Philippe Lang
Additional test for Watcher.prune....
r9284 def test_prune_all
user = User.find(9)
Jean-Philippe Lang
Merged rails-3.2 branch....
r9346 Watcher.new(:watchable => Issue.find(4), :user => User.find(9)).save(:validate => false)
Jean-Philippe Lang
Additional test for Watcher.prune....
r9284
assert Watcher.prune > 0
assert !Issue.find(4).watched_by?(user)
end
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 end