class CUKES::RubyGems

Public Instance Methods

compare_heading(gem_name) click to toggle source

Description : compares the gem header name Author : Chandra sekaran Argument :

gem_name         : name of the gem
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 82
def compare_heading(gem_name)
  wait_for_object(h1_title_element)
  expected_heading = "search for #{gem_name}"
  actual_heading = h1_title_element.text
  raise "The expected heading is #{expected_heading} but actual heading is #{actual_heading}" if actual_heading != expected_heading
  wait_for_object(div_search_result_element, "Could not find gem result list")
  raise "No gems found for the given gem" if div_search_result_element.text.include?("No gems found")
rescue Exception => ex
  $log.error("Failure while comparing Gem header for gem '#{gem_name}' : #{ex}")
  exit
end
fetch_desired_gem() click to toggle source

Description : searches for the specific gem and selects it Author : Chandra sekaran

# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 97
def fetch_desired_gem
  gem_object = ""
  gem_name = ""
  max = 0
  div_search_result_element.link_elements(:xpath => "./a").each do |parent|
    current = parent.paragraph_element(:xpath => "./p").text
    current = current.gsub!(',','').to_i if current.include?(',')
    if max < current.to_i
      max = current.to_i
      gem_object = parent.strong_element(:xpath => "./div/h2")
    end
  end
  gem_name = gem_object.text
  gem_object.click
  gem_name
rescue Exception => ex
  $log.error("Failure while getting desired gem : #{ex}")
  exit
end
fetch_gem_details(gem) click to toggle source

Description : fetches the gem details Author : Chandra sekaran Argument :

gem              : name of the gem
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 122
def fetch_gem_details(gem)
  wait_for_object(h1_title_element)

  gem_name, gem_version = split_gem_and_version(gem)
  gem_heading = gem_name + " " + gem_version
  raise "The expected value is '#{gem_heading}' but the actual value is '#{h1_title_element.text}'" if h1_title_element.text != gem_heading

  $log.info "Gem Description"
  $log.info "\tGem Name     : #{h1_title_element.text}"
  $log.info "\tGem install  : #{textfield_gem_install_elements.last.value}"
  $log.info "\tGemfile      : #{textfield_gem_install_elements.first.value}"

  fetch_gem_versions
  fetch_gem_runtime_dependencies
  fetch_gem_ruby_dependencies
  fetch_gem_development_dependencies
rescue Exception => ex
  $log.error("Failure while fetching Gem details for gem '#{gem_name}' : #{ex}")
  exit
end
fetch_gem_development_dependencies() click to toggle source

Description : fetches the gem development dependencies Author : Chandra sekaran

# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 170
def fetch_gem_development_dependencies
  $log.info "Ruby Dependency"
  fetch_list_items(div_gem_development_dependencies_element)
end
fetch_gem_ruby_dependencies() click to toggle source

Description : fetches the gem ruby dependencies Author : Chandra sekaran

# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 162
def fetch_gem_ruby_dependencies
  $log.info "Ruby Dependency"
  fetch_list_items(div_gem_ruby_dependencies_element)
end
fetch_gem_runtime_dependencies() click to toggle source

Description : fetches the gem runtime dependencies Author : Chandra sekaran

# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 154
def fetch_gem_runtime_dependencies
  $log.info "Runtime Dependencies"
  fetch_list_items(div_gem_runtime_dependencies_element)
end
fetch_gem_versions() click to toggle source

Description : fetches the gem version Author : Chandra sekaran

# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 146
def fetch_gem_versions
  $log.info "Versions"
  fetch_list_items(div_gem_version_element)
end
fetch_list_items(parent_element) click to toggle source

Description : fetches the text under list of elements Author : Chandra sekaran Argument :

parent_element   : parent element object
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 180
def fetch_list_items(parent_element)
  if parent_element.exists? && parent_element.visible?
    list_elements = ""
    if parent_element.div_element(:xpath => "./div[@class='t-list__items']").exists?
      list_elements = parent_element.link_elements(:xpath => "./div[@class='t-list__items']/a")
    elsif parent_element.ordered_list_element(:xpath => "./ol").exists?
      list_elements = parent_element.list_item_elements(:xpath => "./ol/li")
    end
    list_elements.each do |list|
      $log.info "\t #{list.text}"
    end
  else
    $log.info "\t No data found"
  end
rescue Exception => ex
  $log.error("Failure while fetching gem list items : #{ex}")
  exit
end
initialize_page() click to toggle source

Description : invoked automatically when the page class object is created Author : Chandra sekaran

# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 19
def initialize_page
  wait_for_page_load
end
search_for_gem(gem_name = "", str_data_node = "gems") click to toggle source

Description : searches for the given input gem name Author : Chandra sekaran Arguments :

gem_name         : name of the gem
str_data_node    : test data root node name
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 59
def search_for_gem(gem_name = "", str_data_node = "gems")
  if gem_name == ""
    # the set_scenario_based_datafile method sets the test data content from the given input file name
    # present in library/app_specific/datafile_names.rb
    # the yml file can be :
    # *  a local data file - inside the current feature name directory
    # *  a global data file - inside desktop directory
    hash_gem_name = set_scenario_based_datafile(GEM_NAME)
    gem_name = hash_gem_name[str_data_node]["gem_name"]
  end
  wait_for_object(input_search_element, "Could not find search textbox")
  self.input_search = gem_name
  input_search_element.send_keys(:enter)
rescue Exception => ex
  $log.error("Failure while searching for gem '#{gem_name}' : #{ex}")
  exit
end
sign_in() click to toggle source

Description : sign into the application Author : Chandra sekaran

# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 26
def sign_in
  click_on(link_signin_element)
  wait_for_object(textfield_email_element, "Could not find textfield Email")
  self.textfield_email = USER_NAME  # "profchan2k15@gmail.com"
  self.textfield_password = PASSWORD  # "chan123@1"
  click_on(button_sign_in_element)
  wait_for_page_load
  #raise "Error in sign in" if !is_text_present(self, "CHAN90", 120)
  $log.success("Sign in successful")
rescue Exception => ex
  $log.error("Failure while signing in : #{ex}")
  exit
end
sign_out() click to toggle source

Description : sign out from the application Author : Chandra sekaran

# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 43
def sign_out
  click_on(link_menu_element)
  click_on(link_signout_element)
  #raise "Error in sign out" if !is_text_present(self, "Sign in", 120)
  $log.success("Sign out successful")
rescue Exception => ex
  $log.error("Failure while signing out : #{ex}")
  exit
end
split_gem_and_version(gem) click to toggle source

Description : splits gem name and its version from given input string Author : Chandra sekaran Argument :

gem              : gem name string with version

Return Arguments :

gem_name         : gem name
gem_version      : gem version
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 207
def split_gem_and_version(gem)
  gem_name = gem.split(" ").first
  gem_version = gem.split(" ").last
  return gem_name, gem_version
end