obsolete.ChilliProject/test/integration_test_helpers.rb

85 lines
2.4 KiB
Ruby

#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
module IntegrationTestHelpers
# Helpers for Capybara tests only
#
# Warning: might have API incompatibilities with Rails default
# integration test methods. Only include where needed.
module CapybaraHelpers
# Capybara doesn't set the response object so we need to glue this to
# it's own object but without @response
def assert_response(code)
# Rewrite human status codes to numeric
converted_code = case code
when :success
200
when :missing
404
when :redirect
302
when :error
500
when code.is_a?(Symbol)
ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE[code]
else
code
end
assert_equal converted_code, page.status_code
end
# Override the existing log_user method so it correctly sets
# the capybara page elements (sessions, etc)
#
# Actually drives the login form
def log_user(user="existing", password="existing")
visit "/logout" # Make sure the session is cleared
visit "/login"
fill_in 'Login', :with => user
fill_in 'Password', :with => password
click_button 'Login'
assert_response :success
assert User.current.logged?
end
def visit_home
visit '/'
assert_response :success
end
def visit_project(project)
visit_home
assert_response :success
click_link 'Projects'
assert_response :success
click_link project.name
assert_response :success
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
end
end