Spec'in controllers request for nested routes

describe PlayersController, “handling GET /saltmines/games/1/players” do

before do
@game = mock_model(Game, :to_param => “1”)
@game.stub_association!(:players, :find => mock_model(Player))
end

def do_get
get :index, :game_id => @game
end

it “should be successful” do
do_get
response.should be_success
end

it “should render index template” do
do_get
response.should render_template(‘index’)
end
end

ActiveRecord::RecordNotFound in ‘PlayersController handling GET
/saltmines/games/1/players should be successful’
Couldn’t find Game with ID=#Spec::Mocks::Mock:0x2ffcde4
/Volumes/EXTERNAL/web/omenking.ca/config/…/app/controllers/players_controller.rb:5:in
index' /Volumes/EXTERNAL/web/omenking.ca/spec/controllers/players_controller_spec.rb:71:indo_get’
/Volumes/EXTERNAL/web/omenking.ca/spec/controllers/players_controller_spec.rb:75:
/Volumes/EXTERNAL/web/omenking.ca/spec/controllers/players_controller_spec.rb:63:

I’m passing teh game_id in the request shouldn’t this be enough?

On 10/8/07, Andrew WC Brown [email protected] wrote:

describe PlayersController, “handling GET /saltmines/games/1/players” do

before do
@game = mock_model(Game, :to_param => “1”)
@game.stub_association!(:players, :find => mock_model(Player))
end

def do_get
get :index, :game_id => @game

Rails will turn @game into an id internally, but not in a spec (or in
a rails test). So this should work:

get :index, :game_id => 1

I had originally done so but I was getting the following:

ActiveRecord::RecordNotFound in ‘PlayersController handling GET
/saltmines/games/1/players should be successful’
Couldn’t find Game with ID=1
/Volumes/EXTERNAL/web/omenking.ca/config/…/app/controllers/players_controller.rb:5:in
index' /Volumes/EXTERNAL/web/omenking.ca/spec/controllers/players_controller_spec.rb:71:in do_get’
/Volumes/EXTERNAL/web/omenking.ca/spec/controllers/players_controller_spec.rb:75:
/Volumes/EXTERNAL/web/omenking.ca/spec/controllers/players_controller_spec.rb:63:

On 10/8/07, David C. [email protected] wrote:

get :index, :game_id => @game
do_get

/Volumes/EXTERNAL/web/omenking.ca/spec/controllers/players_controller_spec.rb:75:

http://rubyforge.org/mailman/listinfo/rspec-users


rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users


Monsterbox Productions
putting small businesses on-line

1319 Victoria Avenue East
Thunder Bay, Ontario P7C 1C3
Canada

Andrew WC Brown
web-developer and owner
[email protected]
P: 807-626-9009
F: 807-624-2705

On 10/8/07, Andrew WC Brown [email protected] wrote:

I had originally done so but I was getting the following:

ActiveRecord::RecordNotFound in ‘PlayersController handling GET
/saltmines/games/1/players should be successful’
Couldn’t find Game with ID=1

There’s something that your code is doing that is not being addressed
in the spec. What do you suppose it might be, given this error.

Ohhhhh…

Game.stub!(:find).and_return(@game)

Of Course!

On 10/8/07, Andrew WC Brown [email protected] wrote:

Ohhhhh…

Game.stub!(:find).and_return(@game)

Of Course!

By George, I think he’s got it.

Cheers,
David