##// 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:

r14856:cda9c63d9c21
r15741:f8df935dcada
Show More
activity_test.rb
197 lines | 6.3 KiB | text/x-ruby | RubyLexer
/ test / unit / activity_test.rb
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Activity refactoring....
r1692 #
# 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 unit activity test....
r5678 #
Jean-Philippe Lang
Activity refactoring....
r1692 # 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 unit activity test....
r5678 #
Jean-Philippe Lang
Activity refactoring....
r1692 # 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
Activity refactoring....
r1692
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class ActivityTest < ActiveSupport::TestCase
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
Jean-Philippe Lang
Group events in the activity view (#12542)....
r10724 :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages, :time_entries,
:wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
Jean-Philippe Lang
Activity refactoring....
r1692
def setup
@project = Project.find(1)
end
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Activity refactoring....
r1692 def test_activity_without_subprojects
events = find_events(User.anonymous, :project => @project)
assert_not_nil events
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Activity refactoring....
r1692 assert events.include?(Issue.find(1))
assert !events.include?(Issue.find(4))
# subproject issue
assert !events.include?(Issue.find(5))
end
def test_activity_with_subprojects
events = find_events(User.anonymous, :project => @project, :with_subprojects => 1)
assert_not_nil events
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Activity refactoring....
r1692 assert events.include?(Issue.find(1))
# subproject issue
assert events.include?(Issue.find(5))
end
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Activity refactoring....
r1692 def test_global_activity_anonymous
events = find_events(User.anonymous)
assert_not_nil events
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Activity refactoring....
r1692 assert events.include?(Issue.find(1))
assert events.include?(Message.find(5))
# Issue of a private project
assert !events.include?(Issue.find(4))
Jean-Philippe Lang
Fixed: activity shows updates of private issues (#8432)....
r5824 # Private issue and comment
assert !events.include?(Issue.find(14))
assert !events.include?(Journal.find(5))
Jean-Philippe Lang
Activity refactoring....
r1692 end
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Activity refactoring....
r1692 def test_global_activity_logged_user
events = find_events(User.find(2)) # manager
assert_not_nil events
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Activity refactoring....
r1692 assert events.include?(Issue.find(1))
# Issue of a private project the user belongs to
assert events.include?(Issue.find(4))
end
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Display latest user's activity on account/show view....
r2064 def test_user_activity
user = User.find(2)
events = Redmine::Activity::Fetcher.new(User.anonymous, :author => user).events(nil, nil, :limit => 10)
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Display latest user's activity on account/show view....
r2064 assert(events.size > 0)
assert(events.size <= 10)
assert_nil(events.detect {|e| e.event_author != user})
end
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Fixed that journals are shown multiple times in activity (#19168)....
r13781 def test_journal_with_notes_and_changes_should_be_returned_once
f = Redmine::Activity::Fetcher.new(User.anonymous, :project => Project.find(1))
f.scope = ['issues']
events = f.events
assert_equal events, events.uniq
end
Jean-Philippe Lang
Fixed: Files without Version aren't visible in the Activity page (#2930)....
r2501 def test_files_activity
f = Redmine::Activity::Fetcher.new(User.anonymous, :project => Project.find(1))
f.scope = ['files']
events = f.events
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Fixed: Files without Version aren't visible in the Activity page (#2930)....
r2501 assert_kind_of Array, events
assert events.include?(Attachment.find_by_container_type_and_container_id('Project', 1))
assert events.include?(Attachment.find_by_container_type_and_container_id('Version', 1))
assert_equal [Attachment], events.collect(&:class).uniq
assert_equal %w(Project Version), events.collect(&:container_type).uniq.sort
end
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Group events in the activity view (#12542)....
r10724 def test_event_group_for_issue
issue = Issue.find(1)
assert_equal issue, issue.event_group
end
def test_event_group_for_journal
issue = Issue.find(1)
journal = issue.journals.first
assert_equal issue, journal.event_group
end
def test_event_group_for_issue_time_entry
time = TimeEntry.where(:issue_id => 1).first
assert_equal time.issue, time.event_group
end
def test_event_group_for_project_time_entry
time = TimeEntry.where(:issue_id => nil).first
assert_equal time, time.event_group
end
def test_event_group_for_message
message = Message.find(1)
reply = message.children.first
assert_equal message, message.event_group
assert_equal message, reply.event_group
end
def test_event_group_for_wiki_content_version
content = WikiContent::Version.find(1)
assert_equal content.page, content.event_group
end
Jean-Philippe Lang
Fixed that Redmine::Activity::Fetcher should consider activity provider permission option if given (#18832)....
r13513 class TestActivityProviderWithPermission
def self.activity_provider_options
{'test' => {:permission => :custom_permission}}
end
end
class TestActivityProviderWithNilPermission
def self.activity_provider_options
{'test' => {:permission => nil}}
end
end
class TestActivityProviderWithoutPermission
def self.activity_provider_options
{'test' => {}}
end
end
class MockUser
def initialize(*permissions)
@permissions = permissions
end
def allowed_to?(permission, *args)
@permissions.include?(permission)
end
end
def test_event_types_should_consider_activity_provider_permission
Redmine::Activity.register 'test', :class_name => 'ActivityTest::TestActivityProviderWithPermission'
user = MockUser.new(:custom_permission)
f = Redmine::Activity::Fetcher.new(user, :project => Project.find(1))
assert_include 'test', f.event_types
ensure
Redmine::Activity.delete 'test'
end
def test_event_types_should_include_activity_provider_with_nil_permission
Redmine::Activity.register 'test', :class_name => 'ActivityTest::TestActivityProviderWithNilPermission'
user = MockUser.new()
f = Redmine::Activity::Fetcher.new(user, :project => Project.find(1))
assert_include 'test', f.event_types
ensure
Redmine::Activity.delete 'test'
end
def test_event_types_should_use_default_permission_for_activity_provider_without_permission
Redmine::Activity.register 'test', :class_name => 'ActivityTest::TestActivityProviderWithoutPermission'
user = MockUser.new()
f = Redmine::Activity::Fetcher.new(user, :project => Project.find(1))
assert_not_include 'test', f.event_types
user = MockUser.new(:view_test)
f = Redmine::Activity::Fetcher.new(user, :project => Project.find(1))
assert_include 'test', f.event_types
ensure
Redmine::Activity.delete 'test'
end
Jean-Philippe Lang
Activity refactoring....
r1692 private
Toshi MARUYAMA
remove trailing white-spaces from unit activity test....
r5678
Jean-Philippe Lang
Activity refactoring....
r1692 def find_events(user, options={})
Redmine::Activity::Fetcher.new(user, options).events(Date.today - 30, Date.today + 1)
end
end