From 2ce9c5523955bc75a5a98ef7afd8605eec887760 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 23 Jun 2010 17:05:28 -0700 Subject: [PATCH] [#4181] Hooked up the Edit and Update actions for FixedDeliverables. --- app/controllers/deliverables_controller.rb | 6 ++++ app/views/contracts/show.html.erb | 4 +-- app/views/deliverables/edit.html.erb | 9 ++++++ init.rb | 2 +- test/integration/deliverables_edit_test.rb | 35 ++++++++++++++++++++++ 5 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 app/views/deliverables/edit.html.erb create mode 100644 test/integration/deliverables_edit_test.rb diff --git a/app/controllers/deliverables_controller.rb b/app/controllers/deliverables_controller.rb index a6390cf..bab0483 100644 --- a/app/controllers/deliverables_controller.rb +++ b/app/controllers/deliverables_controller.rb @@ -16,6 +16,12 @@ class DeliverablesController < InheritedResources::Base create! { contract_url(@project, @contract) } end + def update + @deliverable = begin_of_association_chain.deliverables.find_by_id(params[:id]) + @deliverable.attributes = params[:fixed_deliverable] # TODO: hardcoded + update! { contract_url(@project, @contract) } + end + def show redirect_to contract_url(@project, @contract) end diff --git a/app/views/contracts/show.html.erb b/app/views/contracts/show.html.erb index 3e51d58..0b71d3b 100644 --- a/app/views/contracts/show.html.erb +++ b/app/views/contracts/show.html.erb @@ -31,7 +31,7 @@ <%= l(:field_labor) %> <%= l(:field_overhead) %> <%= l(:field_fixed) %> -   + <%= l(:button_edit) %> <%= l(:button_delete) %> @@ -46,7 +46,7 @@ --- --- --- -   + <%= link_to(l(:button_edit), edit_contract_deliverable_path(@project, resource, deliverable), :class => 'icon icon-edit') %> <%= link_to(l(:button_delete), contract_deliverable_path(@project, resource, deliverable), :method => :delete, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') %> <% end %> diff --git a/app/views/deliverables/edit.html.erb b/app/views/deliverables/edit.html.erb new file mode 100644 index 0000000..09c6900 --- /dev/null +++ b/app/views/deliverables/edit.html.erb @@ -0,0 +1,9 @@ +<%= content_tag(:h2, h(resource.title)) %> + +<% semantic_form_for [@project, @contract, resource], :url => contract_deliverable_path(@project, @contract, resource), :html => {:class => 'tabular'} do |form| %> +<%= render :partial => 'form', :object => form, :locals => {:cancel_path => contract_path(@project, resource)} %> +<% end %> + +<% content_for(:header_tags) do %> + <%= stylesheet_link_tag "redmine_contracts", :plugin => "redmine_contracts", :media => "screen" %> +<% end %> diff --git a/init.rb b/init.rb index 4373f90..bb68aa5 100644 --- a/init.rb +++ b/init.rb @@ -16,7 +16,7 @@ Redmine::Plugin.register :redmine_contracts do project_module :contracts do permission(:manage_budget, { :contracts => [:index, :new, :create, :show, :edit, :update, :destroy], - :deliverables => [:index, :new, :create, :show, :destroy] + :deliverables => [:index, :new, :create, :show, :edit, :update, :destroy] }, :public => true) end diff --git a/test/integration/deliverables_edit_test.rb b/test/integration/deliverables_edit_test.rb new file mode 100644 index 0000000..46c07da --- /dev/null +++ b/test/integration/deliverables_edit_test.rb @@ -0,0 +1,35 @@ +require 'test_helper' + +class DeliverablesEditTest < ActionController::IntegrationTest + include Redmine::I18n + + def setup + @project = Project.generate!(:identifier => 'main') + @contract = Contract.generate!(:project => @project, :name => 'A Contract', :payment_terms => 'net_15') + @manager = User.generate! + @deliverable = FixedDeliverable.generate!(:contract => @contract, :manager => @manager, :title => 'The Title') + end + + should "allow any user to edit the deliverable" do + visit_contract_page(@contract) + click_link_within "#fixed_deliverable_#{@deliverable.id}", 'Edit' + assert_response :success + assert_template 'deliverables/edit' + + assert_select "form#edit_fixed_deliverable_#{@deliverable.id}" do + assert_select "input#fixed_deliverable_title[value=?]", /#{@deliverable.title}/ + assert_select "select#fixed_deliverable_type" do + assert_select "option[selected=selected][value=FixedDeliverable]" + end + end + + fill_in "Title", :with => 'An updated title' + click_button "Save" + + assert_response :success + assert_template 'contracts/show' + + assert_equal "An updated title", @deliverable.reload.title + + end +end