class AdminModule::Pages::GuidelineVersionPage

Attributes

errors[R]

Public Instance Methods

add_error(err_msg) click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 102
def add_error err_msg
  errors << err_msg
end
capture_errors() click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 106
def capture_errors
  add_error(version_errors) unless (!version_errors? || version_errors.empty?)
  add_error(add_version_page_errors) unless (!add_version_page_errors? || add_version_page_errors.empty?)
end
get_dynamic_url() click to toggle source

page_url(:get_dynamic_url)

# File lib/admin_module/pages/guideline_version_page.rb, line 20
def get_dynamic_url
  AdminModule.configuration.url(GuidelineVersionPage)
end
has_errors?() click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 98
def has_errors?
  errors.size > 0
end
latest_version() click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 133
def latest_version
  doc = Nokogiri::HTML(@browser.html)
  # The specific version notes TD element:
  #version_notes_row_1 = doc.css("#dgrVersions > tbody > tr:nth-child(2) > td:nth-child(13)")

  # The entire 1st version row (TR) element:
  version_row = doc.css("#dgrVersions > tbody > tr:nth-child(2)")
end
raise_if_errors() click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 111
def raise_if_errors
  if has_errors?
    error = ''
    errors.each { |err| error << err + "\n" }
    raise error
  end
end
reposition_file_input() click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 81
  def reposition_file_input
    repos_script = <<EOS
document.getElementsByTagName('input');
p = document.getElementsByName('ctl00$cntPlh$inputUpload');
if (p != null)
{
    p[0].style.marginLeft='0';
}
EOS

    @browser.execute_script(repos_script)
  end
reset_errors() click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 94
def reset_errors
  errors = []
end
upload(source_file, comments = nil) click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 46
def upload(source_file, comments = nil)
  # The file field (visible as a button) has a negative margin.
  # We can't do anything with it (it's not 'visible') as it is,
  # so we'll use JS to set the left margin to 0.
  reposition_file_input

  # Set the file to upload.
  #file_input_element.set(source_file)  # The watir way...
  self.file_input = source_file

  if comments.nil?
    comments = "auto upload"
  end
  self.version_notes = comments

  reset_errors

  self.save

  capture_errors
  verify_latest_version comments

  # Return the url of the version guideline page.
  self

rescue Timeout::Error => e
    add_error 'Timeout occurred. Try adjusting the browser_timeout configuration option.'

rescue Exception => e
    add_error e.message

ensure
  raise_if_errors
end
verify_latest_version(comments) click to toggle source
# File lib/admin_module/pages/guideline_version_page.rb, line 119
def verify_latest_version comments
  if !versions_table?
    add_error("Version upload not completed. Did a timeout occur?") unless has_errors?
    return
  end

  version_row = latest_version

  # We have to account for HTML encodings when comparing comments.
  unless version_row.to_s.include?(CGI.escapeHTML(comments))
    add_error("Version upload not completed. Comment not found.")
  end
end