[rspec-users] View spec for 'new' keeps failing despite generated html has expected attribute

Gordon anexiole at gmail.com
Wed Oct 19 01:30:38 EDT 2011


Hi guys,

 I have created a new resource, brands and here's the spec for 'new'
which is failing.

I do not know what's going on despite checking it out for a few times
already

------ app/views/brands/new.html.erb - start  -------------

<h1>New brand</h1>

<%= render 'form' %>

<%= link_to 'Back', brands_path %>


------ app/views/brands/new.html.erb - start -------------

<h1>New brand</h1>

<%= render 'form' %>

<%= link_to 'Back', brands_path %>


------ app/views/brands/new.html.erb - end -------------


------ app/views/brands/_form.html.erb - start  -------------

<%= form_for(@brand) do |f| %>
  <% if @brand.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@brand.errors.count, "error") %> prohibited
this brand from being saved:</h2>

      <ul>
      <% @brand.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :description %><br />
    <%= f.text_field :description %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

------ app/views/brands/_form.html.erb - end    -------------


--------spec/views/parts/new.html.erb_spec.rb - start --------


require 'spec_helper'

describe "brands/new.html.erb" do
 include Devise::TestHelpers

  before(:each) do
    @brand = assign( :brand,
                        stub_model( Brand,
                          :name        => 'Apple',
                          :description => 'OS X and Ipods'
                        )
   )
  end

  it "renders new brand form" do
        render
        rendered.should have_selector( 'form',
                :method => 'post',
                :action => brands_path
        ) do |form|
                form.should have_selector("input", :type => "submit")

        end
  end

end


--------spec/views/parts/new.html.erb_spec.rb - end   --------


My spec, spec/views/brands/new.html.erb_spec.rb fails with the
following error:


-------- Error message - start ------------------------

  1) brands/new.html.erb renders new brand form
     Failure/Error: form.should have_selector("input", :type =>
"submit")
       expected following output to contain a <input type='submit'/>
tag:
     # ./spec/views/brands/new.html.erb_spec.rb:21
     # ./spec/views/brands/new.html.erb_spec.rb:17

-------- Error message - end ------------------------


When I do a view source on the page, I could very well see the submit
button in the form.

----------- html form extract - start ---------------------

<form accept-charset="UTF-8" action="/brands" class="new_brand"
id="new_brand" method="post"><div style="margin:0;padding:
0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /
><input name="authenticity_token" type="hidden" value="hei0qtUuaZ7WcR/M
+L97FURrdb+0a+N3szt64f7HrHk=" /></div>

  <div class="field">
    <label for="brand_name">Name</label><br />
    <input id="brand_name" name="brand[name]" size="30" type="text" />
  </div>
  <div class="field">
    <label for="brand_description">Description</label><br />
    <input id="brand_description" name="brand[description]" size="30"
type="text" />
  </div>
  <div class="actions">
    <input id="brand_submit" name="commit" type="submit" value="Create
Brand" />
  </div>
</form>

----------- html form extract - end ---------------------


What am I missing?

thanks :)








More information about the rspec-users mailing list