121 lines
2.9 KiB
Ruby
121 lines
2.9 KiB
Ruby
# Load the normal Rails helper
|
|
require File.expand_path(File.dirname(__FILE__) + '/../../../../test/test_helper')
|
|
|
|
# Ensure that we are using the temporary fixture path
|
|
Engines::Testing.set_fixture_path
|
|
|
|
require "webrat"
|
|
|
|
Webrat.configure do |config|
|
|
config.mode = :rails
|
|
end
|
|
|
|
def User.add_to_project(user, project, role)
|
|
Member.generate!(:principal => user, :project => project, :roles => [role])
|
|
end
|
|
|
|
def User.generate_user_with_permission_to_manage_budget(options={})
|
|
project = options[:project]
|
|
|
|
user = User.generate!(:password => 'contracts', :password_confirmation => 'contracts')
|
|
role = Role.generate!(:permissions => [:view_issues, :edit_issues, :add_issues, :manage_budget])
|
|
User.add_to_project(user, project, role)
|
|
user
|
|
end
|
|
|
|
|
|
module IntegrationTestHelper
|
|
def login_as(user="existing", password="existing")
|
|
visit "/login"
|
|
fill_in 'Login', :with => user
|
|
fill_in 'Password', :with => password
|
|
click_button 'login'
|
|
assert_response :success
|
|
assert User.current.logged?
|
|
end
|
|
|
|
def logout
|
|
visit '/logout'
|
|
assert_response :success
|
|
assert !User.current.logged?
|
|
end
|
|
|
|
def visit_project(project)
|
|
visit '/'
|
|
assert_response :success
|
|
|
|
click_link 'Projects'
|
|
assert_response :success
|
|
|
|
click_link project.name
|
|
assert_response :success
|
|
end
|
|
|
|
def visit_contracts_for_project(project)
|
|
visit_project(project)
|
|
click_link "Contracts"
|
|
|
|
assert_response :success
|
|
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 visit_issue_page(issue)
|
|
visit '/issues/' + issue.id.to_s
|
|
end
|
|
|
|
def visit_issue_bulk_edit_page(issues)
|
|
visit url_for(:controller => 'issues', :action => 'bulk_edit', :ids => issues.collect(&:id))
|
|
end
|
|
|
|
def assert_forbidden
|
|
assert_response :forbidden
|
|
assert_template 'common/403'
|
|
end
|
|
|
|
def assert_requires_login
|
|
assert_response :success
|
|
assert_template 'account/login'
|
|
end
|
|
|
|
end
|
|
|
|
class ActionController::IntegrationTest
|
|
include IntegrationTestHelper
|
|
end
|
|
|
|
class ActiveSupport::TestCase
|
|
def configure_overhead_plugin
|
|
@custom_field = TimeEntryActivityCustomField.generate!
|
|
Setting['plugin_redmine_overhead'] = {
|
|
'custom_field' => @custom_field.id.to_s,
|
|
'billable_value' => "true",
|
|
'overhead_value' => "false"
|
|
}
|
|
|
|
@billable_activity = TimeEntryActivity.generate!.reload
|
|
@billable_activity.custom_field_values = {
|
|
@custom_field.id => 'true'
|
|
}
|
|
assert @billable_activity.save
|
|
|
|
assert @billable_activity.billable?
|
|
|
|
@non_billable_activity = TimeEntryActivity.generate!.reload
|
|
@non_billable_activity.custom_field_values = {
|
|
@custom_field.id => 'false'
|
|
}
|
|
assert @non_billable_activity.save
|
|
|
|
assert !@non_billable_activity.billable?
|
|
|
|
end
|
|
end
|