ENV[“RAILS_ENV”] = “test”
require File.expand_path(File.dirname(__FILE__) + “/../config/environment”)
require ‘test_help’
class Test::Unit::TestCase
# 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 assert_create(klass, params)
before = klass.count
klass.create!(params)
assert_equal before, klass.count – 1
end
def assert_delete(before, obj)
obj.destroy
assert_equal before – 1, obj.class.count
end
def assert_errors(operation, keys = {})
assert_not_equal 0, operation.errors.to_a.size
keys.each do |key, message|
assert_equal message, operation.errors[key]
end
end
def assert_relations(obj, *relation)
if relation.size > 0
relation.each do |r|
assert_respond_to obj, r
end
end
end
def assert_update(before, attrs = {})
before_update = before.attributes
before.update_attributes(attrs)
after_update = before.class.find(before.id)
attrs.each do |k,v|
assert_not_equal before_update[k], after_update.send(k)
end
end
def set_admin_site(site_id = nil)
@admin_site = site_id ? Site.find(site_id) : Site.find(:first)
end
def session_admin_site(site_id)
@request.session[:admin_site] = Site.find(site_id)
end
def session_admin_site_is_not_yet_choosen
@request.session[:admin_site] = nil
end
def login_and_choose_site
login_as
session_admin_site(Site.find(:first))
end
def set_language(lang=:en)
@request.session[:language] = lang
end
def login_as(username=’testadmin’)
@request.session[:admin_account] = username
end
def login_customer(email=’aris@test.com’)
@request.session[:user_id] = User.find_by_email(email)
end
def logout
@request.session[:admin_account] = nil
end
def asset_file
fixture_file_upload(“files/test.png”, ‘image/png’)
end
def other_asset_file
fixture_file_upload(“files/other_test.png”, ‘image/png’)
end
def invalid_asset_type
fixture_file_upload(“files/test.png”, ‘text/plain’)
end
end
Filed under: om ruby asline nang bogor (baca ruby on rails) | Tagged: test |
Tinggalkan Balasan