Skip to content

Commit

Permalink
support multiple plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
twalpole committed Sep 17, 2018
1 parent 536c107 commit 0c0a5db
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions lib/capybara/node/pluginify.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,13 @@ module Pluginify
def self.prepended(mod)
mod.public_instance_methods.each do |method_name|
define_method method_name do |*args, **options|
plugin_name = options.delete(:using) { |_using| session_options.default_plugin[method_name] }
if plugin_name
plugin_names = Array(options.delete(:using) { |_using| session_options.default_plugin[method_name] })
plugin_names.reduce(false) do | memo, plugin_name |
plugin = Capybara.plugins[plugin_name]
raise ArgumentError, "Plugin not loaded: #{plugin_name}" unless plugin
raise NoMethodError, "Action not implemented in plugin: #{plugin_name}:#{method_name}" unless plugin.respond_to?(method_name)
plugin.send(method_name, self, *args, **options)
else
super(*args, **options)
end
memo || plugin.send(method_name, self, *args, **options)
end || super(*args, **options)
end
end
end
Expand Down

0 comments on commit 0c0a5db

Please sign in to comment.