#require 'test_xml/test_unit'
require 'action_controller/test_case'
module Roar::Rails
module TestCase
def process(action, *args)
raise
if args.first.is_a?(String)
puts "YO"
request.env['RAW_POST_DATA'] = args.shift
method = args.pop
args << nil
args << method
end
super
end
def assert_response(status, headers={}) # FIXME: allow message.
super
if headers.is_a?(Hash)
assert_headers(headers)
else
assert_body(headers)
end
end
def assert_headers(headers)
headers.each_pair do |k,v|
assert_equal v, @response.headers[k]
end
end
def assert_body(body, options={})
return assert_xml_equal body, @response.body if options[:format] == :xml # FIXME: how do we know whether assert_xml is appropriate?
assert_equal body, @response.body
end
end
end
ActionController::TestCase::Behavior.class_eval do
# FIXME: ugly monkey-patching.
# TODO: test:
# put :create
# put :create, :format => :xml
# put :create, "", :format => :xml
# put :create, ""
include Roar::Rails::TestCase
end
RSpec::Rails::ControllerExampleGroup.class_eval do
#include Roar::Rails::TestCase
# FIXME: include module!
def process(action, *args)
if args.first.is_a?(String)
request.env['RAW_POST_DATA'] = args.shift
method = args.pop
args << nil
args << method
end
super
end
end