Module: Screengem::PageReferences
- Defined in:
- lib/screengem/page_references.rb
Overview
rubocop:disable Style/GuardClause
Class Method Summary collapse
Class Method Details
.extended(_mod) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/screengem/page_references.rb', line 8 def self.extended(_mod) # One time definition of the page object references. return unless PageReferences.instance_methods.empty? # # Generate a factory method for each page object we can find. # # Example: # # def login_page # @login_page ||= Pages::LoginPage.new # end # generated_method_names = [] Screengem::FeaturePage.descendants.each do |page_object| class_name = page_object.name method_name = class_name.demodulize.underscore if generated_method_names.include?(method_name) raise "Name collision: two page objects resolve to '#{method_name}'." else generated_method_names << method_name end module_eval(" def \#{method_name}\n @\#{method_name} ||= \#{class_name}.new\n end\n RUBY\n end\nend\n", __FILE__, __LINE__ + 1) |