68 lines
1.5 KiB
Ruby
68 lines
1.5 KiB
Ruby
class ActiveSupport::TestCase
|
|
include ActiveRecord::TestFixtures
|
|
self.use_transactional_fixtures = true
|
|
|
|
class << self
|
|
def assertion(name, &block)
|
|
mc = class << self ; self ; end
|
|
mc.class_eval do
|
|
define_method(name) do
|
|
it(name, &block)
|
|
end
|
|
end
|
|
end
|
|
|
|
def asssertion_group(name, &block)
|
|
mc = class << self ; self ; end
|
|
mc.class_eval do
|
|
define_method(name, &block)
|
|
end
|
|
end
|
|
|
|
def macro(name, &block)
|
|
class_eval do
|
|
define_method(name, &block)
|
|
end
|
|
end
|
|
|
|
def describe(description, toplevel=nil, &blk)
|
|
text = toplevel ? description : "#{name} #{description}"
|
|
klass = Class.new(self)
|
|
|
|
klass.class_eval <<-RUBY_EVAL
|
|
def self.name
|
|
"#{text}"
|
|
end
|
|
RUBY_EVAL
|
|
|
|
# do not inherit test methods from the superclass
|
|
klass.class_eval do
|
|
instance_methods.grep(/^test.+/) do |method|
|
|
undef_method method
|
|
end
|
|
end
|
|
|
|
klass.instance_eval &blk
|
|
end
|
|
alias_method :context, :describe
|
|
|
|
def let(name, &blk)
|
|
values = {}
|
|
define_method(name) do
|
|
return values[name] if values.has_key?(name)
|
|
values[name] = instance_eval(&blk)
|
|
end
|
|
end
|
|
|
|
def it(description, &blk)
|
|
define_method("test: #{name} #{description}", &blk)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
def describe(description, &blk)
|
|
ActiveSupport::TestCase.describe(description, true, &blk)
|
|
end
|
|
|