commit
e8c9f04a19
|
@ -5,4 +5,4 @@ doc
|
||||||
ri
|
ri
|
||||||
email.txt
|
email.txt
|
||||||
.svn
|
.svn
|
||||||
|
log
|
||||||
|
|
|
@ -1,27 +1,39 @@
|
||||||
require "mechanize"
|
require "mechanize"
|
||||||
|
|
||||||
module Webrat
|
module Webrat
|
||||||
class MechanizeSession < Session #:nodoc:
|
class MechanizeSession < Session
|
||||||
|
|
||||||
|
attr_accessor :response
|
||||||
|
alias :page :response
|
||||||
|
|
||||||
def initialize(mechanize = WWW::Mechanize.new)
|
def initialize(mechanize = WWW::Mechanize.new)
|
||||||
super()
|
super()
|
||||||
@mechanize = mechanize
|
@mechanize = mechanize
|
||||||
end
|
end
|
||||||
|
|
||||||
def get(url, data)
|
def get(url, data, headers_argument_not_used = nil)
|
||||||
@mechanize_page = @mechanize.get(url, data)
|
@response = @mechanize.get(url, data)
|
||||||
end
|
end
|
||||||
|
|
||||||
def post(url, data)
|
def post(url, data, headers_argument_not_used = nil)
|
||||||
@mechanize_page = @mechanize.post(url, data)
|
post_data = data.inject({}) do |memo, param|
|
||||||
|
case param.last
|
||||||
|
when Hash
|
||||||
|
param.last.each {|attribute, value| memo["#{param.first}[#{attribute}]"] = value }
|
||||||
|
else
|
||||||
|
memo[param.first] = param.last
|
||||||
|
end
|
||||||
|
memo
|
||||||
|
end
|
||||||
|
@response = @mechanize.post(url, post_data)
|
||||||
end
|
end
|
||||||
|
|
||||||
def response_body
|
def response_body
|
||||||
@mechanize_page.content
|
@response.content
|
||||||
end
|
end
|
||||||
|
|
||||||
def response_code
|
def response_code
|
||||||
@mechanize_page.code.to_i
|
@response.code.to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,4 +12,25 @@ describe Webrat::MechanizeSession do
|
||||||
@mech.headers.should == {}
|
@mech.headers.should == {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "post" do
|
||||||
|
def url
|
||||||
|
'http://test.host/users'
|
||||||
|
end
|
||||||
|
|
||||||
|
def data
|
||||||
|
{:user => {:first_name => 'Nancy', :last_name => 'Callahan'}}
|
||||||
|
end
|
||||||
|
|
||||||
|
def flattened_data
|
||||||
|
{'user[first_name]' => 'Nancy', 'user[last_name]' => 'Callahan'}
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should flatten model post data" do
|
||||||
|
mechanize = mock :mechanize
|
||||||
|
mechanize.should_receive(:post).with(url, flattened_data)
|
||||||
|
|
||||||
|
Webrat::MechanizeSession.new(mechanize).post(url, data)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
Loading…
Reference in New Issue