my own custom test_helper.rb

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

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

%d blogger menyukai ini: