annotate test/unit/repository_bazaar_test.rb @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents cbb26bc654de
children 433d4f72a19b
rev   line source
Chris@909 1 # Redmine - project management software
Chris@909 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@909 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@909 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@119 18 require File.expand_path('../../test_helper', __FILE__)
Chris@0 19
Chris@0 20 class RepositoryBazaarTest < ActiveSupport::TestCase
Chris@0 21 fixtures :projects
Chris@245 22
Chris@909 23 REPOSITORY_PATH = Rails.root.join('tmp/test/bazaar_repository/trunk').to_s
Chris@0 24 REPOSITORY_PATH.gsub!(/\/+/, '/')
Chris@909 25 NUM_REV = 4
Chris@0 26
Chris@0 27 def setup
Chris@245 28 @project = Project.find(3)
Chris@245 29 @repository = Repository::Bazaar.create(
Chris@245 30 :project => @project, :url => "file:///#{REPOSITORY_PATH}",
Chris@245 31 :log_encoding => 'UTF-8')
Chris@245 32 assert @repository
Chris@0 33 end
Chris@245 34
Chris@909 35 if File.directory?(REPOSITORY_PATH)
Chris@0 36 def test_fetch_changesets_from_scratch
Chris@909 37 assert_equal 0, @repository.changesets.count
Chris@0 38 @repository.fetch_changesets
Chris@909 39 @project.reload
Chris@909 40
Chris@909 41 assert_equal NUM_REV, @repository.changesets.count
Chris@0 42 assert_equal 9, @repository.changes.count
Chris@0 43 assert_equal 'Initial import', @repository.changesets.find_by_revision('1').comments
Chris@0 44 end
Chris@245 45
Chris@0 46 def test_fetch_changesets_incremental
Chris@909 47 assert_equal 0, @repository.changesets.count
Chris@0 48 @repository.fetch_changesets
Chris@909 49 @project.reload
Chris@909 50 assert_equal NUM_REV, @repository.changesets.count
Chris@0 51 # Remove changesets with revision > 5
Chris@0 52 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 2}
Chris@909 53 @project.reload
Chris@0 54 assert_equal 2, @repository.changesets.count
Chris@909 55
Chris@0 56 @repository.fetch_changesets
Chris@909 57 @project.reload
Chris@909 58 assert_equal NUM_REV, @repository.changesets.count
Chris@0 59 end
Chris@245 60
Chris@0 61 def test_entries
Chris@0 62 entries = @repository.entries
Chris@0 63 assert_equal 2, entries.size
Chris@909 64
Chris@0 65 assert_equal 'dir', entries[0].kind
Chris@0 66 assert_equal 'directory', entries[0].name
Chris@909 67
Chris@0 68 assert_equal 'file', entries[1].kind
Chris@0 69 assert_equal 'doc-mkdir.txt', entries[1].name
Chris@0 70 end
Chris@909 71
Chris@0 72 def test_entries_in_subdirectory
Chris@0 73 entries = @repository.entries('directory')
Chris@0 74 assert_equal 3, entries.size
Chris@0 75
Chris@0 76 assert_equal 'file', entries.last.kind
Chris@0 77 assert_equal 'edit.png', entries.last.name
Chris@0 78 end
Chris@441 79
Chris@441 80 def test_previous
Chris@909 81 assert_equal 0, @repository.changesets.count
Chris@441 82 @repository.fetch_changesets
Chris@909 83 @project.reload
Chris@909 84 assert_equal NUM_REV, @repository.changesets.count
Chris@441 85 changeset = @repository.find_changeset_by_name('3')
Chris@441 86 assert_equal @repository.find_changeset_by_name('2'), changeset.previous
Chris@441 87 end
Chris@441 88
Chris@441 89 def test_previous_nil
Chris@909 90 assert_equal 0, @repository.changesets.count
Chris@441 91 @repository.fetch_changesets
Chris@909 92 @project.reload
Chris@909 93 assert_equal NUM_REV, @repository.changesets.count
Chris@441 94 changeset = @repository.find_changeset_by_name('1')
Chris@441 95 assert_nil changeset.previous
Chris@441 96 end
Chris@441 97
Chris@441 98 def test_next
Chris@909 99 assert_equal 0, @repository.changesets.count
Chris@441 100 @repository.fetch_changesets
Chris@909 101 @project.reload
Chris@909 102 assert_equal NUM_REV, @repository.changesets.count
Chris@441 103 changeset = @repository.find_changeset_by_name('2')
Chris@441 104 assert_equal @repository.find_changeset_by_name('3'), changeset.next
Chris@441 105 end
Chris@441 106
Chris@441 107 def test_next_nil
Chris@909 108 assert_equal 0, @repository.changesets.count
Chris@441 109 @repository.fetch_changesets
Chris@909 110 @project.reload
Chris@909 111 assert_equal NUM_REV, @repository.changesets.count
Chris@441 112 changeset = @repository.find_changeset_by_name('4')
Chris@441 113 assert_nil changeset.next
Chris@441 114 end
Chris@0 115 else
Chris@0 116 puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!"
Chris@0 117 def test_fake; assert true end
Chris@0 118 end
Chris@0 119 end