admin_module 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +14 -0
  5. data/Guardfile +24 -0
  6. data/LICENSE +22 -0
  7. data/README.md +281 -0
  8. data/Rakefile +98 -0
  9. data/admin_module.gemspec +34 -0
  10. data/bin/admin_module +13 -0
  11. data/lib/admin_module.rb +260 -0
  12. data/lib/admin_module/cli.rb +54 -0
  13. data/lib/admin_module/cli/cli_guideline.rb +80 -0
  14. data/lib/admin_module/cli/cli_lock.rb +149 -0
  15. data/lib/admin_module/cli/cli_parameter.rb +66 -0
  16. data/lib/admin_module/cli/cli_task.rb +149 -0
  17. data/lib/admin_module/cli_old.rb +92 -0
  18. data/lib/admin_module/client.rb +146 -0
  19. data/lib/admin_module/command.rb +25 -0
  20. data/lib/admin_module/command/client_access.rb +43 -0
  21. data/lib/admin_module/command/config.rb +310 -0
  22. data/lib/admin_module/command/dc.rb +110 -0
  23. data/lib/admin_module/command/gdl.rb +71 -0
  24. data/lib/admin_module/command/lock.rb +110 -0
  25. data/lib/admin_module/command/ppm.rb +142 -0
  26. data/lib/admin_module/command/rule.rb +77 -0
  27. data/lib/admin_module/command/ruleset.rb +56 -0
  28. data/lib/admin_module/command/snapshot.rb +110 -0
  29. data/lib/admin_module/command/stage.rb +131 -0
  30. data/lib/admin_module/command/task.rb +110 -0
  31. data/lib/admin_module/config_helper.rb +33 -0
  32. data/lib/admin_module/dc.rb +133 -0
  33. data/lib/admin_module/guideline.rb +86 -0
  34. data/lib/admin_module/locks.rb +142 -0
  35. data/lib/admin_module/page_factory.rb +55 -0
  36. data/lib/admin_module/pages.rb +120 -0
  37. data/lib/admin_module/pages/dc_definitions_page.rb +73 -0
  38. data/lib/admin_module/pages/dc_detail_page.rb +187 -0
  39. data/lib/admin_module/pages/guideline_page.rb +35 -0
  40. data/lib/admin_module/pages/guideline_version_page.rb +140 -0
  41. data/lib/admin_module/pages/guidelines_page.rb +59 -0
  42. data/lib/admin_module/pages/guidelines_version_all_page.rb +116 -0
  43. data/lib/admin_module/pages/lock_definition_page.rb +178 -0
  44. data/lib/admin_module/pages/lock_definitions_page.rb +69 -0
  45. data/lib/admin_module/pages/login_page.rb +75 -0
  46. data/lib/admin_module/pages/parameter_page.rb +62 -0
  47. data/lib/admin_module/pages/parameters_page.rb +46 -0
  48. data/lib/admin_module/pages/ppms_page.rb +110 -0
  49. data/lib/admin_module/pages/rule_page.rb +68 -0
  50. data/lib/admin_module/pages/rules_page.rb +74 -0
  51. data/lib/admin_module/pages/ruleset_page.rb +64 -0
  52. data/lib/admin_module/pages/rulesets_page.rb +60 -0
  53. data/lib/admin_module/pages/select_list_syncable.rb +64 -0
  54. data/lib/admin_module/pages/snapshot_definitions_page.rb +73 -0
  55. data/lib/admin_module/pages/snapshot_detail_page.rb +246 -0
  56. data/lib/admin_module/pages/workflow_detail_page.rb +451 -0
  57. data/lib/admin_module/pages/workflow_detail_task_addl_detail_page.rb +172 -0
  58. data/lib/admin_module/pages/workflow_detail_task_mappings_page.rb +163 -0
  59. data/lib/admin_module/pages/workflow_detail_task_screens_page.rb +75 -0
  60. data/lib/admin_module/pages/workflow_details_page.rb +67 -0
  61. data/lib/admin_module/pages/workflow_task_page.rb +107 -0
  62. data/lib/admin_module/pages/workflow_tasks_page.rb +111 -0
  63. data/lib/admin_module/ppms.rb +78 -0
  64. data/lib/admin_module/rake.rb +22 -0
  65. data/lib/admin_module/rake/dc_tasks.rb +185 -0
  66. data/lib/admin_module/rake/deploy_task.rb +59 -0
  67. data/lib/admin_module/rake/gdl_tasks.rb +189 -0
  68. data/lib/admin_module/rake/lock_tasks.rb +189 -0
  69. data/lib/admin_module/rake/parameter_task.rb +86 -0
  70. data/lib/admin_module/rake/ppm_tasks.rb +248 -0
  71. data/lib/admin_module/rake/rule_tasks.rb +157 -0
  72. data/lib/admin_module/rake/snapshot_tasks.rb +223 -0
  73. data/lib/admin_module/rake/stage_tasks.rb +197 -0
  74. data/lib/admin_module/rake/stages_task.rb +197 -0
  75. data/lib/admin_module/rake/task_tasks.rb +189 -0
  76. data/lib/admin_module/rules.rb +50 -0
  77. data/lib/admin_module/rulesets.rb +42 -0
  78. data/lib/admin_module/snapshots.rb +133 -0
  79. data/lib/admin_module/stages.rb +171 -0
  80. data/lib/admin_module/tasks.rb +147 -0
  81. data/lib/admin_module/version.rb +3 -0
  82. data/old_spec/lib/admin_module/cli_configuration_spec.rb +126 -0
  83. data/old_spec/lib/admin_module/cli_create_stage_spec.rb +89 -0
  84. data/old_spec/lib/admin_module/cli_delete_rule_spec.rb +57 -0
  85. data/old_spec/lib/admin_module/cli_deploy_spec.rb +57 -0
  86. data/old_spec/lib/admin_module/cli_export_locks_spec.rb +62 -0
  87. data/old_spec/lib/admin_module/cli_export_stages_spec.rb +62 -0
  88. data/old_spec/lib/admin_module/cli_guidelines_version_all_spec.rb +58 -0
  89. data/old_spec/lib/admin_module/cli_import_locks_spec.rb +153 -0
  90. data/old_spec/lib/admin_module/cli_import_stages_spec.rb +173 -0
  91. data/old_spec/lib/admin_module/cli_modify_locks_spec.rb +128 -0
  92. data/old_spec/lib/admin_module/cli_modify_stages_spec.rb +88 -0
  93. data/old_spec/lib/admin_module/cli_rename_rule_spec.rb +53 -0
  94. data/old_spec/lib/admin_module/cli_rename_ruleset_spec.rb +53 -0
  95. data/old_spec/lib/admin_module/cli_var_spec.rb +41 -0
  96. data/old_spec/lib/admin_module/rake/deploy_task_spec.rb +85 -0
  97. data/old_spec/lib/admin_module/rake/parameter_task_spec.rb +58 -0
  98. data/old_spec/lib/admin_module/rake/rules_task_spec.rb +75 -0
  99. data/spec/data/build/test1.xml +0 -0
  100. data/spec/data/build/test2.xml +1 -0
  101. data/spec/data/import_dcs.yml +31 -0
  102. data/spec/data/import_locks.yml +4 -0
  103. data/spec/data/import_snapshots.yml +35 -0
  104. data/spec/data/import_stages.yml +4 -0
  105. data/spec/data/import_tasks.yml +25 -0
  106. data/spec/data/patch-test.xml +1 -0
  107. data/spec/data/remove_test_del_rule.xml +1 -0
  108. data/spec/data/stages.yml +518 -0
  109. data/spec/data/test_del_rule.xml +1 -0
  110. data/spec/lib/admin_module/admin_module_spec.rb +175 -0
  111. data/spec/lib/admin_module/cli_spec.rb +36 -0
  112. data/spec/lib/admin_module/client_spec.rb +158 -0
  113. data/spec/lib/admin_module/command/config_spec.rb +477 -0
  114. data/spec/lib/admin_module/command/dc_spec.rb +202 -0
  115. data/spec/lib/admin_module/command/gdl_spec.rb +139 -0
  116. data/spec/lib/admin_module/command/lock_spec.rb +207 -0
  117. data/spec/lib/admin_module/command/rule_spec.rb +163 -0
  118. data/spec/lib/admin_module/command/ruleset_spec.rb +124 -0
  119. data/spec/lib/admin_module/command/snapshot_spec.rb +202 -0
  120. data/spec/lib/admin_module/command/stage_spec.rb +259 -0
  121. data/spec/lib/admin_module/command/task_spec.rb +207 -0
  122. data/spec/lib/admin_module/dc_spec.rb +192 -0
  123. data/spec/lib/admin_module/guideline_spec.rb +177 -0
  124. data/spec/lib/admin_module/locks_spec.rb +188 -0
  125. data/spec/lib/admin_module/rules_spec.rb +110 -0
  126. data/spec/lib/admin_module/rulesets_spec.rb +85 -0
  127. data/spec/lib/admin_module/snapshot_spec.rb +192 -0
  128. data/spec/lib/admin_module/stages_spec.rb +179 -0
  129. data/spec/lib/admin_module/tasks_spec.rb +196 -0
  130. data/spec/spec_helper.rb +54 -0
  131. data/spec/support/asserts.rb +13 -0
  132. data/spec/support/data_clearing.rb +28 -0
  133. data/spec/support/dirs.rb +54 -0
  134. data/spec/support/helpers.rb +83 -0
  135. data/spec/support/lock.rb +23 -0
  136. data/spec/support/mocks.rb +213 -0
  137. data/spec/support/snapshot.rb +28 -0
  138. data/spec/support/stage.rb +22 -0
  139. data/spec/support/stage_factory.rb +138 -0
  140. data/spec/support/task.rb +23 -0
  141. metadata +381 -0
