Sha256: f1a1e9dfed86ba2fefc25d6c84ae86e917828754b4a08785c1c0c49cffed9b0c
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
require 'active_support/core_ext/string/inflections' require 'active_support/core_ext/class/attribute' require 'kookaburra/ui_driver/ui_component' 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
kookaburra-0.11.0 | lib/kookaburra/ui_driver/mixins/has_ui_component.rb |
kookaburra-0.10.0 | lib/kookaburra/ui_driver/mixins/has_ui_component.rb |