diff options
author | Jean-Baptiste Barth <jeanbaptiste.barth@gmail.com> | 2014-08-26 17:32:01 +0000 |
---|---|---|
committer | Jean-Baptiste Barth <jeanbaptiste.barth@gmail.com> | 2014-08-26 17:32:01 +0000 |
commit | 8c945fb7914b50ead0c608d8530dbee496b1e878 (patch) | |
tree | 19086e94131e0b0d9237534caefe6bcb21624c51 /test | |
parent | fc99c1851f697cb92447ce28617a8eb84876f4e9 (diff) | |
download | redmine-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.rb | 50 |
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 |