Hi,
I wanted to test something like this:
/lib/rest_verification.rb
module RestVerification
def self.included(base) # :nodoc:
base.extend(ClassMethods)
end
module ClassMethods
def verify_rest_actions
verify :method => :post, :only => [:create], :redirect_to =>
{ :action => :new }
…
end
end
end
(just send some verify to controller).
My attempt:
describe RestVerification do
class FooController < ActionController::Base
include RestVerification
verify_rest_actions
def new ; end
def index ; end
def create ; end
def edit ; end
def update ; end
def destroy ; end
end
controller_name ‘foo’ # this only works with ruby 1.8.7 : 1.9.1
says “uninitialized constant FooController”
tests FooController # this works with both
before(:each) do
ActionController::Routing::Routes.draw do |map|
map.resources :foo
end
end
after(:each) do
ActionController::Routing::Routes.reload!
end
it ‘:create should redirect to :new if invoked with wrong verb’ do
[:get, :put, :delete].each do |verb|
send verb, :create
response.should redirect_to(new_foo_url)
end
end
…
end
Using ruby 1.8.7 it works:
$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
$ rake
RestVerification
:create should redirect to :new if invoked with wrong verb
Finished in 0.175586 seconds
Using ruby 1.9.1 it fails:
$ rvm use 1.9.1
Using ruby 1.9.1 p378
$ rake
RestVerification
:create should redirect to :new if invoked with wrong verb (FAILED -
1)
1)
‘RestVerification :create should redirect to :new if invoked with
wrong verb’ FAILED
expected redirect to “http://test.host/foo/new”, got redirect to
“http://test.host/spec/rails/example/controller_example_group/
subclass_1/foo/new”
What can I do to make it work under ruby 1.9.1?
thanks
pietro