[#4181] Added the New/Create actions for a Deliverable.

This commit is contained in:
Eric Davis
2010-06-23 15:46:50 -07:00
parent 60d334e858
commit 5bb3970d4c
8 changed files with 113 additions and 1 deletions

View File

@@ -2,4 +2,26 @@ class DeliverablesController < InheritedResources::Base
unloadable
respond_to :html
before_filter :find_contract
before_filter :authorize
def create
@deliverable = FixedDeliverable.new(params[:deliverable])
create! { contract_url(@project, @contract) }
end
protected
def begin_of_association_chain
@contract
end
private
def find_contract
@contract = Contract.find(params[:contract_id])
@project = @contract.project
end
end

View File

@@ -0,0 +1,9 @@
class FixedDeliverable < Deliverable
unloadable
# Associations
# Validations
# Accessors
end

View File

@@ -0,0 +1,14 @@
<% form.inputs do %>
<%= form.input :title, :required => true %>
<%= form.input :type, :required => true, :as => :select, :collection => [["Fixed", "fixed"]] %>
<%= form.input :manager %>
<%= form.input :start_date, :as => :string, :input_html => {:size => 10}, :hint => calendar_for('deliverable_start_date') %>
<%= form.input :end_date, :as => :string, :input_html => {:size => 10}, :hint => calendar_for('deliverable_end_date') %>
<%= form.input :notes, :input_html => {:class => 'wiki-edit', :rows => '5'} %>
<% end %>
<% form.buttons do %>
<%= form.commit_button %>
<%= link_to(l(:button_cancel), cancel_path) %>
<% end %>
<%= wikitoolbar_for 'deliverable_notes' %>

View File

@@ -1 +1,9 @@
<%= content_tag(:h2, l(:text_new_deliverable)) %>
<% semantic_form_for [@project, @contract, resource], :url => contract_deliverables_path(@project, @contract), :html => {:class => 'tabular'} do |form| %>
<%= render :partial => 'form', :object => form, :locals => {:cancel_path => contract_path(@project, @contract)} %>
<% end %>
<% content_for(:header_tags) do %>
<%= stylesheet_link_tag "redmine_contracts", :plugin => "redmine_contracts", :media => "screen" %>
<% end %>

View File

@@ -21,4 +21,6 @@ en:
text_payment_terms_net_30: "Net 30"
text_payment_terms_net_45: "Net 45"
button_add_new: Add New
text_new_deliverable: New Deliverable
field_manager: Manager

View File

@@ -14,7 +14,10 @@ Redmine::Plugin.register :redmine_contracts do
requires_redmine_plugin :redmine_rate, :version_or_higher => '0.1.0'
project_module :contracts do
permission :manage_budget, {:contracts => [:index, :new, :create, :show, :edit, :update, :destroy] }, :public => true
permission(:manage_budget, {
:contracts => [:index, :new, :create, :show, :edit, :update, :destroy],
:deliverables => [:new, :create]
}, :public => true)
end
menu(:project_menu,

View File

@@ -0,0 +1,46 @@
require 'test_helper'
class DeliverablesNewTest < ActionController::IntegrationTest
include Redmine::I18n
def setup
@project = Project.generate!(:identifier => 'main')
@contract = Contract.generate!(:project => @project)
end
should "allow any user to open the new deliverable form" do
visit_contract_page(@contract)
click_link 'Add New'
assert_response :success
assert_template 'deliverables/new'
assert_select "form#new_deliverable"
end
should "create a new Fixed deliverable" do
@manager = User.generate!
visit_contract_page(@contract)
click_link 'Add New'
assert_response :success
fill_in "Title", :with => 'A New Deliverable'
select "Fixed", :from => "Type"
select @manager.name, :from => "Manager"
fill_in "Start", :with => '2010-01-01'
fill_in "End Date", :with => '2010-12-31'
fill_in "Notes", :with => 'Some notes on the deliverable'
click_button "Create Deliverable"
assert_response :success
assert_template 'contracts/show'
@deliverable = Deliverable.last
assert_equal "A New Deliverable", @deliverable.title
assert_equal "FixedDeliverable", @deliverable.type
assert_equal '2010-01-01', @deliverable.start_date.to_s
assert_equal '2010-12-31', @deliverable.end_date.to_s
assert_equal @manager, @deliverable.manager
end
end

View File

@@ -39,6 +39,14 @@ module IntegrationTestHelper
assert_template 'contracts/index'
end
def visit_contract_page(contract)
visit_contracts_for_project(contract.project)
click_link @contract.id
assert_response :success
assert_template 'contracts/show'
end
def assert_forbidden
assert_response :forbidden
assert_template 'common/403'