diff --git a/README.md b/README.md index 0ec88ed..f722d02 100644 --- a/README.md +++ b/README.md @@ -89,5 +89,9 @@ Sometimes the absence of a thing is just as important as the presence of a thing # selector's not there dont_find('#user') + +# ...after you've already found something... + +find('.node').dont_find('.something_inside') ``` diff --git a/lib/semantic_rails_view_helpers/capybara.rb b/lib/semantic_rails_view_helpers/capybara.rb index 93fbad3..cf1f301 100644 --- a/lib/semantic_rails_view_helpers/capybara.rb +++ b/lib/semantic_rails_view_helpers/capybara.rb @@ -62,6 +62,26 @@ def find_object_action(object, action) find("[data-type='#{object}'][data-action='#{action}']") end +module DontFindable + def dont_find_wrap(search) + yield + + sleep Capybara.default_wait_time + + yield + + raise Capybara::ElementFound.new(search) + rescue Capybara::ElementNotFound + true + end + + def dont_find(search) + dont_find_wrap(search) do + find(search) + end + end +end + module Capybara class ElementFound < StandardError def initialize(search) @@ -72,26 +92,14 @@ module Capybara @search end end -end -def dont_find_wrap(search) - yield - - sleep Capybara.default_wait_time - - yield - - raise Capybara::ElementFound.new(search) -rescue Capybara::ElementNotFound - true -end - -def dont_find(search) - dont_find_wrap(search) do - find(search) + class Node::Element + include DontFindable end end +include DontFindable + def dont_find_object(object) case object when Class