Class: AdminModule::Pages::GuidelineVersionPage

Inherits:
Object
  • Object
show all
Includes:
PageObject
Defined in:
lib/admin_module/pages/guideline_version_page.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



16
17
18
# File 'lib/admin_module/pages/guideline_version_page.rb', line 16

def errors
  @errors
end

Instance Method Details

#add_error(err_msg) ⇒ Object



102
103
104
# File 'lib/admin_module/pages/guideline_version_page.rb', line 102

def add_error err_msg
  errors << err_msg
end

#capture_errorsObject



106
107
108
109
# 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_urlObject

page_url(:get_dynamic_url)



20
21
22
# File 'lib/admin_module/pages/guideline_version_page.rb', line 20

def get_dynamic_url
  AdminModule.configuration.url(GuidelineVersionPage)
end

#has_errors?Boolean

Returns:

  • (Boolean)


98
99
100
# File 'lib/admin_module/pages/guideline_version_page.rb', line 98

def has_errors?
  errors.size > 0
end

#latest_versionObject



133
134
135
136
137
138
139
140
# 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_errorsObject



111
112
113
114
115
116
117
# 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_inputObject



81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/admin_module/pages/guideline_version_page.rb', line 81

def reposition_file_input
  repos_script = "document.getElementsByTagName('input');\np = document.getElementsByName('ctl00$cntPlh$inputUpload');\nif (p != null)\n{\n  p[0].style.marginLeft='0';\n}\n"

  @browser.execute_script(repos_script)
end

#reset_errorsObject



94
95
96
# File 'lib/admin_module/pages/guideline_version_page.rb', line 94

def reset_errors
  errors = []
end

#upload(source_file, comments = nil) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 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) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
# 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