admin_module 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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
+