Rspec testing in rails3

Hi,

I have a Queues controller and and QueueItems controller in my rails
application. In routes I have defined as below
match 'queues/:queue_id/next', :to=> 'queueitems#next'
In my QueueItems Controller I have a next action and it assigns an
instance variable.

def next
@queue = "Regular"
#other stuffs related to regular
end

How do I test this in Rspec. I am pretty very new to Rspec. Please help.
I tried like the below
describe QueuesController do
describe "next " do
it “routes /queues/:queue_id/next” do
{ :get => “/queues/regular_queue/next” }.should route_to(
:controller => “queue_items”,
:action => “next”,
:queue_id => “regular_queue”,
:format => “json”
)
assigns(:queue).should_not be_nil
expect(response).to be_success
end
end

But it is not at all coming inside my next action in controller.

On Saturday, April 26, 2014 4:09:15 PM UTC+1, Ruby-Forum.com User wrote:

      :format => "json"
        )
    assigns(:queue).should_not be_nil
    expect(response).to be_success
  end

But it is not at all coming inside my next action in controller.

What you’ve written there is a routing spec - it’s just testing that
your
routes file maps that path to the correct controller/action. It’s not
making a request at all. For that you want a controller spec (these
should
be in spec/controllers/ for rspec to detect this as a controller spec.
You’d want something along these lines

describe QueueItemsController do
describe ‘GET next’ do
it ‘should assign queue’ do
get :next
assigns(:queue).should == ‘Regular’
end
end
end

Fred

Frederick C. wrote in post #1144184:

On Saturday, April 26, 2014 4:09:15 PM UTC+1, Ruby-Forum.com User wrote:

      :format => "json"
        )
    assigns(:queue).should_not be_nil
    expect(response).to be_success
  end

But it is not at all coming inside my next action in controller.

What you’ve written there is a routing spec - it’s just testing that
your
routes file maps that path to the correct controller/action. It’s not
making a request at all. For that you want a controller spec (these
should
be in spec/controllers/ for rspec to detect this as a controller spec.
You’d want something along these lines

describe QueueItemsController do
describe ‘GET next’ do
it ‘should assign queue’ do
get :next
assigns(:queue).should == ‘Regular’
end
end
end

Fred
Hi Fred,

I tried the above code by putting it in the
spec/controllers/queue_items_constroller_spec.rb file
But it shows the routing error as
Failure/Error: get :next
ActionController::RoutingError:
No route matches {:controller=>“queue_items”, :action=>“next”}
In the routes file I have defined as
match ‘/queues/:queue_id/next’, :to => ‘queue_items#next’,
:format=>‘json’

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs