You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.7 KiB
77 lines
2.7 KiB
ENV["RAILS_ENV"] = "test"
|
|
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
|
require 'test_help'
|
|
require 'redgreen'
|
|
require 'quietbacktrace'
|
|
|
|
class ActiveSupport::TestCase
|
|
|
|
setup do
|
|
I18n.default_locale = :en
|
|
end
|
|
|
|
self.new_backtrace_silencer :shoulda do |line|
|
|
line.include? 'vendor/plugins/shoulda'
|
|
end
|
|
self.backtrace_silencers << :shoulda
|
|
|
|
# Transactional fixtures accelerate your tests by wrapping each test method
|
|
# in a transaction that's rolled back on completion. This ensures that the
|
|
# test database remains unchanged so your fixtures don't have to be reloaded
|
|
# between every test method. Fewer database queries means faster tests.
|
|
#
|
|
# Read Mike Clark's excellent walkthrough at
|
|
# http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
|
|
#
|
|
# Every Active Record database supports transactions except MyISAM tables
|
|
# in MySQL. Turn off transactional fixtures in this case; however, if you
|
|
# don't care one way or the other, switching from MyISAM to InnoDB tables
|
|
# is recommended.
|
|
#
|
|
# The only drawback to using transactional fixtures is when you actually
|
|
# need to test transactions. Since your test is bracketed by a transaction,
|
|
# any transactions started in your code will be automatically rolled back.
|
|
self.use_transactional_fixtures = true
|
|
|
|
# Instantiated fixtures are slow, but give you @david where otherwise you
|
|
# would need people(:david). If you don't want to migrate your existing
|
|
# test cases which use the @david style and don't mind the speed hit (each
|
|
# instantiated fixtures translates to a database query per test method),
|
|
# then set this back to true.
|
|
self.use_instantiated_fixtures = false
|
|
|
|
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
|
#
|
|
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
|
# -- they do not yet inherit this setting
|
|
fixtures :all
|
|
|
|
# Add more helper methods to be used by all tests here...
|
|
def login_as(user)
|
|
@request.session[:user_id] = users(user).id
|
|
@request.env["HTTP_AUTHORIZATION"] = user ? "Basic #{Base64.encode64("#{users(user).login}:test")}" : nil
|
|
end
|
|
|
|
def logout
|
|
@request.session[:user_id] = nil
|
|
@request.env["HTTP_AUTHORIZATION"] = nil
|
|
end
|
|
|
|
def assert_formatted_response(type, element=nil)
|
|
assert_response :success
|
|
snippet = "Body: #{@response.body.first(100).chomp}..."
|
|
case type
|
|
when :rss
|
|
assert_equal Mime::RSS, @response.content_type, snippet
|
|
assert_select "channel", 1, snippet
|
|
when :ics
|
|
assert_equal Mime::ICS, @response.content_type, snippet
|
|
when :text
|
|
assert_equal Mime::TEXT, @response.content_type, snippet
|
|
when :xml
|
|
assert_select element.to_s.dasherize, 1, snippet
|
|
end
|
|
end
|
|
end
|
|
|