Patrick J. Collins
2012-May-15 06:47 UTC
[rspec-users] how can I do an "or" within the context of a matcher?
Capybara has two methods: page.has_button? and page.has_link? ... I am wondering, how can I make a helper method that will be satisfied by one or the other? In other words, I want to be able to do: page.should have_link_or_button("blah") def have_link_or_button(locator) have_link(locator) || have_button(locator) end But that doesn''t work... Is there any way to do this? Patrick J. Collins http://collinatorstudios.com
Rodrigo Rosenfeld Rosas
2012-May-15 14:18 UTC
[rspec-users] how can I do an "or" within the context of a matcher?
You''re looking for Custom Matchers: https://github.com/dchelimsky/rspec/wiki/Custom-Matchers Em 15-05-2012 03:47, Patrick J. Collins escreveu:> Capybara has two methods: > > page.has_button? > > and > > page.has_link? > > ... I am wondering, how can I make a helper method that will be > satisfied by one or the other? In other words, I want to be able to do: > > page.should have_link_or_button("blah") > > def have_link_or_button(locator) > have_link(locator) || have_button(locator) > end > > But that doesn''t work... Is there any way to do this? > > Patrick J. Collins >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20120515/6f512697/attachment.html>
Justin Ko
2012-May-15 16:03 UTC
[rspec-users] how can I do an "or" within the context of a matcher?
On May 15, 2012, at 12:47 AM, Patrick J. Collins wrote:> Capybara has two methods: > > page.has_button? > > and > > page.has_link? > > ... I am wondering, how can I make a helper method that will be > satisfied by one or the other? In other words, I want to be able to do: > > page.should have_link_or_button("blah") > > def have_link_or_button(locator) > have_link(locator) || have_button(locator) > end > > But that doesn''t work... Is there any way to do this? > > Patrick J. Collins > http://collinatorstudios.com > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-usersYou need a custom matcher, something like this: RSpec::Matchers.define :have_link_or_button do |locator| match do |page| page.has_button?(locator) || page.has_link?(locator) end end BTW, I believe Capybara has a method that checks for a button *or* link - look into that.