[rspec-users] oddness with messages_path

Cynthia Kiser cnk at ugcs.caltech.edu
Sat Nov 26 15:38:37 EST 2011

I am working through the Rails Views chapter in the RSpec Book and
noticed something odd when I created a spec for the edit view. I am
getting the wrong value from the messages_path helper. I was kind of
wondering if it would work or not - but had expected it to fail by not
giving me an id, not by constructing the url incorrectly. With the
code below I get the follwing error message. I get the same error
when using "messages_path(message)" or "messages_path(message.id)". 

  1) messages/edit.html.erb renders in update form using the rails way
  of doing RESTFUL urls
     Failure/Error: rendered.should have_selector("form", :method =>
  "post", :action => messages_path(message))
       expected following output to contain a <form method='post'
  action='/messages.1001'/> tag:

I can work around it by constructing the url myself with
"/messages/#{message.id}" but I am curious where the period is coming
from in the constructed url. 

require 'spec_helper'

describe 'messages/edit.html.erb' do
  let(:message) do
    mock_model("Message", :title => "Existing title", :text => "Existing text")

  before(:each) do
    assign(:message, message)

  it "renders in update form using the rails way of doing RESTFUL urls" do
    rendered.should have_selector("form", :method => "post", 
    		    			  :action => messages_path(message))
    rendered.should have_selector("input", :type => "hidden", 
    		    			   :name => "_method", :value => "put")

Cynthia N. Kiser
cnk at ugcs.caltech.edu

More information about the rspec-users mailing list