@@ -0,0 +1,26 | |||||
|
1 | class StoreRelationTypeInJournalDetails < ActiveRecord::Migration | |||
|
2 | ||||
|
3 | MAPPING = { | |||
|
4 | "label_relates_to" => "relates", | |||
|
5 | "label_duplicates" => "duplicates", | |||
|
6 | "label_duplicated_by" => "duplicated", | |||
|
7 | "label_blocks" => "blocks", | |||
|
8 | "label_blocked_by" => "blocked", | |||
|
9 | "label_precedes" => "precedes", | |||
|
10 | "label_follows" => "follows", | |||
|
11 | "label_copied_to" => "copied_to", | |||
|
12 | "label_copied_from" => "copied_from" | |||
|
13 | } | |||
|
14 | ||||
|
15 | def up | |||
|
16 | StoreRelationTypeInJournalDetails::MAPPING.each do |prop_key, replacement| | |||
|
17 | JournalDetail.where(:property => 'relation', :prop_key => prop_key).update_all(:prop_key => replacement) | |||
|
18 | end | |||
|
19 | end | |||
|
20 | ||||
|
21 | def down | |||
|
22 | StoreRelationTypeInJournalDetails::MAPPING.each do |prop_key, replacement| | |||
|
23 | JournalDetail.where(:property => 'relation', :prop_key => replacement).update_all(:prop_key => prop_key) | |||
|
24 | end | |||
|
25 | end | |||
|
26 | end |
@@ -340,7 +340,8 module IssuesHelper | |||||
340 | old_value = rel_issue.nil? ? "#{l(:label_issue)} ##{detail.old_value}" : |
|
340 | old_value = rel_issue.nil? ? "#{l(:label_issue)} ##{detail.old_value}" : | |
341 | (no_html ? rel_issue : link_to_issue(rel_issue, :only_path => options[:only_path])) |
|
341 | (no_html ? rel_issue : link_to_issue(rel_issue, :only_path => options[:only_path])) | |
342 | end |
|
342 | end | |
343 | label = l(detail.prop_key.to_sym) |
|
343 | relation_type = IssueRelation::TYPES[detail.prop_key] | |
|
344 | label = l(relation_type[:name]) if relation_type | |||
344 | end |
|
345 | end | |
345 | call_hook(:helper_issues_show_detail_after_setting, |
|
346 | call_hook(:helper_issues_show_detail_after_setting, | |
346 | {:detail => detail, :label => label, :value => value, :old_value => old_value }) |
|
347 | {:detail => detail, :label => label, :value => value, :old_value => old_value }) |
@@ -185,12 +185,12 class IssueRelation < ActiveRecord::Base | |||||
185 | def create_journal_after_create |
|
185 | def create_journal_after_create | |
186 | journal = issue_from.init_journal(User.current) |
|
186 | journal = issue_from.init_journal(User.current) | |
187 | journal.details << JournalDetail.new(:property => 'relation', |
|
187 | journal.details << JournalDetail.new(:property => 'relation', | |
188 |
:prop_key => |
|
188 | :prop_key => relation_type_for(issue_from), | |
189 | :value => issue_to.id) |
|
189 | :value => issue_to.id) | |
190 | journal.save |
|
190 | journal.save | |
191 | journal = issue_to.init_journal(User.current) |
|
191 | journal = issue_to.init_journal(User.current) | |
192 | journal.details << JournalDetail.new(:property => 'relation', |
|
192 | journal.details << JournalDetail.new(:property => 'relation', | |
193 |
:prop_key => |
|
193 | :prop_key => relation_type_for(issue_to), | |
194 | :value => issue_from.id) |
|
194 | :value => issue_from.id) | |
195 | journal.save |
|
195 | journal.save | |
196 | end |
|
196 | end | |
@@ -198,12 +198,12 class IssueRelation < ActiveRecord::Base | |||||
198 | def create_journal_after_delete |
|
198 | def create_journal_after_delete | |
199 | journal = issue_from.init_journal(User.current) |
|
199 | journal = issue_from.init_journal(User.current) | |
200 | journal.details << JournalDetail.new(:property => 'relation', |
|
200 | journal.details << JournalDetail.new(:property => 'relation', | |
201 |
:prop_key => |
|
201 | :prop_key => relation_type_for(issue_from), | |
202 | :old_value => issue_to.id) |
|
202 | :old_value => issue_to.id) | |
203 | journal.save |
|
203 | journal.save | |
204 | journal = issue_to.init_journal(User.current) |
|
204 | journal = issue_to.init_journal(User.current) | |
205 | journal.details << JournalDetail.new(:property => 'relation', |
|
205 | journal.details << JournalDetail.new(:property => 'relation', | |
206 |
:prop_key => |
|
206 | :prop_key => relation_type_for(issue_to), | |
207 | :old_value => issue_from.id) |
|
207 | :old_value => issue_from.id) | |
208 | journal.save |
|
208 | journal.save | |
209 | end |
|
209 | end |
@@ -213,7 +213,7 class IssuesHelperTest < ActionView::TestCase | |||||
213 |
|
213 | |||
214 | def test_show_detail_relation_added |
|
214 | def test_show_detail_relation_added | |
215 | detail = JournalDetail.new(:property => 'relation', |
|
215 | detail = JournalDetail.new(:property => 'relation', | |
216 |
:prop_key => ' |
|
216 | :prop_key => 'precedes', | |
217 | :value => 1) |
|
217 | :value => 1) | |
218 | assert_equal "Precedes Bug #1: Can't print recipes added", show_detail(detail, true) |
|
218 | assert_equal "Precedes Bug #1: Can't print recipes added", show_detail(detail, true) | |
219 | assert_match %r{<strong>Precedes</strong> <i><a href="/issues/1" class=".+">Bug #1</a>: Can't print recipes</i> added}, |
|
219 | assert_match %r{<strong>Precedes</strong> <i><a href="/issues/1" class=".+">Bug #1</a>: Can't print recipes</i> added}, | |
@@ -224,7 +224,7 class IssuesHelperTest < ActionView::TestCase | |||||
224 | inexistant_issue_number = 9999 |
|
224 | inexistant_issue_number = 9999 | |
225 | assert_nil Issue.find_by_id(inexistant_issue_number) |
|
225 | assert_nil Issue.find_by_id(inexistant_issue_number) | |
226 | detail = JournalDetail.new(:property => 'relation', |
|
226 | detail = JournalDetail.new(:property => 'relation', | |
227 |
:prop_key => ' |
|
227 | :prop_key => 'precedes', | |
228 | :value => inexistant_issue_number) |
|
228 | :value => inexistant_issue_number) | |
229 | assert_equal "Precedes Issue ##{inexistant_issue_number} added", show_detail(detail, true) |
|
229 | assert_equal "Precedes Issue ##{inexistant_issue_number} added", show_detail(detail, true) | |
230 | assert_equal "<strong>Precedes</strong> <i>Issue ##{inexistant_issue_number}</i> added", show_detail(detail, false) |
|
230 | assert_equal "<strong>Precedes</strong> <i>Issue ##{inexistant_issue_number}</i> added", show_detail(detail, false) | |
@@ -233,7 +233,7 class IssuesHelperTest < ActionView::TestCase | |||||
233 | def test_show_detail_relation_added_should_not_disclose_issue_that_is_not_visible |
|
233 | def test_show_detail_relation_added_should_not_disclose_issue_that_is_not_visible | |
234 | issue = Issue.generate!(:is_private => true) |
|
234 | issue = Issue.generate!(:is_private => true) | |
235 | detail = JournalDetail.new(:property => 'relation', |
|
235 | detail = JournalDetail.new(:property => 'relation', | |
236 |
:prop_key => ' |
|
236 | :prop_key => 'precedes', | |
237 | :value => issue.id) |
|
237 | :value => issue.id) | |
238 |
|
238 | |||
239 | assert_equal "Precedes Issue ##{issue.id} added", show_detail(detail, true) |
|
239 | assert_equal "Precedes Issue ##{issue.id} added", show_detail(detail, true) | |
@@ -242,7 +242,7 class IssuesHelperTest < ActionView::TestCase | |||||
242 |
|
242 | |||
243 | def test_show_detail_relation_deleted |
|
243 | def test_show_detail_relation_deleted | |
244 | detail = JournalDetail.new(:property => 'relation', |
|
244 | detail = JournalDetail.new(:property => 'relation', | |
245 |
:prop_key => ' |
|
245 | :prop_key => 'precedes', | |
246 | :old_value => 1) |
|
246 | :old_value => 1) | |
247 | assert_equal "Precedes deleted (Bug #1: Can't print recipes)", show_detail(detail, true) |
|
247 | assert_equal "Precedes deleted (Bug #1: Can't print recipes)", show_detail(detail, true) | |
248 | assert_match %r{<strong>Precedes</strong> deleted \(<i><a href="/issues/1" class=".+">Bug #1</a>: Can't print recipes</i>\)}, |
|
248 | assert_match %r{<strong>Precedes</strong> deleted \(<i><a href="/issues/1" class=".+">Bug #1</a>: Can't print recipes</i>\)}, | |
@@ -253,7 +253,7 class IssuesHelperTest < ActionView::TestCase | |||||
253 | inexistant_issue_number = 9999 |
|
253 | inexistant_issue_number = 9999 | |
254 | assert_nil Issue.find_by_id(inexistant_issue_number) |
|
254 | assert_nil Issue.find_by_id(inexistant_issue_number) | |
255 | detail = JournalDetail.new(:property => 'relation', |
|
255 | detail = JournalDetail.new(:property => 'relation', | |
256 |
:prop_key => ' |
|
256 | :prop_key => 'precedes', | |
257 | :old_value => inexistant_issue_number) |
|
257 | :old_value => inexistant_issue_number) | |
258 | assert_equal "Precedes deleted (Issue #9999)", show_detail(detail, true) |
|
258 | assert_equal "Precedes deleted (Issue #9999)", show_detail(detail, true) | |
259 | assert_equal "<strong>Precedes</strong> deleted (<i>Issue #9999</i>)", show_detail(detail, false) |
|
259 | assert_equal "<strong>Precedes</strong> deleted (<i>Issue #9999</i>)", show_detail(detail, false) | |
@@ -262,7 +262,7 class IssuesHelperTest < ActionView::TestCase | |||||
262 | def test_show_detail_relation_deleted_should_not_disclose_issue_that_is_not_visible |
|
262 | def test_show_detail_relation_deleted_should_not_disclose_issue_that_is_not_visible | |
263 | issue = Issue.generate!(:is_private => true) |
|
263 | issue = Issue.generate!(:is_private => true) | |
264 | detail = JournalDetail.new(:property => 'relation', |
|
264 | detail = JournalDetail.new(:property => 'relation', | |
265 |
:prop_key => ' |
|
265 | :prop_key => 'precedes', | |
266 | :old_value => issue.id) |
|
266 | :old_value => issue.id) | |
267 |
|
267 | |||
268 | assert_equal "Precedes deleted (Issue ##{issue.id})", show_detail(detail, true) |
|
268 | assert_equal "Precedes deleted (Issue ##{issue.id})", show_detail(detail, true) |
@@ -183,11 +183,11 class IssueRelationTest < ActiveSupport::TestCase | |||||
183 | assert_equal from.journals.size, (from_journals + 1) |
|
183 | assert_equal from.journals.size, (from_journals + 1) | |
184 | assert_equal to.journals.size, (to_journals + 1) |
|
184 | assert_equal to.journals.size, (to_journals + 1) | |
185 | assert_equal 'relation', from.journals.last.details.last.property |
|
185 | assert_equal 'relation', from.journals.last.details.last.property | |
186 |
assert_equal ' |
|
186 | assert_equal 'precedes', from.journals.last.details.last.prop_key | |
187 | assert_equal '2', from.journals.last.details.last.value |
|
187 | assert_equal '2', from.journals.last.details.last.value | |
188 | assert_nil from.journals.last.details.last.old_value |
|
188 | assert_nil from.journals.last.details.last.old_value | |
189 | assert_equal 'relation', to.journals.last.details.last.property |
|
189 | assert_equal 'relation', to.journals.last.details.last.property | |
190 |
assert_equal ' |
|
190 | assert_equal 'follows', to.journals.last.details.last.prop_key | |
191 | assert_equal '1', to.journals.last.details.last.value |
|
191 | assert_equal '1', to.journals.last.details.last.value | |
192 | assert_nil to.journals.last.details.last.old_value |
|
192 | assert_nil to.journals.last.details.last.old_value | |
193 | end |
|
193 | end | |
@@ -205,11 +205,11 class IssueRelationTest < ActiveSupport::TestCase | |||||
205 | assert_equal from.journals.size, (from_journals + 1) |
|
205 | assert_equal from.journals.size, (from_journals + 1) | |
206 | assert_equal to.journals.size, (to_journals + 1) |
|
206 | assert_equal to.journals.size, (to_journals + 1) | |
207 | assert_equal 'relation', from.journals.last.details.last.property |
|
207 | assert_equal 'relation', from.journals.last.details.last.property | |
208 |
assert_equal ' |
|
208 | assert_equal 'blocks', from.journals.last.details.last.prop_key | |
209 | assert_equal '9', from.journals.last.details.last.old_value |
|
209 | assert_equal '9', from.journals.last.details.last.old_value | |
210 | assert_nil from.journals.last.details.last.value |
|
210 | assert_nil from.journals.last.details.last.value | |
211 | assert_equal 'relation', to.journals.last.details.last.property |
|
211 | assert_equal 'relation', to.journals.last.details.last.property | |
212 |
assert_equal ' |
|
212 | assert_equal 'blocked', to.journals.last.details.last.prop_key | |
213 | assert_equal '10', to.journals.last.details.last.old_value |
|
213 | assert_equal '10', to.journals.last.details.last.old_value | |
214 | assert_nil to.journals.last.details.last.value |
|
214 | assert_nil to.journals.last.details.last.value | |
215 | end |
|
215 | end |
General Comments 0
You need to be logged in to leave comments.
Login now