Rails restful query and rspec

I am working on a project that searches for an item number. But the
item number is not unique. Which is better to do:

/search/12345 or /search?id=12345 I would prefer to use the first
one.
I have a route for it as map.search “/search/:item_number”

I have made both work with manual testing. I do have a problem in
rSpec testing though. I do not understand how to request the page from
the controller.

I tried:

in the public_controller I have:

def search
@items = Item.all_items(params(:item_number))

end

and in the rspec for the controller:

describe PublicController do

#Delete these examples and add some real ones
it “should use PublicController” do
controller.should be_an_instance_of(PublicController)
end

describe “GET ‘index’” do
it “should be successful” do
get ‘index’
response.should be_success
end
end

describe “GET /search/:item_number” do
it “should be successful” do
get :search, :item_number => “12345” # also tried ‘search’
response.should be_success
end
end
end

it errors with:
ArgumentError in ‘PublicController GET /search/:item_number should be
successful’
wrong number of arguments (1 for 0)

where have I gone wrong?

Don F.

try get ‘search’, { :item_number => “12345” }

On Jan 9, 2008 8:16 AM, dhf [email protected] wrote:

the controller.
and in the rspec for the controller:
it “should be successful” do
end


Ryan B.

Feel free to add me to MSN and/or GTalk as this email.

used: get “search”, {:item_number => “12345”} and it gave the
same error.

dhf

Could I have the backtrace on the error please?

On Jan 9, 2008 9:30 AM, dhf [email protected] wrote:

response.should be_success

Don F.


Ryan B.http://www.frozenplague.net
Feel free to add me to MSN and/or GTalk as this email.


Ryan B.

Feel free to add me to MSN and/or GTalk as this email.

We can talk gtalk if you want.

/Users/dhf/NetBeansProjects/snr/app/controllers/public_controller.rb:
8:in params' /Users/dhf/NetBeansProjects/snr/app/controllers/public_controller.rb: 8:insearch’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
base.rb:1158:in send' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ base.rb:1158:inperform_action_without_filters’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
filters.rb:697:in call_filters' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ filters.rb:689:inperform_action_without_benchmark’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
benchmarking.rb:68:in perform_action_without_rescue' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ benchmarking.rb:68:inperform_action_without_rescue’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
rescue.rb:199:in perform_action_without_caching' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ caching.rb:678:inperform_action’
/Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active_record/
connection_adapters/abstract/query_cache.rb:33:in cache' /Library/Ruby/Gems/1.8/gems/activerecord-2.0.2/lib/active_record/ query_cache.rb:8:incache’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
caching.rb:677:in perform_action' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ base.rb:524:insend’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
base.rb:524:in process_without_filters' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ filters.rb:685:inprocess_without_session_management_support’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
session_management.rb:123:in process_without_test' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ test_process.rb:15:inprocess’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
test_process.rb:393:in process' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ test_process.rb:364:inget’
./spec/controllers/public_controller_spec.rb:20:

Log file shows:

Processing PublicController#search (for 0.0.0.0 at 2008-01-08
13:15:29) [GET]
Session ID:
Parameters: {“action”=>“search”, “controller”=>“public”,
“item_number”=>“12345”}
SQL (0.000206) ROLLBACK