##// END OF EJS Templates
Use regular edit/update actions and named routes for JournalsController....
Use regular edit/update actions and named routes for JournalsController. git-svn-id: http://svn.redmine.org/redmine/trunk@15074 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14111:035edd39c422
r14692:6bb1ea8ae8a1
Show More
test_helper.rb
361 lines | 10.2 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Fixes subversion tests not running on win32....
r5055 # Redmine - project management software
Jean-Philippe Lang
Copyright update....
r13490 # Copyright (C) 2006-2015 Jean-Philippe Lang
Jean-Philippe Lang
v0.2.0...
r5 #
# 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.
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r6003 #
Jean-Philippe Lang
v0.2.0...
r5 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r6003 #
Jean-Philippe Lang
v0.2.0...
r5 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Jean-Philippe Lang
Use simplecov for code coverage, rcov does not support ruby>=1.9....
r13309 if ENV["COVERAGE"]
require 'simplecov'
require File.expand_path(File.dirname(__FILE__) + "/coverage/html_formatter")
SimpleCov.formatter = Redmine::Coverage::HtmlFormatter
SimpleCov.start 'rails'
end
Eric Davis
Force the test RAILS_ENV to help prevent purging data when mistyping. #4572...
r3726 ENV["RAILS_ENV"] = "test"
Jean-Philippe Lang
Initial commit...
r2 require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
Jean-Philippe Lang
Merged rails-3.2 branch....
r9346 require 'rails/test_help'
Toshi MARUYAMA
Ruby 1.9: fix tests error due to require path at test/test_helper.rb...
r7682 require Rails.root.join('test', 'mocks', 'open_id_authentication_mock.rb').to_s
Jean-Philippe Lang
Initial commit...
r2
Jean-Philippe Lang
Renamed object_daddy_helper and removed exemplars....
r9336 require File.expand_path(File.dirname(__FILE__) + '/object_helpers')
include ObjectHelpers
Eric Davis
Updated some object_daddy exemplars for the Models....
r2823
Jean-Philippe Lang
Need to require net/ldap in tests (#18192)....
r13139 require 'net/ldap'
Jean-Philippe Lang
Upgrade to Rails 4.2.0 (#14534)....
r13510 require 'mocha/setup'
Toshi MARUYAMA
adjust tests to awesome_nested_set new node lft and rgt value behavior change...
r12418
Jean-Philippe Lang
Adds a configuration setting to enable sudo mode, disabled by default (#19851)....
r13954 Redmine::SudoMode.disable!
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 class ActionView::TestCase
helper :application
include ApplicationHelper
end
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class ActiveSupport::TestCase
Jean-Philippe Lang
Merged rails-3.2 branch....
r9346 include ActionDispatch::TestProcess
Jean-Philippe Lang
Initial commit...
r2
Jean-Philippe Lang
Removed default comments....
r11027 self.use_transactional_fixtures = true
Jean-Philippe Lang
Initial commit...
r2 self.use_instantiated_fixtures = false
Jean-Philippe Lang
Renames uploaded_test_file helper....
r2795 def uploaded_test_file(name, mime)
Jean-Philippe Lang
Merged rails-3.2 branch....
r9346 fixture_file_upload("files/#{name}", mime, true)
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 end
Eric Davis
Refactor: extract test method...
r3659
# Mock out a file
Eric Davis
Fix the mock_file test helper....
r3896 def self.mock_file
Eric Davis
Refactor: extract test method...
r3659 file = 'a_file.png'
file.stubs(:size).returns(32)
file.stubs(:original_filename).returns('a_file.png')
file.stubs(:content_type).returns('image/png')
file.stubs(:read).returns(false)
file
end
Eric Davis
Fix the mock_file test helper....
r3896
def mock_file
self.class.mock_file
end
Toshi MARUYAMA
fix inconsistent image filename extensions (#9638)...
r7771 def mock_file_with_options(options={})
file = ''
file.stubs(:size).returns(32)
original_filename = options[:original_filename] || nil
file.stubs(:original_filename).returns(original_filename)
content_type = options[:content_type] || nil
file.stubs(:content_type).returns(content_type)
file.stubs(:read).returns(false)
file
end
Jean-Philippe Lang
File viewer for attached text files....
r1506 # Use a temporary directory for attachment related tests
def set_tmp_attachments_directory
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root in test/test_helper.rb....
r5961 Dir.mkdir "#{Rails.root}/tmp/test" unless File.directory?("#{Rails.root}/tmp/test")
unless File.directory?("#{Rails.root}/tmp/test/attachments")
Dir.mkdir "#{Rails.root}/tmp/test/attachments"
end
Attachment.storage_path = "#{Rails.root}/tmp/test/attachments"
Jean-Philippe Lang
File viewer for attached text files....
r1506 end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root in test/test_helper.rb....
r5961
Jean-Philippe Lang
Make sure that tests restore the attachments path to the tmp dir so that fixture files don't get deleted....
r8128 def set_fixtures_attachments_directory
Attachment.storage_path = "#{Rails.root}/test/fixtures/files"
end
Jean-Philippe Lang
Limit the size of repository files displayed inline too....
r2442 def with_settings(options, &block)
Jean-Philippe Lang
Possibility to define the default enable trackers when creating a project (#13175)....
r11164 saved_settings = options.keys.inject({}) do |h, k|
h[k] = case Setting[k]
when Symbol, false, true, nil
Setting[k]
else
Setting[k].dup
end
h
end
Jean-Philippe Lang
Limit the size of repository files displayed inline too....
r2442 options.each {|k, v| Setting[k] = v}
yield
Jean-Philippe Lang
Restore settings even if a test failure occurs....
r5107 ensure
Jean-Philippe Lang
Sort the issue list by author/assignee according to user display format (#9669)....
r7818 saved_settings.each {|k, v| Setting[k] = v} if saved_settings
Jean-Philippe Lang
Limit the size of repository files displayed inline too....
r2442 end
Eric Davis
Added some shoulda macros for testing....
r3155
Jean-Philippe Lang
Adds links to locked users when current user is admin....
r10462 # Yields the block with user as the current user
def with_current_user(user, &block)
saved_user = User.current
User.current = user
yield
ensure
User.current = saved_user
end
Jean-Philippe Lang
Fixed: Export CSV - Custom field true/false not using translation (#16081)....
r12621 def with_locale(locale, &block)
saved_localed = ::I18n.locale
::I18n.locale = locale
yield
ensure
::I18n.locale = saved_localed
end
Eric Davis
Added some tests for the LDAP authentication....
r3324 def self.ldap_configured?
@test_ldap = Net::LDAP.new(:host => '127.0.0.1', :port => 389)
return @test_ldap.bind
Jean-Philippe Lang
Fixed: unit tests broken by r3438 (#4860)....
r3328 rescue Exception => e
# LDAP is not listening
return nil
Eric Davis
Added some tests for the LDAP authentication....
r3324 end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983
Jean-Philippe Lang
Displays thumbnails of attached images of the issue view (#1006)....
r9750 def self.convert_installed?
Jean-Philippe Lang
Test if convert binary is available....
r9831 Redmine::Thumbnail.convert_available?
Jean-Philippe Lang
Displays thumbnails of attached images of the issue view (#1006)....
r9750 end
Jean-Philippe Lang
Allow attachment thumbnails from REST API (#18707)....
r13424 def convert_installed?
self.class.convert_installed?
end
Jean-Philippe Lang
Adds test helpers for test repositories....
r3606 # Returns the path to the test +vendor+ repository
def self.repository_path(vendor)
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 path = Rails.root.join("tmp/test/#{vendor.downcase}_repository").to_s
# Unlike ruby, JRuby returns Rails.root with backslashes under Windows
path.tr("\\", "/")
Jean-Philippe Lang
Adds test helpers for test repositories....
r3606 end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983
Toshi MARUYAMA
Fix typo in test/test_helper.rb....
r5062 # Returns the url of the subversion test repository
Jean-Philippe Lang
Fixes subversion tests not running on win32....
r5055 def self.subversion_repository_url
path = repository_path('subversion')
path = '/' + path unless path.starts_with?('/')
"file://#{path}"
end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983
Jean-Philippe Lang
Adds test helpers for test repositories....
r3606 # Returns true if the +vendor+ test repository is configured
def self.repository_configured?(vendor)
File.directory?(repository_path(vendor))
end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983
Toshi MARUYAMA
Rails3: test: scm: move "repository_path_hash" method in repositories routing test to test_helper.rb for common use...
r8803 def repository_path_hash(arr)
hs = {}
hs[:path] = arr.join("/")
Jean-Philippe Lang
Merged rails-3.2 branch....
r9346 hs[:param] = arr.join("/")
Toshi MARUYAMA
Rails3: test: scm: move "repository_path_hash" method in repositories routing test to test_helper.rb for common use...
r8803 hs
end
Jean-Philippe Lang
Missing test helper (#18537)....
r13379 def sqlite?
ActiveRecord::Base.connection.adapter_name =~ /sqlite/i
end
Jean-Philippe Lang
Restore accent insensitive search with mysql (#18537)....
r13385 def mysql?
ActiveRecord::Base.connection.adapter_name =~ /mysql/i
end
Jean-Philippe Lang
Support for accent insensitive search with PostgreSQL (#18801)....
r13607 def postgresql?
ActiveRecord::Base.connection.adapter_name =~ /postgresql/i
end
Jean-Philippe Lang
Fixed assertions for SQLServer that format dates with MM/DD/YYYY in queries....
r13610 def quoted_date(date)
date = Date.parse(date) if date.is_a?(String)
ActiveRecord::Base.connection.quoted_date(date)
end
Jean-Philippe Lang
Replace tab introduced in r14388 in test/test_helper.rb with spaces (#20242)....
r14030 # Asserts that a new record for the given class is created
# and returns it
Jean-Philippe Lang
Fixed that user with "Manage public queries" permission, can create global public query (#19842)....
r14006 def new_record(klass, &block)
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111 new_records(klass, 1, &block).first
end
# Asserts that count new records for the given class are created
# and returns them as an array order by object id
def new_records(klass, count, &block)
assert_difference "#{klass}.count", count do
Jean-Philippe Lang
Fixed that user with "Manage public queries" permission, can create global public query (#19842)....
r14006 yield
end
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111 klass.order(:id => :desc).limit(count).to_a.reverse
Jean-Philippe Lang
Fixed that user with "Manage public queries" permission, can create global public query (#19842)....
r14006 end
Jean-Philippe Lang
Adds a setting to allow subtasks to belong to other projects (#5487)....
r10376 def assert_save(object)
saved = object.save
message = "#{object.class} could not be saved"
errors = object.errors.full_messages.map {|m| "- #{m}"}
message << ":\n#{errors.join("\n")}" if errors.any?
assert_equal true, saved, message
end
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 def assert_select_error(arg)
assert_select '#errorExplanation', :text => arg
Jean-Philippe Lang
Refactor: merged error rendering methods....
r4172 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Jean-Philippe Lang
Removes RJS from UsersController....
r9876 def assert_include(expected, s, message=nil)
assert s.include?(expected), (message || "\"#{expected}\" not found in \"#{s}\"")
Jean-Philippe Lang
Adds "between" operator for numeric filters (#6180)....
r6097 end
Eric Davis
Added some tests for the LDAP authentication....
r3324
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 def assert_not_include(expected, s, message=nil)
assert !s.include?(expected), (message || "\"#{expected}\" found in \"#{s}\"")
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 end
Jean-Philippe Lang
Adds a macro for inserting collapsed text (#12167)....
r10469 def assert_select_in(text, *args, &block)
Jean-Philippe Lang
Upgrade to Rails 4.2.0 (#14534)....
r13510 d = Nokogiri::HTML(CGI::unescapeHTML(String.new(text))).root
Jean-Philippe Lang
Adds a macro for inserting collapsed text (#12167)....
r10469 assert_select(d, *args, &block)
end
Jean-Philippe Lang
Upgrade to Rails 4.2.0 (#14534)....
r13510 def assert_select_email(*args, &block)
email = ActionMailer::Base.deliveries.last
assert_not_nil email
html_body = email.parts.detect {|part| part.content_type.include?('text/html')}.try(&:body)
assert_not_nil html_body
assert_select_in html_body.encoded, *args, &block
end
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 def assert_mail_body_match(expected, mail, message=nil)
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 if expected.is_a?(String)
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 assert_include expected, mail_body(mail), message
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 else
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 assert_match expected, mail_body(mail), message
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 end
end
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 def assert_mail_body_no_match(expected, mail, message=nil)
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 if expected.is_a?(String)
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 assert_not_include expected, mail_body(mail), message
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 else
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 assert_no_match expected, mail_body(mail), message
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 end
end
Jean-Philippe Lang
Adds an helper to get the body of an email in tests....
r8972 def mail_body(mail)
Jean-Philippe Lang
Merged rails-3.2 branch....
r9346 mail.parts.first.body.encoded
Jean-Philippe Lang
Adds an helper to get the body of an email in tests....
r8972 end
Toshi MARUYAMA
adjust tests to awesome_nested_set new node lft and rgt value behavior change...
r12418
Toshi MARUYAMA
replace tab to space at test/test_helper.rb...
r13472 # Returns the lft value for a new root issue
Toshi MARUYAMA
adjust tests to awesome_nested_set new node lft and rgt value behavior change...
r12418 def new_issue_lft
Jean-Philippe Lang
Replaces awesome_nested_set gem with a simple and more robust implementation of nested sets....
r13459 1
Toshi MARUYAMA
adjust tests to awesome_nested_set new node lft and rgt value behavior change...
r12418 end
Jean-Philippe Lang
Adds a subclass of ActionDispatch::IntegrationTest for API tests....
r11023 end
Eric Davis
Added unit tests for IssuesHelper#show_detail...
r3438
Jean-Philippe Lang
Adds a subclass of ActionDispatch::IntegrationTest for API tests....
r11023 module Redmine
Jean-Philippe Lang
Isolates all API routing tests to a specific test case....
r13222 class RoutingTest < ActionDispatch::IntegrationTest
def should_route(arg)
arg = arg.dup
request = arg.keys.detect {|key| key.is_a?(String)}
raise ArgumentError unless request
options = arg.slice!(request)
raise ArgumentError unless request =~ /\A(GET|POST|PUT|PATCH|DELETE)\s+(.+)\z/
method, path = $1.downcase.to_sym, $2
raise ArgumentError unless arg.values.first =~ /\A(.+)#(.+)\z/
controller, action = $1, $2
assert_routing(
{:method => method, :path => path},
options.merge(:controller => controller, :action => action)
)
end
end
Jean-Philippe Lang
Moved helpers for integration tests in a specific class....
r13298 class IntegrationTest < ActionDispatch::IntegrationTest
def log_user(login, password)
User.anonymous
get "/login"
assert_equal nil, session[:user_id]
assert_response :success
assert_template "account/login"
post "/login", :username => login, :password => password
assert_equal login, User.find(session[:user_id]).login
end
def credentials(user, password=nil)
{'HTTP_AUTHORIZATION' => ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user)}
end
end
Jean-Philippe Lang
Adds a subclass of ActionDispatch::IntegrationTest for API tests....
r11023 module ApiTest
Jean-Philippe Lang
Isolates all API routing tests to a specific test case....
r13222 API_FORMATS = %w(json xml).freeze
Jean-Philippe Lang
Adds a subclass of ActionDispatch::IntegrationTest for API tests....
r11023 # Base class for API tests
Jean-Philippe Lang
Moved helpers for integration tests in a specific class....
r13298 class Base < Redmine::IntegrationTest
Jean-Philippe Lang
Pull up #setup and #teardown in API tests....
r13297 def setup
Setting.rest_api_enabled = '1'
end
def teardown
Setting.rest_api_enabled = '0'
end
Jean-Philippe Lang
Adds tests for creating an issue with multiple uploads....
r13409
# Uploads content using the XML API and returns the attachment token
def xml_upload(content, credentials)
upload('xml', content, credentials)
end
# Uploads content using the JSON API and returns the attachment token
def json_upload(content, credentials)
upload('json', content, credentials)
end
def upload(format, content, credentials)
set_tmp_attachments_directory
assert_difference 'Attachment.count' do
post "/uploads.#{format}", content, {"CONTENT_TYPE" => 'application/octet-stream'}.merge(credentials)
assert_response :created
end
data = response_data
assert_kind_of Hash, data['upload']
token = data['upload']['token']
assert_not_nil token
token
end
# Parses the response body based on its content type
def response_data
unless response.content_type.to_s =~ /^application\/(.+)/
raise "Unexpected response type: #{response.content_type}"
end
format = $1
case format
when 'xml'
Hash.from_xml(response.body)
when 'json'
ActiveSupport::JSON.decode(response.body)
else
raise "Unknown response format: #{format}"
end
end
Jean-Philippe Lang
Makes the API accepts the X-Redmine-API-Key header to hold the API key....
r4459 end
Jean-Philippe Lang
Isolates all API routing tests to a specific test case....
r13222
class Routing < Redmine::RoutingTest
def should_route(arg)
arg = arg.dup
request = arg.keys.detect {|key| key.is_a?(String)}
raise ArgumentError unless request
options = arg.slice!(request)
API_FORMATS.each do |format|
format_request = request.sub /$/, ".#{format}"
super options.merge(format_request => arg[request], :format => format)
end
end
end
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 end
Eric Davis
Move all API tests into the ApiTest module to make management easier...
r4243 end