class PageSet
Attributes
context[RW]
pages[R]
Public Class Methods
new(context, smart_completion=true)
click to toggle source
# File lib/acceptance_test/page_set.rb, line 12 def initialize context, smart_completion=true @context = context @smart_completion = smart_completion @pages = [] end
page_set()
click to toggle source
# File lib/acceptance_test/page_set.rb, line 58 def self.page_set # access to class instance variable @page_set end
Public Instance Methods
delegate_to_page(page)
click to toggle source
# File lib/acceptance_test/page_set.rb, line 34 def delegate_to_page page pages << page self.class.send :attr_reader, page self.class.def_delegators page, *page_methods(page) end
delegate_to_pages(*pages)
click to toggle source
# File lib/acceptance_test/page_set.rb, line 26 def delegate_to_pages *pages pages.each do |page| delegate_to_page page end enable_smart_completion if @smart_completion end
detect_pages(scope)
click to toggle source
# File lib/acceptance_test/page_set.rb, line 78 def detect_pages scope pages_classes = scope.constants.select do |class_name| clazz = scope.const_get(class_name) clazz.ancestors.include? Page end pages_classes.collect do |class_name| clazz = scope.const_get(class_name) object = clazz.new self name = underscore(class_name.to_s) self.instance_variable_set("@#{name}", object) name end end
enable_smart_completion()
click to toggle source
# File lib/acceptance_test/page_set.rb, line 48 def enable_smart_completion context.class.send(:define_method, :method_missing) do |method_name, *args, &block| page_set.send method_name, *args, &block end page_set = self PageSet.class_eval do @page_set = page_set # class instance variable def self.page_set # access to class instance variable @page_set end end pages.each do |page| page_methods(page).each do |method_name| method = page_set.method(method_name) context.class.step "I #{method_name.to_s.gsub('_', ' ')}" do |*args| page_set.send method_name, *args end context.class.step "#{method.to_s.gsub('_', ' ')}" do page_set.send method_name, *args end end end end
execute(&code)
click to toggle source
# File lib/acceptance_test/page_set.rb, line 22 def execute &code MetaMethods::DslBuilder.instance.evaluate_dsl(self, nil, code) end
page_methods(page)
click to toggle source
# File lib/acceptance_test/page_set.rb, line 42 def page_methods page clazz = self.send(page).class clazz.instance_methods - Page.instance_methods end
session()
click to toggle source
# File lib/acceptance_test/page_set.rb, line 18 def session context.page end
Private Instance Methods
camelize(string)
click to toggle source
# File lib/acceptance_test/page_set.rb, line 100 def camelize string string.split("_").each {|s| s.capitalize! }.join("") end
underscore(string)
click to toggle source
# File lib/acceptance_test/page_set.rb, line 104 def underscore string string.scan(/[A-Z][a-z]*/).join("_").downcase end