ruby on rails 3 - How can I click_link a specific row with Capybara -


i'm trying write capybara code not use css or funny matchers. acceptance test purposes, i'm using capybara navigate button , link text visible user.

so have simple test asserts administrator can edit user:

it 'allows administrator edit user'   user = login_admin_user   user1 = factorygirl.create(:user)   click_link "users"   current_path.should eq(users_path)   click_link "edit" # problem   current_path.should eq(edit_user_path(user1))   fill_in "last name", with: "myxzptlk"   click_button "update user"   page.should have_content("myxzptlk") end 

of course problem line above not specific enough; there 2 lines in table (user , user1). i'm pretty new tdd, how use capybara select correct link using visible text?

i'm not sure why you're avoiding 'css or funny matchers'. if don't want put them in test, abstract them away helper methods.

in specs have helper method this:

module featurehelper   def within_row(text, &block)     within :xpath, "//table//tr[td[contains(.,\"#{text}\")]]"       yield     end   end end 

and in specs can call like:

within_row(user1.name)   click_link 'edit' end 

the helper module goes inside spec/support folder, , gets loaded specs doing:

config.include featurehelper, type: :feature 

in spec_helper.rb.


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -