Mercurial > hg > soundsoftware-site
comparison test/unit/.svn/text-base/repository_test.rb.svn-base @ 441:cbce1fd3b1b7 redmine-1.2
Update to Redmine 1.2-stable branch (Redmine SVN rev 6000)
author | Chris Cannam |
---|---|
date | Mon, 06 Jun 2011 14:24:13 +0100 |
parents | 051f544170fe |
children |
comparison
equal
deleted
inserted
replaced
245:051f544170fe | 441:cbce1fd3b1b7 |
---|---|
1 # redMine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2007 Jean-Philippe Lang | 2 # Copyright (C) 2006-2011 Jean-Philippe Lang |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or | 4 # This program is free software; you can redistribute it and/or |
5 # modify it under the terms of the GNU General Public License | 5 # modify it under the terms of the GNU General Public License |
6 # as published by the Free Software Foundation; either version 2 | 6 # as published by the Free Software Foundation; either version 2 |
7 # of the License, or (at your option) any later version. | 7 # of the License, or (at your option) any later version. |
8 # | 8 # |
9 # This program is distributed in the hope that it will be useful, | 9 # This program is distributed in the hope that it will be useful, |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 # GNU General Public License for more details. | 12 # GNU General Public License for more details. |
13 # | 13 # |
14 # You should have received a copy of the GNU General Public License | 14 # You should have received a copy of the GNU General Public License |
15 # along with this program; if not, write to the Free Software | 15 # along with this program; if not, write to the Free Software |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
17 | 17 |
18 require File.expand_path('../../test_helper', __FILE__) | 18 require File.expand_path('../../test_helper', __FILE__) |
31 :users, | 31 :users, |
32 :members, | 32 :members, |
33 :member_roles, | 33 :member_roles, |
34 :roles, | 34 :roles, |
35 :enumerations | 35 :enumerations |
36 | 36 |
37 def setup | 37 def setup |
38 @repository = Project.find(1).repository | 38 @repository = Project.find(1).repository |
39 end | 39 end |
40 | 40 |
41 def test_create | 41 def test_create |
42 repository = Repository::Subversion.new(:project => Project.find(3)) | 42 repository = Repository::Subversion.new(:project => Project.find(3)) |
43 assert !repository.save | 43 assert !repository.save |
44 | 44 |
45 repository.url = "svn://localhost" | 45 repository.url = "svn://localhost" |
46 assert repository.save | 46 assert repository.save |
47 repository.reload | 47 repository.reload |
48 | 48 |
49 project = Project.find(3) | 49 project = Project.find(3) |
50 assert_equal repository, project.repository | 50 assert_equal repository, project.repository |
51 end | 51 end |
52 | 52 |
53 def test_destroy | 53 def test_destroy |
54 changesets = Changeset.count(:all, :conditions => "repository_id = 10") | 54 changesets = Changeset.count(:all, :conditions => "repository_id = 10") |
55 changes = Change.count(:all, :conditions => "repository_id = 10", :include => :changeset) | 55 changes = Change.count(:all, :conditions => "repository_id = 10", |
56 :include => :changeset) | |
56 assert_difference 'Changeset.count', -changesets do | 57 assert_difference 'Changeset.count', -changesets do |
57 assert_difference 'Change.count', -changes do | 58 assert_difference 'Change.count', -changes do |
58 Repository.find(10).destroy | 59 Repository.find(10).destroy |
59 end | 60 end |
60 end | 61 end |
61 end | 62 end |
62 | 63 |
63 def test_should_not_create_with_disabled_scm | 64 def test_should_not_create_with_disabled_scm |
64 # disable Subversion | 65 # disable Subversion |
65 with_settings :enabled_scm => ['Darcs', 'Git'] do | 66 with_settings :enabled_scm => ['Darcs', 'Git'] do |
66 repository = Repository::Subversion.new(:project => Project.find(3), :url => "svn://localhost") | 67 repository = Repository::Subversion.new( |
68 :project => Project.find(3), :url => "svn://localhost") | |
67 assert !repository.save | 69 assert !repository.save |
68 assert_equal I18n.translate('activerecord.errors.messages.invalid'), repository.errors.on(:type) | 70 assert_equal I18n.translate('activerecord.errors.messages.invalid'), |
71 repository.errors.on(:type) | |
69 end | 72 end |
70 end | 73 end |
71 | 74 |
72 def test_scan_changesets_for_issue_ids | 75 def test_scan_changesets_for_issue_ids |
73 Setting.default_language = 'en' | 76 Setting.default_language = 'en' |
74 Setting.notified_events = ['issue_added','issue_updated'] | 77 Setting.notified_events = ['issue_added','issue_updated'] |
75 | 78 |
76 # choosing a status to apply to fix issues | 79 # choosing a status to apply to fix issues |
77 Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id | 80 Setting.commit_fix_status_id = IssueStatus.find( |
81 :first, | |
82 :conditions => ["is_closed = ?", true]).id | |
78 Setting.commit_fix_done_ratio = "90" | 83 Setting.commit_fix_done_ratio = "90" |
79 Setting.commit_ref_keywords = 'refs , references, IssueID' | 84 Setting.commit_ref_keywords = 'refs , references, IssueID' |
80 Setting.commit_fix_keywords = 'fixes , closes' | 85 Setting.commit_fix_keywords = 'fixes , closes' |
81 Setting.default_language = 'en' | 86 Setting.default_language = 'en' |
82 ActionMailer::Base.deliveries.clear | 87 ActionMailer::Base.deliveries.clear |
83 | 88 |
84 # make sure issue 1 is not already closed | 89 # make sure issue 1 is not already closed |
85 fixed_issue = Issue.find(1) | 90 fixed_issue = Issue.find(1) |
86 assert !fixed_issue.status.is_closed? | 91 assert !fixed_issue.status.is_closed? |
87 old_status = fixed_issue.status | 92 old_status = fixed_issue.status |
88 | 93 |
89 Repository.scan_changesets_for_issue_ids | 94 Repository.scan_changesets_for_issue_ids |
90 assert_equal [101, 102], Issue.find(3).changeset_ids | 95 assert_equal [101, 102], Issue.find(3).changeset_ids |
91 | 96 |
92 # fixed issues | 97 # fixed issues |
93 fixed_issue.reload | 98 fixed_issue.reload |
94 assert fixed_issue.status.is_closed? | 99 assert fixed_issue.status.is_closed? |
95 assert_equal 90, fixed_issue.done_ratio | 100 assert_equal 90, fixed_issue.done_ratio |
96 assert_equal [101], fixed_issue.changeset_ids | 101 assert_equal [101], fixed_issue.changeset_ids |
97 | 102 |
98 # issue change | 103 # issue change |
99 journal = fixed_issue.journals.find(:first, :order => 'created_on desc') | 104 journal = fixed_issue.journals.find(:first, :order => 'created_on desc') |
100 assert_equal User.find_by_login('dlopper'), journal.user | 105 assert_equal User.find_by_login('dlopper'), journal.user |
101 assert_equal 'Applied in changeset r2.', journal.notes | 106 assert_equal 'Applied in changeset r2.', journal.notes |
102 | 107 |
103 # 2 email notifications | 108 # 2 email notifications |
104 assert_equal 2, ActionMailer::Base.deliveries.size | 109 assert_equal 2, ActionMailer::Base.deliveries.size |
105 mail = ActionMailer::Base.deliveries.first | 110 mail = ActionMailer::Base.deliveries.first |
106 assert_kind_of TMail::Mail, mail | 111 assert_kind_of TMail::Mail, mail |
107 assert mail.subject.starts_with?("[#{fixed_issue.project.name} - #{fixed_issue.tracker.name} ##{fixed_issue.id}]") | 112 assert mail.subject.starts_with?( |
108 assert mail.body.include?("Status changed from #{old_status} to #{fixed_issue.status}") | 113 "[#{fixed_issue.project.name} - #{fixed_issue.tracker.name} ##{fixed_issue.id}]") |
109 | 114 assert mail.body.include?( |
115 "Status changed from #{old_status} to #{fixed_issue.status}") | |
116 | |
110 # ignoring commits referencing an issue of another project | 117 # ignoring commits referencing an issue of another project |
111 assert_equal [], Issue.find(4).changesets | 118 assert_equal [], Issue.find(4).changesets |
112 end | 119 end |
113 | 120 |
114 def test_for_changeset_comments_strip | 121 def test_for_changeset_comments_strip |
115 repository = Repository::Mercurial.create( :project => Project.find( 4 ), :url => '/foo/bar/baz' ) | 122 repository = Repository::Mercurial.create( |
123 :project => Project.find( 4 ), | |
124 :url => '/foo/bar/baz' ) | |
116 comment = <<-COMMENT | 125 comment = <<-COMMENT |
117 This is a loooooooooooooooooooooooooooong comment | 126 This is a loooooooooooooooooooooooooooong comment |
118 | 127 |
119 | 128 |
120 COMMENT | 129 COMMENT |
121 changeset = Changeset.new( | 130 changeset = Changeset.new( |
122 :comments => comment, :commit_date => Time.now, :revision => 0, :scmid => 'f39b7922fb3c', | 131 :comments => comment, :commit_date => Time.now, |
123 :committer => 'foo <foo@example.com>', :committed_on => Time.now, :repository => repository ) | 132 :revision => 0, :scmid => 'f39b7922fb3c', |
133 :committer => 'foo <foo@example.com>', | |
134 :committed_on => Time.now, :repository => repository ) | |
124 assert( changeset.save ) | 135 assert( changeset.save ) |
125 assert_not_equal( comment, changeset.comments ) | 136 assert_not_equal( comment, changeset.comments ) |
126 assert_equal( 'This is a loooooooooooooooooooooooooooong comment', changeset.comments ) | 137 assert_equal( 'This is a loooooooooooooooooooooooooooong comment', |
138 changeset.comments ) | |
127 end | 139 end |
128 | 140 |
129 def test_for_urls_strip | 141 def test_for_urls_strip |
130 repository = Repository::Cvs.create( | 142 repository = Repository::Cvs.create( |
131 :project => Project.find(4), | 143 :project => Project.find(4), |
132 :url => ' :pserver:login:password@host:/path/to/the/repository', | 144 :url => ' :pserver:login:password@host:/path/to/the/repository', |
133 :root_url => 'foo ', | 145 :root_url => 'foo ', |
134 :log_encoding => 'UTF-8') | 146 :log_encoding => 'UTF-8') |
135 assert repository.save | 147 assert repository.save |
136 repository.reload | 148 repository.reload |
137 assert_equal ':pserver:login:password@host:/path/to/the/repository', repository.url | 149 assert_equal ':pserver:login:password@host:/path/to/the/repository', |
150 repository.url | |
138 assert_equal 'foo', repository.root_url | 151 assert_equal 'foo', repository.root_url |
139 end | 152 end |
140 | 153 |
141 def test_manual_user_mapping | 154 def test_manual_user_mapping |
142 assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do | 155 assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do |
143 c = Changeset.create!(:repository => @repository, :committer => 'foo', :committed_on => Time.now, :revision => 100, :comments => 'Committed by foo.') | 156 c = Changeset.create!( |
157 :repository => @repository, | |
158 :committer => 'foo', | |
159 :committed_on => Time.now, | |
160 :revision => 100, | |
161 :comments => 'Committed by foo.' | |
162 ) | |
144 assert_nil c.user | 163 assert_nil c.user |
145 @repository.committer_ids = {'foo' => '2'} | 164 @repository.committer_ids = {'foo' => '2'} |
146 assert_equal User.find(2), c.reload.user | 165 assert_equal User.find(2), c.reload.user |
147 # committer is now mapped | 166 # committer is now mapped |
148 c = Changeset.create!(:repository => @repository, :committer => 'foo', :committed_on => Time.now, :revision => 101, :comments => 'Another commit by foo.') | 167 c = Changeset.create!( |
168 :repository => @repository, | |
169 :committer => 'foo', | |
170 :committed_on => Time.now, | |
171 :revision => 101, | |
172 :comments => 'Another commit by foo.' | |
173 ) | |
149 assert_equal User.find(2), c.user | 174 assert_equal User.find(2), c.user |
150 end | 175 end |
151 end | 176 end |
152 | 177 |
153 def test_auto_user_mapping_by_username | 178 def test_auto_user_mapping_by_username |
154 c = Changeset.create!(:repository => @repository, :committer => 'jsmith', :committed_on => Time.now, :revision => 100, :comments => 'Committed by john.') | 179 c = Changeset.create!( |
180 :repository => @repository, | |
181 :committer => 'jsmith', | |
182 :committed_on => Time.now, | |
183 :revision => 100, | |
184 :comments => 'Committed by john.' | |
185 ) | |
155 assert_equal User.find(2), c.user | 186 assert_equal User.find(2), c.user |
156 end | 187 end |
157 | 188 |
158 def test_auto_user_mapping_by_email | 189 def test_auto_user_mapping_by_email |
159 c = Changeset.create!(:repository => @repository, :committer => 'john <jsmith@somenet.foo>', :committed_on => Time.now, :revision => 100, :comments => 'Committed by john.') | 190 c = Changeset.create!( |
191 :repository => @repository, | |
192 :committer => 'john <jsmith@somenet.foo>', | |
193 :committed_on => Time.now, | |
194 :revision => 100, | |
195 :comments => 'Committed by john.' | |
196 ) | |
160 assert_equal User.find(2), c.user | 197 assert_equal User.find(2), c.user |
161 end | 198 end |
199 | |
200 def test_filesystem_avaialbe | |
201 klass = Repository::Filesystem | |
202 assert klass.scm_adapter_class | |
203 assert_equal true, klass.scm_available | |
204 end | |
205 | |
206 def test_merge_extra_info | |
207 repo = Repository::Subversion.new(:project => Project.find(3)) | |
208 assert !repo.save | |
209 repo.url = "svn://localhost" | |
210 assert repo.save | |
211 repo.reload | |
212 project = Project.find(3) | |
213 assert_equal repo, project.repository | |
214 assert_nil repo.extra_info | |
215 h1 = {"test_1" => {"test_11" => "test_value_11"}} | |
216 repo.merge_extra_info(h1) | |
217 assert_equal h1, repo.extra_info | |
218 h2 = {"test_2" => { | |
219 "test_21" => "test_value_21", | |
220 "test_22" => "test_value_22", | |
221 }} | |
222 repo.merge_extra_info(h2) | |
223 assert_equal (h = {"test_11" => "test_value_11"}), | |
224 repo.extra_info["test_1"] | |
225 assert_equal "test_value_21", | |
226 repo.extra_info["test_2"]["test_21"] | |
227 h3 = {"test_2" => { | |
228 "test_23" => "test_value_23", | |
229 "test_24" => "test_value_24", | |
230 }} | |
231 repo.merge_extra_info(h3) | |
232 assert_equal (h = {"test_11" => "test_value_11"}), | |
233 repo.extra_info["test_1"] | |
234 assert_nil repo.extra_info["test_2"]["test_21"] | |
235 assert_equal "test_value_23", | |
236 repo.extra_info["test_2"]["test_23"] | |
237 end | |
162 end | 238 end |