summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>2014-08-26 17:32:01 +0000
committerJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>2014-08-26 17:32:01 +0000
commit8c945fb7914b50ead0c608d8530dbee496b1e878 (patch)
tree19086e94131e0b0d9237534caefe6bcb21624c51 /test
parentfc99c1851f697cb92447ce28617a8eb84876f4e9 (diff)
downloadredmine-8c945fb7914b50ead0c608d8530dbee496b1e878.tar.gz
redmine-8c945fb7914b50ead0c608d8530dbee496b1e878.zip
Honnor committers/users mapping in repository statistics (#13487).
git-svn-id: http://svn.redmine.org/redmine/trunk@13353 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test')
-rw-r--r--test/unit/repository_test.rb50
1 files changed, 48 insertions, 2 deletions
diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb
index c23fbccbe..2de4972dc 100644
--- a/test/unit/repository_test.rb
+++ b/test/unit/repository_test.rb
@@ -399,7 +399,7 @@ class RepositoryTest < ActiveSupport::TestCase
def test_stats_by_author_reflect_changesets_and_changes
repository = Repository.find(10)
- expected = {"dlopper"=>{:commits_count=>10, :changes_count=>3}}
+ expected = {"Dave Lopper"=>{:commits_count=>10, :changes_count=>3}}
assert_equal expected, repository.stats_by_author
set = Changeset.create!(
@@ -411,7 +411,53 @@ class RepositoryTest < ActiveSupport::TestCase
)
Change.create!(:changeset => set, :action => 'A', :path => '/path/to/file1')
Change.create!(:changeset => set, :action => 'A', :path => '/path/to/file2')
- expected = {"dlopper"=>{:commits_count=>11, :changes_count=>5}}
+ expected = {"Dave Lopper"=>{:commits_count=>11, :changes_count=>5}}
+ assert_equal expected, repository.stats_by_author
+ end
+
+ def test_stats_by_author_honnor_committers
+ # in fact it is really tested above, but let's have a dedicated test
+ # to ensure things are dynamically linked to Users
+ User.find_by_login("dlopper").update_attribute(:firstname, "Dave's")
+ repository = Repository.find(10)
+ expected = {"Dave's Lopper"=>{:commits_count=>10, :changes_count=>3}}
+ assert_equal expected, repository.stats_by_author
+ end
+
+ def test_stats_by_author_doesnt_drop_unmapped_users
+ repository = Repository.find(10)
+ Changeset.create!(
+ :repository => repository,
+ :committer => 'unnamed <foo@bar.net>',
+ :committed_on => Time.now,
+ :revision => 101,
+ :comments => 'Another commit by foo.'
+ )
+
+ assert repository.stats_by_author.has_key?("unnamed <foo@bar.net>")
+ end
+
+ def test_stats_by_author_merge_correctly
+ # as we honnor users->committer map and it's not injective,
+ # we must be sure merges happen correctly and stats are not
+ # wiped out when two source counts map to the same user.
+ #
+ # Here we have Changeset's with committer="dlopper" and others
+ # with committer="dlopper <dlopper@somefoo.net>"
+ repository = Repository.find(10)
+
+ expected = {"Dave Lopper"=>{:commits_count=>10, :changes_count=>3}}
+ assert_equal expected, repository.stats_by_author
+
+ set = Changeset.create!(
+ :repository => repository,
+ :committer => 'dlopper <dlopper@somefoo.net>',
+ :committed_on => Time.now,
+ :revision => 101,
+ :comments => 'Another commit by foo.'
+ )
+
+ expected = {"Dave Lopper"=>{:commits_count=>11, :changes_count=>3}}
assert_equal expected, repository.stats_by_author
end
end