| 
									
										
										
										
											2011-05-06 01:11:50 +00:00
										 |  |  | # Redmine - project management software | 
					
						
							|  |  |  | # Copyright (C) 2006-2011  Jean-Philippe Lang | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # 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. | 
					
						
							| 
									
										
										
										
											2011-05-06 01:11:50 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  | # 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. | 
					
						
							| 
									
										
										
										
											2011-05-06 01:11:50 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  | # 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-12 23:24:34 +00:00
										 |  |  | require File.expand_path('../../test_helper', __FILE__) | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-13 17:14:35 +00:00
										 |  |  | class RepositoryTest < ActiveSupport::TestCase | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |   fixtures :projects, | 
					
						
							|  |  |  |            :trackers, | 
					
						
							|  |  |  |            :projects_trackers, | 
					
						
							| 
									
										
										
										
											2010-12-20 18:30:36 +00:00
										 |  |  |            :enabled_modules, | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |            :repositories, | 
					
						
							|  |  |  |            :issues, | 
					
						
							|  |  |  |            :issue_statuses, | 
					
						
							| 
									
										
										
										
											2010-12-20 18:30:36 +00:00
										 |  |  |            :issue_categories, | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |            :changesets, | 
					
						
							|  |  |  |            :changes, | 
					
						
							|  |  |  |            :users, | 
					
						
							| 
									
										
										
										
											2010-12-20 18:30:36 +00:00
										 |  |  |            :members, | 
					
						
							|  |  |  |            :member_roles, | 
					
						
							|  |  |  |            :roles, | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |            :enumerations | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-24 04:08:47 +00:00
										 |  |  |   include Redmine::I18n | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-15 21:32:36 +00:00
										 |  |  |   def setup | 
					
						
							|  |  |  |     @repository = Project.find(1).repository | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-24 04:08:47 +00:00
										 |  |  |   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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-20 14:06:57 +00:00
										 |  |  |   def test_create | 
					
						
							| 
									
										
										
										
											2007-12-01 17:15:42 +00:00
										 |  |  |     repository = Repository::Subversion.new(:project => Project.find(3)) | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |     assert !repository.save | 
					
						
							| 
									
										
										
										
											2011-05-06 01:11:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-20 14:06:57 +00:00
										 |  |  |     repository.url = "svn://localhost" | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |     assert repository.save | 
					
						
							|  |  |  |     repository.reload | 
					
						
							| 
									
										
										
										
											2011-05-02 23:07:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-01 17:15:42 +00:00
										 |  |  |     project = Project.find(3) | 
					
						
							| 
									
										
										
										
											2009-09-20 14:06:57 +00:00
										 |  |  |     assert_equal repository, project.repository | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-15 18:19:19 +00:00
										 |  |  |   def test_first_repository_should_be_set_as_default | 
					
						
							|  |  |  |     repository1 = Repository::Subversion.new(:project => Project.find(3), :identifier => 'svn1', :url => 'file:///svn1') | 
					
						
							|  |  |  |     assert repository1.save | 
					
						
							|  |  |  |     assert repository1.is_default? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     repository2 = Repository::Subversion.new(:project => Project.find(3), :identifier => 'svn2', :url => 'file:///svn2') | 
					
						
							|  |  |  |     assert repository2.save | 
					
						
							|  |  |  |     assert !repository2.is_default? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_equal repository1, Project.find(3).repository | 
					
						
							|  |  |  |     assert_equal [repository1, repository2], Project.find(3).repositories.sort | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-13 21:55:13 +00:00
										 |  |  |   def test_destroy | 
					
						
							|  |  |  |     changesets = Changeset.count(:all, :conditions => "repository_id = 10") | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |     changes = Change.count(:all, :conditions => "repository_id = 10", | 
					
						
							|  |  |  |                            :include => :changeset) | 
					
						
							| 
									
										
										
										
											2008-07-13 21:55:13 +00:00
										 |  |  |     assert_difference 'Changeset.count', -changesets do | 
					
						
							|  |  |  |       assert_difference 'Change.count', -changes do | 
					
						
							|  |  |  |         Repository.find(10).destroy | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-11 14:17:47 +00:00
										 |  |  |   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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-11 14:19:16 +00:00
										 |  |  |   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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-08 14:59:26 +00:00
										 |  |  |   def test_should_not_create_with_disabled_scm | 
					
						
							|  |  |  |     # disable Subversion | 
					
						
							| 
									
										
										
										
											2011-01-16 14:27:02 +00:00
										 |  |  |     with_settings :enabled_scm => ['Darcs', 'Git'] do | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |       repository = Repository::Subversion.new( | 
					
						
							|  |  |  |                       :project => Project.find(3), :url => "svn://localhost") | 
					
						
							| 
									
										
										
										
											2011-01-16 14:27:02 +00:00
										 |  |  |       assert !repository.save | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |       assert_equal I18n.translate('activerecord.errors.messages.invalid'), | 
					
						
							| 
									
										
										
										
											2011-12-09 07:14:38 +00:00
										 |  |  |                                   repository.errors[:type].to_s | 
					
						
							| 
									
										
										
										
											2011-01-16 14:27:02 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2008-06-08 14:59:26 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |   def test_scan_changesets_for_issue_ids | 
					
						
							| 
									
										
										
										
											2008-11-25 17:37:41 +00:00
										 |  |  |     Setting.default_language = 'en' | 
					
						
							| 
									
										
										
										
											2010-09-28 20:20:00 +00:00
										 |  |  |     Setting.notified_events = ['issue_added','issue_updated'] | 
					
						
							| 
									
										
										
										
											2011-05-02 23:07:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |     # choosing a status to apply to fix issues | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |     Setting.commit_fix_status_id = IssueStatus.find( | 
					
						
							|  |  |  |                                      :first, | 
					
						
							|  |  |  |                                      :conditions => ["is_closed = ?", true]).id | 
					
						
							| 
									
										
										
										
											2007-10-10 18:56:59 +00:00
										 |  |  |     Setting.commit_fix_done_ratio = "90" | 
					
						
							| 
									
										
										
										
											2007-10-22 16:52:36 +00:00
										 |  |  |     Setting.commit_ref_keywords = 'refs , references, IssueID' | 
					
						
							|  |  |  |     Setting.commit_fix_keywords = 'fixes , closes' | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |     Setting.default_language = 'en' | 
					
						
							|  |  |  |     ActionMailer::Base.deliveries.clear | 
					
						
							| 
									
										
										
										
											2011-05-02 23:07:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |     # make sure issue 1 is not already closed | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |     fixed_issue = Issue.find(1) | 
					
						
							|  |  |  |     assert !fixed_issue.status.is_closed? | 
					
						
							|  |  |  |     old_status = fixed_issue.status | 
					
						
							| 
									
										
										
										
											2011-05-02 23:07:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |     Repository.scan_changesets_for_issue_ids | 
					
						
							|  |  |  |     assert_equal [101, 102], Issue.find(3).changeset_ids | 
					
						
							| 
									
										
										
										
											2011-05-02 23:07:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |     # fixed issues | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |     fixed_issue.reload | 
					
						
							| 
									
										
										
										
											2007-10-10 18:56:59 +00:00
										 |  |  |     assert fixed_issue.status.is_closed? | 
					
						
							|  |  |  |     assert_equal 90, fixed_issue.done_ratio | 
					
						
							|  |  |  |     assert_equal [101], fixed_issue.changeset_ids | 
					
						
							| 
									
										
										
										
											2011-05-02 23:07:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |     # 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 | 
					
						
							| 
									
										
										
										
											2011-05-02 23:07:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-06 20:02:30 +00:00
										 |  |  |     # 2 email notifications | 
					
						
							|  |  |  |     assert_equal 2, ActionMailer::Base.deliveries.size | 
					
						
							|  |  |  |     mail = ActionMailer::Base.deliveries.first | 
					
						
							|  |  |  |     assert_kind_of TMail::Mail, mail | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |     assert mail.subject.starts_with?( | 
					
						
							|  |  |  |         "[#{fixed_issue.project.name} - #{fixed_issue.tracker.name} ##{fixed_issue.id}]") | 
					
						
							|  |  |  |     assert mail.body.include?( | 
					
						
							|  |  |  |         "Status changed from #{old_status} to #{fixed_issue.status}") | 
					
						
							| 
									
										
										
										
											2011-05-02 23:07:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  |     # ignoring commits referencing an issue of another project | 
					
						
							|  |  |  |     assert_equal [], Issue.find(4).changesets | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-25 14:41:55 +00:00
										 |  |  |   def test_for_changeset_comments_strip | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |     repository = Repository::Mercurial.create( | 
					
						
							|  |  |  |                     :project => Project.find( 4 ), | 
					
						
							|  |  |  |                     :url => '/foo/bar/baz' ) | 
					
						
							| 
									
										
										
										
											2007-08-25 14:41:55 +00:00
										 |  |  |     comment = <<-COMMENT
 | 
					
						
							|  |  |  |     This is a loooooooooooooooooooooooooooong comment                                                    | 
					
						
							|  |  |  |                                                                                                         | 
					
						
							|  |  |  |                                                                                              | 
					
						
							|  |  |  |     COMMENT | 
					
						
							|  |  |  |     changeset = Changeset.new( | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |       :comments => comment, :commit_date => Time.now, | 
					
						
							|  |  |  |       :revision => 0, :scmid => 'f39b7922fb3c', | 
					
						
							|  |  |  |       :committer => 'foo <foo@example.com>', | 
					
						
							|  |  |  |       :committed_on => Time.now, :repository => repository ) | 
					
						
							| 
									
										
										
										
											2007-08-25 14:41:55 +00:00
										 |  |  |     assert( changeset.save ) | 
					
						
							|  |  |  |     assert_not_equal( comment, changeset.comments ) | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |     assert_equal( 'This is a loooooooooooooooooooooooooooong comment', | 
					
						
							|  |  |  |                   changeset.comments ) | 
					
						
							| 
									
										
										
										
											2007-08-25 14:41:55 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-01 10:27:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-30 15:59:42 +00:00
										 |  |  |   def test_for_urls_strip_cvs | 
					
						
							| 
									
										
										
										
											2011-03-01 10:27:30 +00:00
										 |  |  |     repository = Repository::Cvs.create( | 
					
						
							|  |  |  |         :project => Project.find(4), | 
					
						
							|  |  |  |         :url => ' :pserver:login:password@host:/path/to/the/repository', | 
					
						
							|  |  |  |         :root_url => 'foo  ', | 
					
						
							|  |  |  |         :log_encoding => 'UTF-8') | 
					
						
							| 
									
										
										
										
											2008-03-14 18:59:10 +00:00
										 |  |  |     assert repository.save | 
					
						
							|  |  |  |     repository.reload | 
					
						
							| 
									
										
										
										
											2011-05-08 14:08:46 +00:00
										 |  |  |     assert_equal ':pserver:login:password@host:/path/to/the/repository', | 
					
						
							|  |  |  |                   repository.url | 
					
						
							| 
									
										
										
										
											2008-03-14 18:59:10 +00:00
										 |  |  |     assert_equal 'foo', repository.root_url | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-01 10:27:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-30 16:00:27 +00:00
										 |  |  |   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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-30 16:01:12 +00:00
										 |  |  |   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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-10 18:59:06 +00:00
										 |  |  |   def test_manual_user_mapping | 
					
						
							|  |  |  |     assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  |       c = Changeset.create!( | 
					
						
							|  |  |  |               :repository => @repository, | 
					
						
							|  |  |  |               :committer => 'foo', | 
					
						
							|  |  |  |               :committed_on => Time.now, | 
					
						
							|  |  |  |               :revision => 100, | 
					
						
							|  |  |  |               :comments => 'Committed by foo.' | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2008-11-10 18:59:06 +00:00
										 |  |  |       assert_nil c.user | 
					
						
							|  |  |  |       @repository.committer_ids = {'foo' => '2'} | 
					
						
							|  |  |  |       assert_equal User.find(2), c.reload.user | 
					
						
							|  |  |  |       # committer is now mapped | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  |       c = Changeset.create!( | 
					
						
							|  |  |  |               :repository => @repository, | 
					
						
							|  |  |  |               :committer => 'foo', | 
					
						
							|  |  |  |               :committed_on => Time.now, | 
					
						
							|  |  |  |               :revision => 101, | 
					
						
							|  |  |  |               :comments => 'Another commit by foo.' | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2008-11-10 18:59:06 +00:00
										 |  |  |       assert_equal User.find(2), c.user | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-10 18:59:06 +00:00
										 |  |  |   def test_auto_user_mapping_by_username | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  |     c = Changeset.create!( | 
					
						
							| 
									
										
										
										
											2011-05-06 01:11:50 +00:00
										 |  |  |           :repository   => @repository, | 
					
						
							|  |  |  |           :committer    => 'jsmith', | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  |           :committed_on => Time.now, | 
					
						
							| 
									
										
										
										
											2011-05-06 01:11:50 +00:00
										 |  |  |           :revision     => 100, | 
					
						
							|  |  |  |           :comments     => 'Committed by john.' | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2008-11-10 18:59:06 +00:00
										 |  |  |     assert_equal User.find(2), c.user | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-10 18:59:06 +00:00
										 |  |  |   def test_auto_user_mapping_by_email | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  |     c = Changeset.create!( | 
					
						
							| 
									
										
										
										
											2011-05-06 01:11:50 +00:00
										 |  |  |           :repository   => @repository, | 
					
						
							|  |  |  |           :committer    => 'john <jsmith@somenet.foo>', | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  |           :committed_on => Time.now, | 
					
						
							| 
									
										
										
										
											2011-05-06 01:11:50 +00:00
										 |  |  |           :revision     => 100, | 
					
						
							|  |  |  |           :comments     => 'Committed by john.' | 
					
						
							| 
									
										
										
										
											2011-03-22 08:42:29 +00:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2008-11-10 18:59:06 +00:00
										 |  |  |     assert_equal User.find(2), c.user | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-04-08 05:44:06 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_filesystem_avaialbe | 
					
						
							|  |  |  |     klass = Repository::Filesystem | 
					
						
							|  |  |  |     assert klass.scm_adapter_class | 
					
						
							|  |  |  |     assert_equal true, klass.scm_available | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-05-12 23:58:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   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 | 
					
						
							| 
									
										
										
										
											2007-04-24 13:57:27 +00:00
										 |  |  | end |