From bb1fccb7b7202ec065fdc39646067054580d278f Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Tue, 15 May 2007 21:32:36 +0000 Subject: Fixed: performance issue on RepositoriesController#revisions when a changeset has a great number of changes (eg. 100,000). Also added pagination for changes on changeset details view. git-svn-id: http://redmine.rubyforge.org/svn/trunk@535 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- test/fixtures/changes.yml | 16 ++++++++++++++++ test/unit/repository_test.rb | 21 ++++++++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 test/fixtures/changes.yml (limited to 'test') diff --git a/test/fixtures/changes.yml b/test/fixtures/changes.yml new file mode 100644 index 000000000..30acbd02d --- /dev/null +++ b/test/fixtures/changes.yml @@ -0,0 +1,16 @@ +--- +changes_001: + id: 1 + changeset_id: 100 + action: A + path: /test/some/path/in/the/repo + from_path: + from_revision: +changes_002: + id: 2 + changeset_id: 100 + action: A + path: /test/some/path/elsewhere/in/the/repo + from_path: + from_revision: + \ No newline at end of file diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index 5e0fb56fd..fd4fb6737 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -18,7 +18,11 @@ require File.dirname(__FILE__) + '/../test_helper' class RepositoryTest < Test::Unit::TestCase - fixtures :projects, :repositories, :issues, :issue_statuses, :changesets + fixtures :projects, :repositories, :issues, :issue_statuses, :changesets, :changes + + def setup + @repository = Project.find(1).repository + end def test_create repository = Repository.new(:project => Project.find(2)) @@ -33,10 +37,9 @@ class RepositoryTest < Test::Unit::TestCase end def test_cant_change_url - repository = Project.find(1).repository - url = repository.url - repository.url = "svn://anotherhost" - assert_equal url, repository.url + url = @repository.url + @repository.url = "svn://anotherhost" + assert_equal url, @repository.url end def test_scan_changesets_for_issue_ids @@ -56,4 +59,12 @@ class RepositoryTest < Test::Unit::TestCase # ignoring commits referencing an issue of another project assert_equal [], Issue.find(4).changesets end + + def test_changesets_with_path + @repository.changesets_with_path '/some/path' do + assert_equal 1, @repository.changesets.count(:select => "DISTINCT #{Changeset.table_name}.id") + changesets = @repository.changesets.find(:all) + assert_equal 1, changesets.size + end + end end -- cgit v1.2.3