90 lines
3.1 KiB
Ruby
90 lines
3.1 KiB
Ruby
require 'test_helper'
|
|
|
|
class ContractsListTest < ActionController::IntegrationTest
|
|
include Redmine::I18n
|
|
|
|
def setup
|
|
@project = Project.generate!(:identifier => 'main')
|
|
@contract = Contract.generate!(:project => @project, :name => 'Contract1').reload
|
|
@contract2 = Contract.generate!(:project => @project, :name => 'Contract2').reload
|
|
@contract_locked = Contract.generate!(:project => @project, :status => 'locked', :name => 'LockedContract').reload
|
|
@contract_closed = Contract.generate!(:project => @project, :status => 'closed', :name => 'ClosedContract').reload
|
|
|
|
@other_project = Project.generate!(:identifier => 'other')
|
|
@other_contract = Contract.generate!(:project => @other_project)
|
|
[@project,
|
|
@other_project,
|
|
@contract,
|
|
@contract2,
|
|
@other_contract
|
|
].map {|c| c.reload }
|
|
|
|
@user = User.generate_user_with_permission_to_manage_budget(:project => @project)
|
|
|
|
login_as(@user.login, 'contracts')
|
|
end
|
|
|
|
should "block anonymous users from listing the contracts" do
|
|
logout
|
|
visit "/projects/#{@project.identifier}/contracts"
|
|
|
|
assert_requires_login
|
|
end
|
|
|
|
should "block unauthorized users from listing contracts" do
|
|
logout
|
|
|
|
@user = User.generate!(:password => 'test', :password_confirmation => 'test')
|
|
login_as(@user.login, 'test')
|
|
|
|
visit "/projects/#{@project.identifier}/contracts"
|
|
|
|
assert_forbidden
|
|
end
|
|
|
|
should "allow authorized users to list the contracts on a project" do
|
|
visit_contracts_for_project(@project)
|
|
end
|
|
|
|
should "list all contracts for the project grouped by status" do
|
|
visit_contracts_for_project(@project)
|
|
|
|
assert_select "table#contracts.open" do
|
|
[@contract, @contract2].each do |contract|
|
|
assert_select "td.id", :text => /#{contract.id}/
|
|
assert_select "td.name", :text => /#{contract.name}/
|
|
assert_select "td.account-executive", :text => /#{contract.account_executive.name}/
|
|
assert_select "td.end-date", :text => /#{format_date(contract.end_date)}/
|
|
assert_select "td.total-budget"
|
|
end
|
|
end
|
|
|
|
assert_select "table#contracts.locked" do
|
|
assert_select "td.id", :text => /#{@contract_locked.id}/
|
|
assert_select "td.name", :text => /#{@contract_locked.name}/
|
|
assert_select "td.account-executive", :text => /#{@contract_locked.account_executive.name}/
|
|
assert_select "td.end-date", :text => /#{format_date(@contract_locked.end_date)}/
|
|
assert_select "td.total-budget"
|
|
end
|
|
|
|
assert_select "table#contracts.closed" do
|
|
assert_select "td.id", :text => /#{@contract_closed.id}/
|
|
assert_select "td.name", :text => /#{@contract_closed.name}/
|
|
assert_select "td.account-executive", :text => /#{@contract_closed.account_executive.name}/
|
|
assert_select "td.end-date", :text => /#{format_date(@contract_closed.end_date)}/
|
|
assert_select "td.total-budget"
|
|
end
|
|
|
|
end
|
|
|
|
should "not list contracts from other projects" do
|
|
visit_contracts_for_project(@project)
|
|
|
|
assert_select "table#contracts" do
|
|
assert_select "td", :text => /#{@other_contract.name}/, :count => 0
|
|
end
|
|
|
|
end
|
|
|
|
end
|