Sha256: e827b7e67bd67307297630f3a1d7aa4b5e8d6aaab8e393e586fbaeb7e56a49a7
Contents?: true
Size: 1.13 KB
Versions: 5
Compression:
Stored size: 1.13 KB
Contents
require 'active_support/core_ext/string/inflections' module Kookaburra class UIDriver module HasUIComponent UIComponentNotFound = Class.new(StandardError) module ClassMethods def ui_component(component_name) self.ui_component_names << component_name define_method(component_name) do options = { :browser => browser, :test_data => test_data } # TODO: memoize the following line? component_class(component_name).new(options) end define_method("has_#{component_name}?") do send(component_name).visible? end end end module InstanceMethods def ui_components ui_component_names.map { |name| self.send(name) } end def component_class(component_name) self.class.const_get(component_name.to_s.camelize) end end def self.included(receiver) receiver.class_attribute :ui_component_names receiver.ui_component_names = [] receiver.extend ClassMethods receiver.send :include, InstanceMethods end end end end
Version data entries
5 entries across 5 versions & 1 rubygems