Files
redmine_contracts/test/integration/contracts_new_test.rb
2011-08-08 11:48:35 -07:00

72 lines
2.1 KiB
Ruby

require 'test_helper'
class ContractsNewTest < ActionController::IntegrationTest
include Redmine::I18n
def setup
@project = Project.generate!(:identifier => 'main')
PaymentTerm.generate!(:type => 'PaymentTerm', :name => 'Net 15')
PaymentTerm.generate!(:type => 'PaymentTerm', :name => 'Net 30')
@user = User.generate_user_with_permission_to_manage_budget(:project => @project)
login_as(@user.login, 'contracts')
end
should "block anonymous users from opening the new contract form" do
logout
visit "/projects/#{@project.identifier}/contracts/new"
assert_requires_login
end
should "block unauthorized users from opening the new contract form" do
logout
@user = User.generate!(:password => 'test', :password_confirmation => 'test')
login_as(@user.login, 'test')
visit "/projects/#{@project.identifier}/contracts/new"
assert_forbidden
end
should "allow authorized users to open the new contracts form" do
visit_contracts_for_project(@project)
click_link 'New Contract'
assert_response :success
assert_select "form#new_contract"
end
should "create a new contract" do
@account_executive = User.generate!
@role = Role.generate!
User.add_to_project(@account_executive, @project, @role)
visit_contracts_for_project(@project)
click_link 'New Contract'
assert_response :success
fill_in "Name", :with => 'A New Contract'
select @account_executive.name, :from => "Account Executive"
fill_in "Start", :with => '2010-01-01'
fill_in "End Date", :with => '2010-12-31'
select "Net 30", :from => "Payment Terms"
select "Locked", :from => "Status"
click_button "Save Contract"
assert_response :success
assert_template 'contracts/show'
@contract = Contract.last
assert_equal "A New Contract", @contract.name
assert_equal @account_executive, @contract.account_executive
assert_equal '2010-01-01', @contract.start_date.to_s
assert_equal '2010-12-31', @contract.end_date.to_s
assert_equal 'Net 30', @contract.payment_term.name
assert_equal "locked", @contract.status
end
end