require 'rubygems'
require 'test/unit'
require 'shoulda'
require 'mocha'
require 'rack/test'
require 'webrat'
require 'thor/group'
# We try to load the vendored padrino-core if exist
%w(core).each do |lib|
if File.exist?(File.dirname(__FILE__) + "/../../padrino-#{lib}/lib")
$:.unshift File.dirname(__FILE__) + "/../../padrino-#{lib}/lib"
end
end
require 'padrino-gen'
require 'padrino-core/support_lite'
Padrino::Generators.load_components!
class Test::Unit::TestCase
include Rack::Test::Methods
include Webrat::Methods
include Webrat::Matchers
Webrat.configure do |config|
config.mode = :rack
end
def stop_time_for_test
time = Time.now
Time.stubs(:now).returns(time)
return time
end
# generate(:controller, 'DemoItems', '-r=/tmp/sample_project')
def generate(name, *params)
"Padrino::Generators::#{name.to_s.camelize}".constantize.start(params)
end
# assert_has_tag(:h1, :content => "yellow") { "
yellow
" }
# In this case, block is the html to evaluate
def assert_has_tag(name, attributes = {}, &block)
html = block && block.call
matcher = HaveSelector.new(name, attributes)
raise "Please specify a block!" if html.blank?
assert matcher.matches?(html), matcher.failure_message
end
# assert_has_no_tag, tag(:h1, :content => "yellow") { "green
" }
# In this case, block is the html to evaluate
def assert_has_no_tag(name, attributes = {}, &block)
html = block && block.call
attributes.merge!(:count => 0)
matcher = HaveSelector.new(name, attributes)
raise "Please specify a block!" if html.blank?
assert matcher.matches?(html), matcher.failure_message
end
# assert_file_exists('/tmp/app')
def assert_file_exists(file_path)
assert File.exist?(file_path), "File at path '#{file_path}' does not exist!"
end
alias :assert_dir_exists :assert_file_exists
# assert_no_file_exists('/tmp/app')
def assert_no_file_exists(file_path)
assert !File.exist?(file_path), "File should not exist at path '#{file_path}' but was found!"
end
alias :assert_no_dir_exists :assert_no_file_exists
# Asserts that a file matches the pattern
def assert_match_in_file(pattern, file)
File.exist?(file) ? assert_match(pattern, File.read(file)) : assert_file_exists(file)
end
def assert_no_match_in_file(pattern, file)
File.exists?(file) ? !assert_match(pattern, File.read(file)) : assert_file_exists(file)
end
end
class Object
# Silences the output by redirecting to stringIO
# silence_logger { ...commands... } => "...output..."
def silence_logger(&block)
orig_stdout = $stdout
$stdout = log_buffer = StringIO.new
block.call
$stdout = orig_stdout
log_buffer.rewind && log_buffer.read
end
end
module Webrat
module Logging
def logger # :nodoc:
@logger = nil
end
end
end