diff --git a/app/models/repository.rb b/app/models/repository.rb index ff06f08..2ff3d4f 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -38,7 +38,7 @@ class Repository < ActiveRecord::Base validates_length_of :password, :maximum => 255, :allow_nil => true validates_length_of :identifier, :maximum => IDENTIFIER_MAX_LENGTH, :allow_blank => true - validates_presence_of :identifier, :unless => Proc.new { |r| r.is_default? || r.set_as_default? } +# validates_presence_of :identifier, :unless => Proc.new { |r| r.is_default? || r.set_as_default? } validates_uniqueness_of :identifier, :scope => :project_id, :allow_blank => true validates_exclusion_of :identifier, :in => %w(browse show entry raw changes annotate diff statistics graph revisions revision) # donwcase letters, digits, dashes, underscores but not digits only diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb index abd123a..a7388d0 100644 --- a/test/unit/repository_git_test.rb +++ b/test/unit/repository_git_test.rb @@ -53,6 +53,35 @@ class RepositoryGitTest < ActiveSupport::TestCase end end + def test_nondefault_repo_with_blank_identifier_destruction + repo1 = Repository::Git.new( + :project => @project, + :url => REPOSITORY_PATH, + :identifier => '', + :is_default => true + ) + assert repo1.save + repo1.fetch_changesets + + repo2 = Repository::Git.new( + :project => @project, + :url => REPOSITORY_PATH, + :identifier => 'repo2', + :is_default => true + ) + assert repo2.save + repo2.fetch_changesets + + repo1.reload + repo2.reload + assert !repo1.is_default? + assert repo2.is_default? + + assert_difference 'Repository.count', -1 do + repo1.destroy + end + end + def test_blank_path_to_repository_error_message set_language_if_valid 'en' repo = Repository::Git.new(