# HG changeset patch
# User Toshi MARUYAMA
# Date 1362321154 -32400
# Node ID d5fb2f8896708c1a0a589b55815f07ea79065fb6
# Parent 07a2de86b1f25bbd6db8adeed41364136b2f2af7
issue_relation (#1005)
diff --git a/app/models/issue_relation.rb b/app/models/issue_relation.rb
--- a/app/models/issue_relation.rb
+++ b/app/models/issue_relation.rb
@@ -72,6 +72,8 @@ class IssueRelation < ActiveRecord::Base
attr_protected :issue_from_id, :issue_to_id
before_save :handle_issue_order
+ after_create :create_journal_after_create
+ after_destroy :create_journal_after_delete
def visible?(user=User.current)
(issue_from.nil? || issue_from.visible?(user)) && (issue_to.nil? || issue_to.visible?(user))
@@ -179,4 +181,30 @@ class IssueRelation < ActiveRecord::Base
self.relation_type = TYPES[relation_type][:reverse]
end
end
+
+ def create_journal_after_create
+ journal = issue_from.init_journal(User.current)
+ journal.details << JournalDetail.new(:property => 'relation',
+ :prop_key => label_for(issue_from).to_s,
+ :value => issue_to.id)
+ journal.save
+ journal = issue_to.init_journal(User.current)
+ journal.details << JournalDetail.new(:property => 'relation',
+ :prop_key => label_for(issue_to).to_s,
+ :value => issue_from.id)
+ journal.save
+ end
+
+ def create_journal_after_delete
+ journal = issue_from.init_journal(User.current)
+ journal.details << JournalDetail.new(:property => 'relation',
+ :prop_key => label_for(issue_from).to_s,
+ :old_value => issue_to.id)
+ journal.save
+ journal = issue_to.init_journal(User.current)
+ journal.details << JournalDetail.new(:property => 'relation',
+ :prop_key => label_for(issue_to).to_s,
+ :old_value => issue_from.id)
+ journal.save
+ end
end
# HG changeset patch
# User Toshi MARUYAMA
# Date 1362321154 -32400
# Node ID 8fa710bb7e3f065973fbfe6ab4fe12b708434357
# Parent d5fb2f8896708c1a0a589b55815f07ea79065fb6
test issue_relation (#1005)
diff --git a/test/unit/issue_relation_test.rb b/test/unit/issue_relation_test.rb
--- a/test/unit/issue_relation_test.rb
+++ b/test/unit/issue_relation_test.rb
@@ -167,4 +167,49 @@ class IssueRelationTest < ActiveSupport:
assert !r.save
assert_not_nil r.errors[:base]
end
+
+ def test_create_should_make_journal_entry
+ from = Issue.find(1)
+ to = Issue.find(2)
+ from_journals = from.journals.size
+ to_journals = to.journals.size
+ relation = IssueRelation.new(:issue_from => from, :issue_to => to,
+ :relation_type => IssueRelation::TYPE_PRECEDES)
+ assert relation.save
+ from.reload
+ to.reload
+ relation.reload
+ assert_equal from.journals.size, (from_journals + 1)
+ assert_equal to.journals.size, (to_journals + 1)
+ assert_equal 'relation', from.journals.last.details.last.property
+ assert_equal 'label_precedes', from.journals.last.details.last.prop_key
+ assert_equal '2', from.journals.last.details.last.value
+ assert_nil from.journals.last.details.last.old_value
+ assert_equal 'relation', to.journals.last.details.last.property
+ assert_equal 'label_follows', to.journals.last.details.last.prop_key
+ assert_equal '1', to.journals.last.details.last.value
+ assert_nil to.journals.last.details.last.old_value
+ end
+
+ def test_delete_should_make_journal_entry
+ relation = IssueRelation.find(1)
+ id = relation.id
+ from = relation.issue_from
+ to = relation.issue_to
+ from_journals = from.journals.size
+ to_journals = to.journals.size
+ assert relation.destroy
+ from.reload
+ to.reload
+ assert_equal from.journals.size, (from_journals + 1)
+ assert_equal to.journals.size, (to_journals + 1)
+ assert_equal 'relation', from.journals.last.details.last.property
+ assert_equal 'label_blocks', from.journals.last.details.last.prop_key
+ assert_equal '9', from.journals.last.details.last.old_value
+ assert_nil from.journals.last.details.last.value
+ assert_equal 'relation', to.journals.last.details.last.property
+ assert_equal 'label_blocked_by', to.journals.last.details.last.prop_key
+ assert_equal '10', to.journals.last.details.last.old_value
+ assert_nil to.journals.last.details.last.value
+ end
end
# HG changeset patch
# User Toshi MARUYAMA
# Date 1362321154 -32400
# Node ID d79f840b342c27817641c517dfa89247d8364fdd
# Parent 8fa710bb7e3f065973fbfe6ab4fe12b708434357
issues_helper (#1005)
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -292,6 +292,17 @@ module IssuesHelper
end
when 'attachment'
label = l(:label_attachment)
+ when 'relation'
+ if detail.value && !detail.old_value
+ rel_issue = Issue.find_by_id(detail.value)
+ value = rel_issue.nil? ? "#{l(:label_issue)} #{detail.value}" :
+ (no_html ? rel_issue : link_to_issue(rel_issue))
+ elsif detail.old_value && !detail.value
+ rel_issue = Issue.find_by_id(detail.old_value)
+ old_value = rel_issue.nil? ? "#{l(:label_issue)} #{detail.old_value}" :
+ (no_html ? rel_issue : link_to_issue(rel_issue))
+ end
+ label = l(detail.prop_key.to_sym)
end
call_hook(:helper_issues_show_detail_after_setting,
{:detail => detail, :label => label, :value => value, :old_value => old_value })
@@ -339,7 +350,7 @@ module IssuesHelper
else
l(:text_journal_set_to, :label => label, :value => value).html_safe
end
- when 'attachment'
+ when 'attachment', 'relation'
l(:text_journal_added, :label => label, :value => value).html_safe
end
else
# HG changeset patch
# User Toshi MARUYAMA
# Date 1366285132 -32400
# Node ID fc809900e73a617819b19636d73dac6ddf819582
# Parent d79f840b342c27817641c517dfa89247d8364fdd
test issues_helper (#1005)
diff --git a/test/unit/helpers/issues_helper_test.rb b/test/unit/helpers/issues_helper_test.rb
--- a/test/unit/helpers/issues_helper_test.rb
+++ b/test/unit/helpers/issues_helper_test.rb
@@ -209,4 +209,36 @@ class IssuesHelperTest < ActionView::Tes
:old_value => 'error281.txt', :value => nil)
assert_match 'error281.txt', show_detail(detail, true)
end
+
+ def test_show_detail_create_relation
+ detail = JournalDetail.new(:property => 'relation',
+ :prop_key => 'label_precedes',
+ :value => 1)
+ assert_equal "Precedes Bug #1: Can't print recipes added", show_detail(detail, true)
+ assert_match %r{Precedes Bug #1: Can't print recipes added},
+ show_detail(detail, false)
+ non_existed_issue_number = 9999
+ assert_nil Issue.find_by_id(non_existed_issue_number)
+ detail = JournalDetail.new(:property => 'relation',
+ :prop_key => 'label_precedes',
+ :value => non_existed_issue_number)
+ assert_equal "Precedes Issue #{non_existed_issue_number} added", show_detail(detail, true)
+ assert_equal "Precedes Issue #{non_existed_issue_number} added", show_detail(detail, false)
+ end
+
+ def test_show_detail_delete_relation
+ detail = JournalDetail.new(:property => 'relation',
+ :prop_key => 'label_precedes',
+ :old_value => 1)
+ assert_equal "Precedes deleted (Bug #1: Can't print recipes)", show_detail(detail, true)
+ assert_match %r{Precedes deleted \(Bug #1: Can't print recipes\)},
+ show_detail(detail, false)
+ non_existed_issue_number = 9999
+ assert_nil Issue.find_by_id(non_existed_issue_number)
+ detail = JournalDetail.new(:property => 'relation',
+ :prop_key => 'label_precedes',
+ :old_value => non_existed_issue_number)
+ assert_equal "Precedes deleted (Issue 9999)", show_detail(detail, true)
+ assert_equal "Precedes deleted (Issue 9999)", show_detail(detail, false)
+ end
end
# HG changeset patch
# User Toshi MARUYAMA
# Date 1362321154 -32400
# Node ID f1977af94fade857f2604bafcaf624c1d98381c2
# Parent fc809900e73a617819b19636d73dac6ddf819582
remove "del" tag from deleted relation (#1005)
It is confused that deleting issue.
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -314,7 +314,9 @@ module IssuesHelper
unless no_html
label = content_tag('strong', label)
old_value = content_tag("i", h(old_value)) if detail.old_value
- old_value = content_tag("del", old_value) if detail.old_value and detail.value.blank?
+ if detail.old_value && detail.value.blank? && detail.property != 'relation'
+ old_value = content_tag("del", old_value)
+ end
if detail.property == 'attachment' && !value.blank? && atta = Attachment.find_by_id(detail.prop_key)
# Link to the attachment if it has not been removed
value = link_to_attachment(atta, :download => true, :only_path => options[:only_path])
diff --git a/test/unit/helpers/issues_helper_test.rb b/test/unit/helpers/issues_helper_test.rb
--- a/test/unit/helpers/issues_helper_test.rb
+++ b/test/unit/helpers/issues_helper_test.rb
@@ -231,7 +231,7 @@ class IssuesHelperTest < ActionView::Tes
:prop_key => 'label_precedes',
:old_value => 1)
assert_equal "Precedes deleted (Bug #1: Can't print recipes)", show_detail(detail, true)
- assert_match %r{Precedes deleted \(Bug #1: Can't print recipes\)},
+ assert_match %r{Precedes deleted \(Bug #1: Can't print recipes\)},
show_detail(detail, false)
non_existed_issue_number = 9999
assert_nil Issue.find_by_id(non_existed_issue_number)
@@ -239,6 +239,6 @@ class IssuesHelperTest < ActionView::Tes
:prop_key => 'label_precedes',
:old_value => non_existed_issue_number)
assert_equal "Precedes deleted (Issue 9999)", show_detail(detail, true)
- assert_equal "Precedes deleted (Issue 9999)", show_detail(detail, false)
+ assert_equal "Precedes deleted (Issue 9999)", show_detail(detail, false)
end
end