@@ -0,0 +1,187 @@
1
+ ##############################################################################
2
+ # File:: dc_detail_page.rb
3
+ # Purpose:: DataClearing definition edit page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2015-04-02
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+
12
+ class DcDetailPage
13
+ include PageObject
14
+
15
+ #page_url(:get_dynamic_url)
16
+
17
+ #def get_dynamic_url
18
+ # AdminModule.configuration.url(DcDetailPage)
19
+ #end
20
+
21
+ text_field(:name,
22
+ id: 'ctl00_cntPlh_txtName')
23
+
24
+ text_area(:description,
25
+ id: 'ctl00_cntPlh_txtDesc')
26
+
27
+ select_list(:decision_data,
28
+ id: 'ctl00_cntPlh_ddlDecision')
29
+
30
+ select_list(:conditions,
31
+ id: 'ctl00_cntPlh_ddlCondition')
32
+
33
+ select_list(:incomes,
34
+ id: 'ctl00_cntPlh_ddlIncome')
35
+
36
+ select_list(:assets,
37
+ id: 'ctl00_cntPlh_ddlAsset')
38
+
39
+ select_list(:expenses,
40
+ id: 'ctl00_cntPlh_ddlExpense')
41
+
42
+ select_list(:hud1_fields,
43
+ id: 'ctl00_cntPlh_ddlHUD1')
44
+
45
+ select_list(:payment_schedule,
46
+ id: 'ctl00_cntPlh_ddlPSchedule')
47
+
48
+
49
+ # DTS/UDF Tab
50
+ #
51
+
52
+ link(:dts_tab,
53
+ text: 'DTS/UDF')
54
+
55
+ select_list(:dts_available,
56
+ id: 'ctl00_cntPlh_tsSnapshotDTS_lstAvailable')
57
+
58
+ select_list(:dts_selected,
59
+ id: 'ctl00_cntPlh_tsSnapshotDTS_lstSelected')
60
+
61
+ button(:add_dts_button,
62
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnAdd')
63
+
64
+ button(:add_all_dts_button,
65
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnAddAll')
66
+
67
+ button(:remove_dts_button,
68
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnRemove')
69
+
70
+ button(:remove_all_dts_button,
71
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnRemoveAll')
72
+
73
+
74
+ button(:save_button,
75
+ id: 'ctl00_cntPlh_btnSave')
76
+
77
+ button(:cancel_button,
78
+ id: 'ctl00_cntPlh_btnCancel')
79
+
80
+ def get_definition_data
81
+ data = { name: self.name,
82
+ description: self.description,
83
+ delete_options: {
84
+ :decision_data => false,
85
+ :conditions_with_images => false,
86
+ :incomes => false,
87
+ :assets => false,
88
+ :expenses => false,
89
+ :hud1_fields => false,
90
+ :payment_schedule => false,
91
+ }
92
+ }
93
+
94
+ data[:delete_options][:decision_data] = true if self.decision_data == "Yes"
95
+ data[:delete_options][:conditions_with_images] = true if self.conditions == "Yes"
96
+ data[:delete_options][:incomes] = true if self.incomes == "Yes"
97
+ data[:delete_options][:assets] = true if self.assets == "Yes"
98
+ data[:delete_options][:expenses] = true if self.expenses == "Yes"
99
+ data[:delete_options][:hud1_fields] = true if self.hud1_fields == "Yes"
100
+ data[:delete_options][:payment_schedule] = true if self.payment_schedule == "Yes"
101
+
102
+ self.dts_tab
103
+ data[:dts] = get_selected_dts_options
104
+
105
+ data
106
+ end
107
+
108
+ def set_definition_data data
109
+ self.name = data[:name]
110
+ self.description = data[:description]
111
+
112
+ opts = data[:delete_options]
113
+ set_delete_option decision_data_element, opts[:decision_data]
114
+ set_delete_option conditions_element, opts[:conditions_with_images]
115
+ set_delete_option incomes_element, opts[:incomes]
116
+ set_delete_option assets_element, opts[:assets]
117
+ set_delete_option expenses_element, opts[:expenses]
118
+ set_delete_option hud1_fields_element, opts[:hud1_fields]
119
+ set_delete_option payment_schedule_element, opts[:payment_schedule]
120
+
121
+ self.dts_tab
122
+
123
+ set_dts_fields data[:dts]
124
+
125
+ self
126
+ end
127
+
128
+ def save
129
+ self.save_button
130
+ end
131
+
132
+ def set_name name
133
+ self.name = name
134
+
135
+ self
136
+ end
137
+
138
+ private
139
+
140
+ include SelectListSyncable
141
+
142
+ def get_available_dts_options
143
+ vars = []
144
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsSnapshotDTS_lstAvailable > option').each do |elem|
145
+ vars << elem.text
146
+ end
147
+ vars
148
+ end
149
+
150
+ def get_selected_dts_options
151
+ vars = []
152
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsSnapshotDTS_lstSelected > option').each do |elem|
153
+ vars << elem.text
154
+ end
155
+ vars
156
+ end
157
+
158
+ def set_dts_fields data
159
+ sync_available_and_selected_lists get_available_dts_options,
160
+ dts_available_element,
161
+ get_selected_dts_options,
162
+ dts_selected_element,
163
+ add_dts_button_element,
164
+ remove_dts_button_element,
165
+ data
166
+ end
167
+
168
+ def assert_all_dts_fields_removed
169
+ raise "Unable to remove DTS fields" unless self.dts_selected_options.count == 0
170
+ end
171
+
172
+ def set_delete_option elem, value, name = ''
173
+ if !elem.visible?
174
+ $stdout << "The #{name} is not available for this definition." unless name.nil? || name.empty?
175
+ return
176
+ end
177
+
178
+ if value == true
179
+ elem.select('Yes')
180
+ else
181
+ elem.select('No')
182
+ end
183
+ end
184
+ end
185
+
186
+ end # module Pages
187
+
@@ -0,0 +1,35 @@
1
+ ##############################################################################
2
+ # File:: guideline_page.rb
3
+ # Purpose:: Guideline page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 11/15/2013
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+ class GuidelinePage
12
+ include PageObject
13
+
14
+ #page_url(:get_dynamic_url)
15
+
16
+ def get_dynamic_url
17
+ AdminModule.configuration.base_url + "/admin/decision/guideline.aspx"
18
+ end
19
+
20
+ link(:versions,
21
+ text: 'Versions')
22
+
23
+ button(:add_version_button,
24
+ id: 'cmdAddVersion')
25
+
26
+ def add_version
27
+ self.versions
28
+ self.add_version_button
29
+
30
+ # Return the next page object.
31
+ GuidelineVersionPage.new(@browser, false)
32
+ end
33
+ end
34
+ end # module Pages
35
+
@@ -0,0 +1,140 @@
1
+ ##############################################################################
2
+ # File:: guideline_version_page.rb
3
+ # Purpose:: Guideline Versioning page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 11/15/2013
6
+ # Copyright:: Copyright (c) 2013, kTech Systems LLC. All rights reserved.
7
+ # Website:: http://ktechsystems.com
8
+ ##############################################################################
9
+ require 'page-object'
10
+
11
+ module AdminModule::Pages
12
+
13
+ class GuidelineVersionPage
14
+ include PageObject
15
+
16
+ attr_reader :errors
17
+
18
+ #page_url(:get_dynamic_url)
19
+
20
+ def get_dynamic_url
21
+ AdminModule.configuration.url(GuidelineVersionPage)
22
+ end
23
+
24
+ file_field(:file_input,
25
+ id: 'ctl00_cntPlh_inputUpload')
26
+
27
+ text_area(:version_notes,
28
+ id: 'ctl00_cntPlh_txtVersionNotes')
29
+
30
+ button(:save,
31
+ id: 'ctl00_cntPlh_cmdSave')
32
+
33
+ div(:version_errors,
34
+ id: 'ctl00_cntPlh_ctlErrors_vsmErrors')
35
+
36
+ div(:add_version_page_errors,
37
+ id: 'vsmErrors')
38
+
39
+ table(:versions_table,
40
+ id: 'dgrVersions')
41
+
42
+ def errors
43
+ @errors ||= []
44
+ end
45
+
46
+ def upload(source_file, comments = nil)
47
+ # The file field (visible as a button) has a negative margin.
48
+ # We can't do anything with it (it's not 'visible') as it is,
49
+ # so we'll use JS to set the left margin to 0.
50
+ reposition_file_input
51
+
52
+ # Set the file to upload.
53
+ #file_input_element.set(source_file) # The watir way...
54
+ self.file_input = source_file
55
+
56
+ if comments.nil?
57
+ comments = "auto upload"
58
+ end
59
+ self.version_notes = comments
60
+
61
+ reset_errors
62
+
63
+ self.save
64
+
65
+ capture_errors
66
+ verify_latest_version comments
67
+
68
+ # Return the url of the version guideline page.
69
+ self
70
+
71
+ rescue Timeout::Error => e
72
+ add_error 'Timeout occurred. Try adjusting the browser_timeout configuration option.'
73
+
74
+ rescue Exception => e
75
+ add_error e.message
76
+
77
+ ensure
78
+ raise_if_errors
79
+ end
80
+
81
+ def reposition_file_input
82
+ repos_script = <<EOS
83
+ document.getElementsByTagName('input');
84
+ p = document.getElementsByName('ctl00$cntPlh$inputUpload');
85
+ if (p != null)
86
+ {
87
+ p[0].style.marginLeft='0';
88
+ }
89
+ EOS
90
+
91
+ @browser.execute_script(repos_script)
92
+ end
93
+
94
+ def reset_errors
95
+ errors = []
96
+ end
97
+
98
+ def has_errors?
99
+ errors.size > 0
100
+ end
101
+
102
+ def add_error err_msg
103
+ errors << err_msg
104
+ end
105
+
106
+ def capture_errors
107
+ add_error(version_errors) unless (!version_errors? || version_errors.empty?)
108
+ add_error(add_version_page_errors) unless (!add_version_page_errors? || add_version_page_errors.empty?)
109
+ end
110
+
111
+ def raise_if_errors
112
+ if has_errors?
113
+ error = ''
114
+ errors.each { |err| error << err + "\n" }
115
+ raise error
116
+ end
117
+ end
118
+
119
+ def verify_latest_version comments
120
+ if !versions_table?
121
+ add_error("Version upload not completed. Did a timeout occur?") unless has_errors?
122
+ return
123
+ end
124
+
125
+ doc = Nokogiri::HTML(@browser.html)
126
+ # The specific version notes TD element:
127
+ #version_notes_row_1 = doc.css("#dgrVersions > tbody > tr:nth-child(2) > td:nth-child(13)")
128
+
129
+ # The entire 1st version row (TR) element:
130
+ version_row = doc.css("#dgrVersions > tbody > tr:nth-child(2)")
131
+
132
+ # We have to account for HTML encodings when comparing comments.
133
+ unless version_row.to_s.include?(CGI.escapeHTML(comments))
134
+ add_error("Version upload not completed. Comment not found.")
135
+ end
136
+ end
137
+ end # class GuidelineVersionPage
138
+
139
+ end # module Pages
140
+
@@ -0,0 +1,59 @@
1
+ ##############################################################################
2
+ # File:: guidelines_page.rb
3
+ # Purpose:: Guidelines page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 11/15/2013
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+
12
+ class GuidelinesPage
13
+ include PageObject
14
+
15
+ page_url(:get_dynamic_url)
16
+
17
+ def get_dynamic_url
18
+ AdminModule.configuration.base_url + "/admin/decision/guidelines.aspx"
19
+ end
20
+
21
+ select_list(:guidelines,
22
+ id: 'ctl00_cntPlh_ctlGuidelines_lstItems')
23
+
24
+ button(:modify,
25
+ id: 'ctl00_cntPlh_ctlGuidelines_btnModify')
26
+
27
+ button(:version_all_button,
28
+ text: 'Version All')
29
+
30
+ def get_guidelines
31
+ gdl_list = []
32
+ Nokogiri::HTML(@browser.html).css("select#ctl00_cntPlh_ctlGuidelines_lstItems>option").each do |elem|
33
+ gdl_list << elem.text
34
+ end
35
+
36
+ gdl_list
37
+ end
38
+
39
+ def open_guideline(gdl_name)
40
+ #guidelines_options # List of option text
41
+ guidelines_element.select gdl_name
42
+ self.modify
43
+
44
+ # Return the next page object.
45
+ GuidelinePage.new(@browser, false)
46
+ end
47
+
48
+ def version_all
49
+ version_all_button
50
+
51
+ # Return the next page object.
52
+ GuidelinesVersionAllPage.new(@browser, false)
53
+ end
54
+
55
+
56
+ end
57
+
58
+ end # module Pages
59
+
@@ -0,0 +1,116 @@
1
+ ##############################################################################
2
+ # File:: guidelines_version_all_page.rb
3
+ # Purpose:: Guidelines Version All page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2014-03-17
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+
12
+ class GuidelinesVersionAllPage
13
+ include PageObject
14
+
15
+ attr_reader :errors
16
+
17
+ #page_url(:get_dynamic_url)
18
+
19
+ def get_dynamic_url
20
+ AdminModule.configuration.base_url + "/admin/decision/versionAllGuideline.aspx"
21
+ end
22
+
23
+ select_list(:guidelines_available,
24
+ id: 'ctl00_cntPlh_tsGuidelines_lstAvailable' )
25
+
26
+ select_list(:guidelines_selected,
27
+ id: 'ctl00_cntPlh_tsGuidelines_lstSelected' )
28
+
29
+ button(:add_guideline_button,
30
+ id: 'ctl00_cntPlh_tsGuidelines_btnAdd' )
31
+
32
+ text_area(:version_notes,
33
+ id: 'ctl00_cntPlh_txtVersionAllNotes')
34
+
35
+ button(:save_button,
36
+ id: 'ctl00_cntPlh_cmdSave')
37
+
38
+ button(:cancel_button,
39
+ id: 'ctl00_cntPlh_cmdCancel')
40
+
41
+ div(:version_errors,
42
+ id: 'ctl00_cntPlh_ctlErrors_vsmErrors')
43
+
44
+ def errors
45
+ @errors ||= []
46
+ end
47
+
48
+ def get_guidelines
49
+ gdl_list = []
50
+ Nokogiri::HTML(@browser.html).css("select#ctl00_cntPlh_tsGuidelines_lstAvailable>option").each do |elem|
51
+ gdl_list << elem.text
52
+ end
53
+
54
+ gdl_list
55
+ end
56
+
57
+ def version(gdl_names, comments = nil)
58
+ gdl_names = Array(gdl_names)
59
+
60
+ if comments.nil?
61
+ comments = "auto version"
62
+ end
63
+ self.version_notes = comments
64
+
65
+ reset_errors
66
+
67
+ # Add guidelines to be versioned to the selected area.
68
+ gdl_names.each do |gdl|
69
+ guidelines_available_element.select(gdl)
70
+ self.add_guideline_button
71
+ end
72
+
73
+ self.save_button
74
+
75
+ capture_errors
76
+
77
+ # Return the url of the version guideline page.
78
+ current_url
79
+
80
+ rescue Timeout::Error => e
81
+ add_error 'Timeout occurred. Try adjusting the browser_timeout configuration option.'
82
+
83
+ rescue Exception => e
84
+ add_error e.message
85
+
86
+ ensure
87
+ raise_if_errors
88
+ end
89
+
90
+ def reset_errors
91
+ errors = []
92
+ end
93
+
94
+ def has_errors?
95
+ errors.size > 0
96
+ end
97
+
98
+ def add_error err_msg
99
+ errors << err_msg
100
+ end
101
+
102
+ def capture_errors
103
+ add_error(version_errors) unless (!version_errors? || version_errors.empty?)
104
+ end
105
+
106
+ def raise_if_errors
107
+ if has_errors?
108
+ error = ''
109
+ errors.each { |err| error << err + "\n" }
110
+ raise error
111
+ end
112
+ end
113
+ end # class GuidelinesVersionAllPage
114
+
115
+ end # module Pages
116
+