[#6441] Block creating deliverables on closed or locked contracts

This commit is contained in:
Eric Davis
2011-08-10 15:53:36 -07:00
parent 256325a39d
commit bf1339fc61
6 changed files with 50 additions and 8 deletions

View File

@@ -11,8 +11,8 @@ class RedmineContracts::Hooks::ViewIssuesBulkEditDetailsBottomHookTest < ActionC
@issue3 = Issue.generate_for_project!(@project)
@contract1 = Contract.generate!(:project => @project)
@contract2 = Contract.generate!(:project => @project)
@locked_contract = Contract.generate!(:project => @project, :status => 'locked')
@closed_contract = Contract.generate!(:project => @project, :status => 'closed')
@locked_contract = Contract.generate!(:project => @project)
@closed_contract = Contract.generate!(:project => @project)
@manager = User.generate!(:login => 'manager', :password => 'existing', :password_confirmation => 'existing')
@role = Role.generate!(:permissions => [:view_issues, :edit_issues])
@@ -26,6 +26,10 @@ class RedmineContracts::Hooks::ViewIssuesBulkEditDetailsBottomHookTest < ActionC
@deliverable_on_closed_contract = FixedDeliverable.generate!(:contract => @closed_contract, :manager => @manager, :title => 'Deliverable on closed contract')
@issue.deliverable = @deliverable1
# Set contract statuses now that all deliverables are created
assert @locked_contract.lock!
assert @closed_contract.close!
login_as('manager', 'existing')
end

View File

@@ -9,8 +9,8 @@ class RedmineContracts::Hooks::ViewIssuesFormDetailsBottomTest < ActionControlle
@issue = Issue.generate_for_project!(@project)
@contract1 = Contract.generate!(:project => @project)
@contract2 = Contract.generate!(:project => @project)
@locked_contract = Contract.generate!(:project => @project, :status => 'locked')
@closed_contract = Contract.generate!(:project => @project, :status => 'closed')
@locked_contract = Contract.generate!(:project => @project)
@closed_contract = Contract.generate!(:project => @project)
@manager = User.generate!(:login => 'manager', :password => 'existing', :password_confirmation => 'existing')
@role = Role.generate!(:permissions => [:view_issues, :edit_issues])
@@ -25,6 +25,10 @@ class RedmineContracts::Hooks::ViewIssuesFormDetailsBottomTest < ActionControlle
@issue.deliverable = @deliverable1
assert @issue.save
# Set contract statuses now that all deliverables are created
assert @locked_contract.lock!
assert @closed_contract.close!
login_as('manager', 'existing')
end

View File

@@ -42,4 +42,23 @@ class DeliverableTest < ActiveSupport::TestCase
end
end
context "with a locked contract" do
should "block creating a new deliverable" do
contract = Contract.generate!(:status => "locked")
deliverable = FixedDeliverable.spawn(:contract => contract)
assert !deliverable.valid?
assert deliverable.errors.on_base.include?("Can't create a deliverable on a locked contract")
end
end
context "with a closed contract" do
should "block creating a new deliverable" do
contract = Contract.generate!(:status => "closed")
deliverable = FixedDeliverable.spawn(:contract => contract)
assert !deliverable.valid?
assert deliverable.errors.on_base.include?("Can't create a deliverable on a closed contract")
end
end
end