[#4327] Show the deliverable's title in the Journal notes.

This commit is contained in:
Eric Davis
2010-08-03 12:02:37 -07:00
parent 848616853d
commit 84c679dc67
4 changed files with 92 additions and 4 deletions
+1
View File
@@ -71,3 +71,4 @@ require 'redmine_contracts/hooks/view_issues_form_details_bottom_hook'
require 'redmine_contracts/hooks/controller_issues_edit_before_save_hook'
require 'redmine_contracts/hooks/view_issues_bulk_edit_details_bottom_hook'
require 'redmine_contracts/hooks/controller_issues_bulk_edit_before_save_hook'
require 'redmine_contracts/hooks/helper_issues_show_detail_after_setting_hook'
@@ -2,12 +2,18 @@ module RedmineContracts
module Hooks
class ControllerIssuesEditBeforeSaveHook < Redmine::Hook::ViewListener
def controller_issues_edit_before_save(context={})
if context[:params] && context[:params][:issue] && context[:params][:issue][:deliverable_id].present?
deliverable = Deliverable.find_by_id(context[:params][:issue][:deliverable_id])
if deliverable.contract.project == context[:issue].project
context[:issue].deliverable = deliverable
if context[:params] && context[:params][:issue]
if context[:params][:issue][:deliverable_id].present?
deliverable = Deliverable.find_by_id(context[:params][:issue][:deliverable_id])
if deliverable.contract.project == context[:issue].project
context[:issue].deliverable = deliverable
end
else
context[:issue].deliverable = nil
end
end
return ''
@@ -0,0 +1,23 @@
module RedmineContracts
module Hooks
class HelperIssuesShowDetailAfterSettingHook < Redmine::Hook::ViewListener
# Deliverable changes for the journal use the Deliverable subject
# instead of the id
#
# Context:
# * :detail => Detail about the journal change
#
def helper_issues_show_detail_after_setting(context = { })
# TODO Later: Overwritting the caller is bad juju
if context[:detail].prop_key == 'deliverable_id'
d = Deliverable.find_by_id(context[:detail].value)
context[:detail].value = d.title if d.present? && d.title.present?
d = Deliverable.find_by_id(context[:detail].old_value)
context[:detail].old_value = d.title if d.present? && d.title.present?
end
''
end
end
end
end
@@ -0,0 +1,58 @@
require File.dirname(__FILE__) + '/../../../test_helper'
class RedmineContracts::Hooks::HelperIssuesShowDetailAfterSettingHookTest < ActionController::IntegrationTest
include Redmine::Hook::Helper
context "#helper_issues_show_detail_after_setting" do
setup do
@project = Project.generate!
@issue = Issue.generate_for_project!(@project)
@contract1 = Contract.generate!(:project => @project)
@contract2 = Contract.generate!(:project => @project)
@manager = User.generate!(:login => 'manager', :password => 'existing', :password_confirmation => 'existing')
@role = Role.generate!(:permissions => [:view_issues, :edit_issues])
User.add_to_project(@manager, @project, @role)
@deliverable1 = FixedDeliverable.generate!(:contract => @contract1, :manager => @manager, :title => 'The Title 1')
@deliverable2 = FixedDeliverable.generate!(:contract => @contract2, :manager => @manager, :title => 'The Title 2')
# Set first
@issue.init_journal(@manager)
@issue.deliverable = @deliverable1
@issue.save!
# Change
@issue.init_journal(@manager)
@issue.deliverable = @deliverable2
@issue.save!
# Unset
@issue.init_journal(@manager)
@issue.deliverable = nil
@issue.save!
login_as('manager', 'existing')
visit_issue_page(@issue)
assert_response :success
end
should "show when a deliverable is set" do
assert_select ".details" do
assert_select "li", :text => /Deliverable set to #{@deliverable1.title}/
end
end
should "show when a deliverable is changed" do
assert_select ".details" do
assert_select "li", :text => /Deliverable changed from #{@deliverable1.title} to #{@deliverable2.title}/
end
end
should "show when a deliverable is removed" do
assert_select ".details" do
assert_select "li", :text => /Deliverable deleted .*#{@deliverable2.title}/
end
end
end
end