Why does rendered.should have_field pass when it shouldn't?

This is my new.html.erb_spec.rb:

let(:meal) do
mock_model(“Meal”).as_new_record.as_null_object
end

before(:each) do
assign(:meal, meal)
end

it “shows the name text field” do
render
rendered.should have_field(:name) # checks for both the label and
the
text field… right?
end

it "shows the description text area" do
  pending "This passes when it shouldn't"
  render
  rendered.should have_field(:description) # have_field is for text

fields and text areas (w/labels)… right?
end

it "shows the ingredients text area" do
  pending "This passes when it shouldn't"
  render
  rendered.should have_field(:ingredients)
end

==========
This is my new.html.erb:

New Meal

<%= render :partial => "form", :locals => { :meal => @meal, :button_name => "Create" } %>
It renders this partial... ========== The partial - _form.html.erb

<%= form_for [:admin, meal] do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>

<%= f.submit button_name %>
<% end %>

=============

The problem: rendered.should have_field(:description) and the one for
ingredients are passing although I never specify the description /
ingredient text fields or textareas in the form. Why is this? It seems
that the presence of the label and text field for :name is enough to
make
any have_field pass…

(have_field DOES test for text fields or text areas, right?)
(why does the documentation basically tell you /nothing/? no example or
anything…
Module: Capybara::RSpecMatchers — Documentation for jnicklas/capybara (master))

Help would be greatly appreciated.

Maybe this question is a little to wordy, so I’ll just ask this:

Could someone just tell me if

‘’’’
it “shows the name text field” do
render
rendered.should have_field(:name)
end
‘’’’

…checks for both the label and the text field? How come when I have
ONE
text field in my view, all such have_field(:blahs) pass? They
shouldn’t! I
must be missing something…