Robin van Dijk
Robin van Dijk

Reputation: 827

Capybara error when trying to fill a text_field_tag

In my application a user can search for a zipcode which gives back its corresponding street name and city. The zipcode is written in a <%= text_field_tag %> while the street name and city would be put into a div.

Now I have changed it that the street name would also be rendered into a <%= text_field_tag %> but my spec is now failing.

The code below is a working test where the streetname and city would be put into a div.

it 'submits the zipcode and house number', js: true do  
    fill_in 'zipcode', with: '1111AA'
    fill_in 'house_number', with: 1
    click_button('Search')
    within('#street_name') do
        page.should have_content 'Street X'
    end
    within('#city') do
        page.should have_content 'Town X'
    end
end

My divs:

<div id="street_name"><%= street_name %></div>
<div id="city"><%= city %></div>

My text field tags:

<%= text_field_tag 'street_name', street_name, placeholder: 'Straatnaam', id: 'street_name' %>
<%= text_field_tag 'city', city, placeholder: 'Woonplaats', id: 'city' %>

How should I write my spec so it checks that the streetname and city are in a <%= text_field_tag %> instead of a div?

Upvotes: 1

Views: 333

Answers (1)

Guilherme Franco
Guilherme Franco

Reputation: 1483

I'm pretty sure that you can find your text field and make an assertion about it's value with the following code:

find_field("street_name").value.should eq 'Street X'

Make sure, though, that the id is unique across the layout, otherwise you can run into some nasty ambiguity failures.

I hope that helps !

Upvotes: 1

Related Questions