class Bucky::TestEquipment::Verifications::ServiceVerifications

Attributes

e2e_verification[R]

Public Class Methods

new(args) click to toggle source

@param [String] @service @param [String] @device (pc, sp) @param [Selenium::WebDriver::Remote::Driver] @driver @param [Bucky::TestEquipment::PageObject::Pages] @pages @param [String] @test_case_name

# File lib/bucky/test_equipment/verifications/service_verifications.rb, line 16
def initialize(args)
  @service = args[:service]
  @device = args[:device]
  @driver = args[:driver]
  @pages = args[:pages]
  @test_case_name = args[:method_name]
  collect_verifications
  @e2e_verification = Bucky::TestEquipment::Verifications::E2eVerification.new(@driver, @pages, @test_case_name)
end

Public Instance Methods

method_missing(verification, **args) click to toggle source
# File lib/bucky/test_equipment/verifications/service_verifications.rb, line 26
def method_missing(verification, **args)
  if e2e_verification.respond_to? verification
    puts "    #{verification} is defined in E2eVerificationClass."
    e2e_verification.send(verification, args[:exec])
  elsif args[:exec].key?(:page)
    send(args[:exec][:page]).send(verification, args[:exec])
  else
    raise StandardError, "Undefined verification method or invalid arguments. #{verification},#{args[:exec]}"
  end
rescue StandardError => e
  Bucky::Core::Exception::WebdriverException.handle(e, "#{args[:step_number]}:#{args[:proc_name]}")
end

Private Instance Methods

collect_verifications() click to toggle source

Load page and define page verification method

# File lib/bucky/test_equipment/verifications/service_verifications.rb, line 42
def collect_verifications
  module_service_name = @service.split('_').map(&:capitalize).join
  Dir.glob("#{$bucky_home_dir}/services/#{@service}/#{@device}/verifications/*.rb").each do |file|
    require file

    page_name = file.split('/')[-1].sub('.rb', '')
    page_class_name = page_name.split('_').map(&:capitalize).join

    # Get instance of page object
    page_class = eval(format('Services::%<module_service_name>s::%<device>s::Verifications::%<page_class_name>s', module_service_name: module_service_name, device: @device.capitalize, page_class_name: page_class_name))
    page_instance = page_class.new(@driver, @pages, @test_case_name)

    self.class.class_eval do
      define_method(page_name) { page_instance }
    end
  end
end