Sha256: 279f55e776caf25442a3180401c748a0ee172dc9be4dd954b87badc401cf4687
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
require 'active_support/core_ext/string/inflections' require 'active_support/core_ext/class/attribute' 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 } # 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kookaburra-0.12.0 | lib/kookaburra/ui_driver/mixins/has_ui_component.rb |