##// END OF EJS Templates
add unit test that enumeration returns default in regardless of active or not...
add unit test that enumeration returns default in regardless of active or not git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10231 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r9898:87f284dcb6c5
r10048:3478a21c2fe5
Show More
repository_test.rb
373 lines | 12.2 KiB | text/x-ruby | RubyLexer
/ test / unit / repository_test.rb
Toshi MARUYAMA
scm: code clean up unit repository test....
r5538 # Redmine - project management software
Jean-Philippe Lang
Copyright update....
r9453 # Copyright (C) 2006-2012 Jean-Philippe Lang
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
scm: code clean up unit repository test....
r5538 #
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
scm: code clean up unit repository test....
r5538 #
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Jean-Baptiste Barth
Use absolute paths in test/**/* requires for Ruby 1.9.2 compatibility. #4050...
r4395 require File.expand_path('../../test_helper', __FILE__)
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class RepositoryTest < ActiveSupport::TestCase
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 fixtures :projects,
:trackers,
:projects_trackers,
Jean-Philippe Lang
Adds missing fixtures when running tests from scratch....
r4434 :enabled_modules,
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 :repositories,
:issues,
:issue_statuses,
Jean-Philippe Lang
Adds missing fixtures when running tests from scratch....
r4434 :issue_categories,
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 :changesets,
:changes,
:users,
Jean-Philippe Lang
Adds missing fixtures when running tests from scratch....
r4434 :members,
:member_roles,
:roles,
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 :enumerations
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075
Toshi MARUYAMA
scm: add test to override human_attribute_name of log_encoding...
r8837 include Redmine::I18n
Jean-Philippe Lang
Fixed: performance issue on RepositoriesController#revisions when a changeset has a great number of changes (eg. 100,000)....
r532 def setup
@repository = Project.find(1).repository
end
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075
Toshi MARUYAMA
scm: add test to override human_attribute_name of log_encoding...
r8837 def test_blank_log_encoding_error_message
set_language_if_valid 'en'
repo = Repository::Bazaar.new(
:project => Project.find(3),
:url => "/test",
:log_encoding => ''
)
assert !repo.save
assert_include "Commit messages encoding can't be blank",
repo.errors.full_messages
end
def test_blank_log_encoding_error_message_fr
set_language_if_valid 'fr'
str = "Encodage des messages de commit doit \xc3\xaatre renseign\xc3\xa9(e)"
str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
repo = Repository::Bazaar.new(
:project => Project.find(3),
:url => "/test"
)
assert !repo.save
assert_include str, repo.errors.full_messages
end
Jean-Philippe Lang
Adds missing native eol properties....
r2781 def test_create
Jean-Philippe Lang
* Added links to previous and next revisions on revision view (patch by Cyril Mougel slightly edited)...
r925 repository = Repository::Subversion.new(:project => Project.find(3))
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 assert !repository.save
Toshi MARUYAMA
scm: code clean up unit repository test....
r5538
Jean-Philippe Lang
Adds missing native eol properties....
r2781 repository.url = "svn://localhost"
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 assert repository.save
repository.reload
Toshi MARUYAMA
scm: space cleanup in unit repository test....
r5495
Jean-Philippe Lang
* Added links to previous and next revisions on revision view (patch by Cyril Mougel slightly edited)...
r925 project = Project.find(3)
Jean-Philippe Lang
Adds missing native eol properties....
r2781 assert_equal repository, project.repository
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 end
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075
Jean-Philippe Lang
Adds support for multiple repositories per project (#779)....
r8530 def test_first_repository_should_be_set_as_default
Toshi MARUYAMA
code layout cleanup test/unit/repository_test.rb...
r8838 repository1 = Repository::Subversion.new(
:project => Project.find(3),
:identifier => 'svn1',
:url => 'file:///svn1'
)
Jean-Philippe Lang
Adds support for multiple repositories per project (#779)....
r8530 assert repository1.save
assert repository1.is_default?
Toshi MARUYAMA
code layout cleanup test/unit/repository_test.rb...
r8838 repository2 = Repository::Subversion.new(
:project => Project.find(3),
:identifier => 'svn2',
:url => 'file:///svn2'
)
Jean-Philippe Lang
Adds support for multiple repositories per project (#779)....
r8530 assert repository2.save
assert !repository2.is_default?
assert_equal repository1, Project.find(3).repository
assert_equal [repository1, repository2], Project.find(3).repositories.sort
end
Jean-Philippe Lang
Make repository identifier accept underscores (#11192)....
r9692 def test_identifier_should_accept_letters_digits_dashes_and_underscores
r = Repository::Subversion.new(
:project_id => 3,
:identifier => 'svn-123_45',
:url => 'file:///svn'
)
assert r.save
end
Jean-Philippe Lang
Repository Identifier should be frozen (#11109)....
r9898
def test_identifier_should_not_be_frozen_for_a_new_repository
assert_equal false, Repository.new.identifier_frozen?
end
def test_identifier_should_not_be_frozen_for_a_saved_repository_with_blank_identifier
Repository.update_all(["identifier = ''"], "id = 10")
assert_equal false, Repository.find(10).identifier_frozen?
end
def test_identifier_should_be_frozen_for_a_saved_repository_with_valid_identifier
Repository.update_all(["identifier = 'abc123'"], "id = 10")
assert_equal true, Repository.find(10).identifier_frozen?
end
def test_identifier_should_not_accept_change_if_frozen
r = Repository.new(:identifier => 'foo')
r.stubs(:identifier_frozen?).returns(true)
r.identifier = 'bar'
assert_equal 'foo', r.identifier
end
def test_identifier_should_accept_change_if_not_frozen
r = Repository.new(:identifier => 'foo')
r.stubs(:identifier_frozen?).returns(false)
r.identifier = 'bar'
assert_equal 'bar', r.identifier
end
Jean-Philippe Lang
Make repository identifier accept underscores (#11192)....
r9692
Jean-Philippe Lang
Clear changesets and changes with raw sql when deleting a repository (#1627)....
r1651 def test_destroy
Jean-Philippe Lang
Renamed #changes association to #filechanges (clash with AR::Base.changes that triggers errors with Rails 3.2.5)....
r9576 repository = Repository.find(10)
changesets = repository.changesets.count
changes = repository.filechanges.count
Jean-Philippe Lang
Clear changesets and changes with raw sql when deleting a repository (#1627)....
r1651 assert_difference 'Changeset.count', -changesets do
assert_difference 'Change.count', -changes do
Repository.find(10).destroy
end
end
end
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075
Jean-Philippe Lang
Fixed that changesets parents associations are not deleted when deleting a repository....
r8727 def test_destroy_should_delete_parents_associations
changeset = Changeset.find(102)
changeset.parents = Changeset.find_all_by_id([100, 101])
assert_difference 'Changeset.connection.select_all("select * from changeset_parents").size', -2 do
Repository.find(10).destroy
end
end
Jean-Philippe Lang
Adds a test for changeset/issue relations deletion....
r8728 def test_destroy_should_delete_issues_associations
changeset = Changeset.find(102)
changeset.issues = Issue.find_all_by_id([1, 2])
assert_difference 'Changeset.connection.select_all("select * from changesets_issues").size', -2 do
Repository.find(10).destroy
end
end
Jean-Philippe Lang
Ability to disable unused SCM adapters in application settings....
r1493 def test_should_not_create_with_disabled_scm
# disable Subversion
Jean-Philippe Lang
When destroying a user, remove all references to that user (#7296)....
r4606 with_settings :enabled_scm => ['Darcs', 'Git'] do
Toshi MARUYAMA
scm: code clean up unit repository test....
r5589 repository = Repository::Subversion.new(
:project => Project.find(3), :url => "svn://localhost")
Jean-Philippe Lang
When destroying a user, remove all references to that user (#7296)....
r4606 assert !repository.save
Jean-Philippe Lang
Changed assertions to make them work with Rails2/3 ruby1.8/1.9 different behaviours....
r8988 assert_include I18n.translate('activerecord.errors.messages.invalid'),
repository.errors[:type]
Jean-Philippe Lang
When destroying a user, remove all references to that user (#7296)....
r4606 end
Jean-Philippe Lang
Ability to disable unused SCM adapters in application settings....
r1493 end
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 def test_scan_changesets_for_issue_ids
Jean-Philippe Lang
Slight tests fixes....
r2053 Setting.default_language = 'en'
Toshi MARUYAMA
scm: space cleanup in unit repository test....
r5495
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 # choosing a status to apply to fix issues
Toshi MARUYAMA
scm: code clean up unit repository test....
r5589 Setting.commit_fix_status_id = IssueStatus.find(
:first,
:conditions => ["is_closed = ?", true]).id
Jean-Philippe Lang
Added the ability to set the "done ratio" of issues fixed by commit (original path by Nikolay Solakov, slightly edited)....
r810 Setting.commit_fix_done_ratio = "90"
Jean-Philippe Lang
Commit message parser:...
r848 Setting.commit_ref_keywords = 'refs , references, IssueID'
Setting.commit_fix_keywords = 'fixes , closes'
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 Setting.default_language = 'en'
ActionMailer::Base.deliveries.clear
Toshi MARUYAMA
scm: space cleanup in unit repository test....
r5495
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 # make sure issue 1 is not already closed
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 fixed_issue = Issue.find(1)
assert !fixed_issue.status.is_closed?
old_status = fixed_issue.status
Toshi MARUYAMA
scm: space cleanup in unit repository test....
r5495
Jean-Philippe Lang
Tests should not change settings....
r9766 with_settings :notified_events => %w(issue_added issue_updated) do
Repository.scan_changesets_for_issue_ids
end
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 assert_equal [101, 102], Issue.find(3).changeset_ids
Toshi MARUYAMA
scm: space cleanup in unit repository test....
r5495
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 # fixed issues
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 fixed_issue.reload
Jean-Philippe Lang
Added the ability to set the "done ratio" of issues fixed by commit (original path by Nikolay Solakov, slightly edited)....
r810 assert fixed_issue.status.is_closed?
assert_equal 90, fixed_issue.done_ratio
assert_equal [101], fixed_issue.changeset_ids
Toshi MARUYAMA
scm: space cleanup in unit repository test....
r5495
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 # issue change
journal = fixed_issue.journals.find(:first, :order => 'created_on desc')
assert_equal User.find_by_login('dlopper'), journal.user
assert_equal 'Applied in changeset r2.', journal.notes
Toshi MARUYAMA
scm: space cleanup in unit repository test....
r5495
Jean-Philippe Lang
Create a journal and send an email when an issue is closed by commit (#609)....
r1112 # 2 email notifications
assert_equal 2, ActionMailer::Base.deliveries.size
mail = ActionMailer::Base.deliveries.first
Jean-Philippe Lang
Do not do assertions on mail class....
r8871 assert_not_nil mail
Toshi MARUYAMA
scm: code clean up unit repository test....
r5589 assert mail.subject.starts_with?(
"[#{fixed_issue.project.name} - #{fixed_issue.tracker.name} ##{fixed_issue.id}]")
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 assert_mail_body_match(
"Status changed from #{old_status} to #{fixed_issue.status}", mail)
Toshi MARUYAMA
scm: space cleanup in unit repository test....
r5495
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 # ignoring commits referencing an issue of another project
assert_equal [], Issue.find(4).changesets
end
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075
Jean-Philippe Lang
Changeset comments are now stripped before being stored in the database (patch by Nicholas Wieland)....
r651 def test_for_changeset_comments_strip
Toshi MARUYAMA
scm: code clean up unit repository test....
r5589 repository = Repository::Mercurial.create(
:project => Project.find( 4 ),
:url => '/foo/bar/baz' )
Jean-Philippe Lang
Changeset comments are now stripped before being stored in the database (patch by Nicholas Wieland)....
r651 comment = <<-COMMENT
This is a loooooooooooooooooooooooooooong comment
COMMENT
changeset = Changeset.new(
Toshi MARUYAMA
scm: code clean up unit repository test....
r5589 :comments => comment, :commit_date => Time.now,
:revision => 0, :scmid => 'f39b7922fb3c',
:committer => 'foo <foo@example.com>',
:committed_on => Time.now, :repository => repository )
Jean-Philippe Lang
Changeset comments are now stripped before being stored in the database (patch by Nicholas Wieland)....
r651 assert( changeset.save )
assert_not_equal( comment, changeset.comments )
Toshi MARUYAMA
scm: code clean up unit repository test....
r5589 assert_equal( 'This is a loooooooooooooooooooooooooooong comment',
changeset.comments )
Jean-Philippe Lang
Changeset comments are now stripped before being stored in the database (patch by Nicholas Wieland)....
r651 end
Toshi MARUYAMA
scm: add feature of per project repository log encoding setting (#1735)....
r4862
Toshi MARUYAMA
scm: rename test_for_urls_strip to test_for_urls_strip_cvs at unit repository test....
r6705 def test_for_urls_strip_cvs
Toshi MARUYAMA
scm: add feature of per project repository log encoding setting (#1735)....
r4862 repository = Repository::Cvs.create(
:project => Project.find(4),
:url => ' :pserver:login:password@host:/path/to/the/repository',
:root_url => 'foo ',
:log_encoding => 'UTF-8')
Jean-Philippe Lang
Strip repository urls (closes #852)....
r1234 assert repository.save
repository.reload
Toshi MARUYAMA
scm: code clean up unit repository test....
r5589 assert_equal ':pserver:login:password@host:/path/to/the/repository',
repository.url
Jean-Philippe Lang
Strip repository urls (closes #852)....
r1234 assert_equal 'foo', repository.root_url
end
Toshi MARUYAMA
scm: add feature of per project repository log encoding setting (#1735)....
r4862
Toshi MARUYAMA
scm: add test to strip subversion repository path at unit repository test....
r6706 def test_for_urls_strip_subversion
repository = Repository::Subversion.create(
:project => Project.find(4),
:url => ' file:///dummy ')
assert repository.save
repository.reload
assert_equal 'file:///dummy', repository.url
end
Toshi MARUYAMA
scm: add test to strip git repository path at unit repository test....
r6707 def test_for_urls_strip_git
repository = Repository::Git.create(
:project => Project.find(4),
:url => ' c:\dummy ')
assert repository.save
repository.reload
assert_equal 'c:\dummy', repository.url
end
Jean-Philippe Lang
Maps repository users to Redmine users (#1383)....
r2004 def test_manual_user_mapping
assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075 c = Changeset.create!(
:repository => @repository,
:committer => 'foo',
:committed_on => Time.now,
:revision => 100,
:comments => 'Committed by foo.'
)
Jean-Philippe Lang
Maps repository users to Redmine users (#1383)....
r2004 assert_nil c.user
@repository.committer_ids = {'foo' => '2'}
assert_equal User.find(2), c.reload.user
# committer is now mapped
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075 c = Changeset.create!(
:repository => @repository,
:committer => 'foo',
:committed_on => Time.now,
:revision => 101,
:comments => 'Another commit by foo.'
)
Jean-Philippe Lang
Maps repository users to Redmine users (#1383)....
r2004 assert_equal User.find(2), c.user
end
end
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075
Jean-Philippe Lang
Maps repository users to Redmine users (#1383)....
r2004 def test_auto_user_mapping_by_username
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075 c = Changeset.create!(
Toshi MARUYAMA
scm: code clean up unit repository test....
r5538 :repository => @repository,
:committer => 'jsmith',
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075 :committed_on => Time.now,
Toshi MARUYAMA
scm: code clean up unit repository test....
r5538 :revision => 100,
:comments => 'Committed by john.'
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075 )
Jean-Philippe Lang
Maps repository users to Redmine users (#1383)....
r2004 assert_equal User.find(2), c.user
end
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075
Jean-Philippe Lang
Maps repository users to Redmine users (#1383)....
r2004 def test_auto_user_mapping_by_email
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075 c = Changeset.create!(
Toshi MARUYAMA
scm: code clean up unit repository test....
r5538 :repository => @repository,
:committer => 'john <jsmith@somenet.foo>',
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075 :committed_on => Time.now,
Toshi MARUYAMA
scm: code clean up unit repository test....
r5538 :revision => 100,
:comments => 'Committed by john.'
Toshi MARUYAMA
scm: code clean up test/unit/repository_test.rb....
r5075 )
Jean-Philippe Lang
Maps repository users to Redmine users (#1383)....
r2004 assert_equal User.find(2), c.user
end
Toshi MARUYAMA
scm: add filesystem available test at unit repository test (#4273)....
r5244
def test_filesystem_avaialbe
klass = Repository::Filesystem
assert klass.scm_adapter_class
assert_equal true, klass.scm_available
end
Toshi MARUYAMA
scm: add a test of a repository model method "merge_extra_info()" in unit test (#7146, #7047)....
r5647
def test_merge_extra_info
repo = Repository::Subversion.new(:project => Project.find(3))
assert !repo.save
repo.url = "svn://localhost"
assert repo.save
repo.reload
project = Project.find(3)
assert_equal repo, project.repository
assert_nil repo.extra_info
h1 = {"test_1" => {"test_11" => "test_value_11"}}
repo.merge_extra_info(h1)
assert_equal h1, repo.extra_info
h2 = {"test_2" => {
"test_21" => "test_value_21",
"test_22" => "test_value_22",
}}
repo.merge_extra_info(h2)
assert_equal (h = {"test_11" => "test_value_11"}),
repo.extra_info["test_1"]
assert_equal "test_value_21",
repo.extra_info["test_2"]["test_21"]
h3 = {"test_2" => {
"test_23" => "test_value_23",
"test_24" => "test_value_24",
}}
repo.merge_extra_info(h3)
assert_equal (h = {"test_11" => "test_value_11"}),
repo.extra_info["test_1"]
assert_nil repo.extra_info["test_2"]["test_21"]
assert_equal "test_value_23",
repo.extra_info["test_2"]["test_23"]
end
Jean-Philippe Lang
Fixed undefined method `<=>' for nil:NilClass when sorting repositories with nil identifiers (#10827)....
r9436
def test_sort_should_not_raise_an_error_with_nil_identifiers
r1 = Repository.new
r2 = Repository.new
assert_nothing_raised do
[r1, r2].sort
end
end
Jean-Philippe Lang
Commit messages are now scanned for referenced or fixed issue IDs....
r470 end