summaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2012-12-08 08:24:01 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2012-12-08 08:24:01 +0000
commit0e30724d660146d133318d9b3288a8a1eba4d8c4 (patch)
tree122f24969ad517248d59458e25f37726a342b191 /test/unit
parent7222e4012db58c53d364e3b065e70338c094e878 (diff)
downloadredmine-0e30724d660146d133318d9b3288a8a1eba4d8c4.tar.gz
redmine-0e30724d660146d133318d9b3288a8a1eba4d8c4.zip
Group events in the activity view (#12542).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10951 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/activity_test.rb36
-rw-r--r--test/unit/helpers/activities_helper_test.rb101
2 files changed, 136 insertions, 1 deletions
diff --git a/test/unit/activity_test.rb b/test/unit/activity_test.rb
index d92e9c31b..dab575d74 100644
--- a/test/unit/activity_test.rb
+++ b/test/unit/activity_test.rb
@@ -19,7 +19,8 @@ require File.expand_path('../../test_helper', __FILE__)
class ActivityTest < ActiveSupport::TestCase
fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
- :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages
+ :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages, :time_entries,
+ :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
def setup
@project = Project.find(1)
@@ -87,6 +88,39 @@ class ActivityTest < ActiveSupport::TestCase
assert_equal %w(Project Version), events.collect(&:container_type).uniq.sort
end
+ 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
+
private
def find_events(user, options={})
diff --git a/test/unit/helpers/activities_helper_test.rb b/test/unit/helpers/activities_helper_test.rb
new file mode 100644
index 000000000..48bcd9eb2
--- /dev/null
+++ b/test/unit/helpers/activities_helper_test.rb
@@ -0,0 +1,101 @@
+# Redmine - project management software
+# Copyright (C) 2006-2012 Jean-Philippe Lang
+#
+# 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.
+#
+# 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.
+#
+# 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.
+
+require File.expand_path('../../../test_helper', __FILE__)
+
+class ActivitiesHelperTest < ActionView::TestCase
+ include ActivitiesHelper
+
+ class MockEvent
+ attr_reader :event_datetime, :event_group, :name
+
+ def initialize(group=nil)
+ @@count ||= 0
+ @name = "e#{@@count}"
+ @event_datetime = Time.now + @@count.hours
+ @event_group = group || self
+ @@count += 1
+ end
+
+ def self.clear
+ @@count = 0
+ end
+ end
+
+ def setup
+ MockEvent.clear
+ end
+
+ def test_sort_activity_events_should_sort_by_datetime
+ events = []
+ events << MockEvent.new
+ events << MockEvent.new
+ events << MockEvent.new
+
+ assert_equal [
+ ['e2', false],
+ ['e1', false],
+ ['e0', false]
+ ], sort_activity_events(events).map {|event, grouped| [event.name, grouped]}
+ end
+
+ def test_sort_activity_events_should_group_events
+ events = []
+ events << MockEvent.new
+ events << MockEvent.new(events[0])
+ events << MockEvent.new(events[0])
+
+ assert_equal [
+ ['e2', false],
+ ['e1', true],
+ ['e0', true]
+ ], sort_activity_events(events).map {|event, grouped| [event.name, grouped]}
+ end
+
+ def test_sort_activity_events_with_group_not_in_set_should_group_events
+ e = MockEvent.new
+ events = []
+ events << MockEvent.new(e)
+ events << MockEvent.new(e)
+
+ assert_equal [
+ ['e2', false],
+ ['e1', true]
+ ], sort_activity_events(events).map {|event, grouped| [event.name, grouped]}
+ end
+
+ def test_sort_activity_events_should_sort_by_datetime_and_group
+ events = []
+ events << MockEvent.new
+ events << MockEvent.new
+ events << MockEvent.new
+ events << MockEvent.new(events[1])
+ events << MockEvent.new(events[2])
+ events << MockEvent.new
+ events << MockEvent.new(events[2])
+
+ assert_equal [
+ ['e6', false],
+ ['e4', true],
+ ['e2', true],
+ ['e5', false],
+ ['e3', false],
+ ['e1', true],
+ ['e0', false]
+ ], sort_activity_events(events).map {|event, grouped| [event.name, grouped]}
+ end
+end