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.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.rspec +3 -0
- data/Gemfile +14 -0
- data/Guardfile +24 -0
- data/LICENSE +22 -0
- data/README.md +281 -0
- data/Rakefile +98 -0
- data/admin_module.gemspec +34 -0
- data/bin/admin_module +13 -0
- data/lib/admin_module.rb +260 -0
- data/lib/admin_module/cli.rb +54 -0
- data/lib/admin_module/cli/cli_guideline.rb +80 -0
- data/lib/admin_module/cli/cli_lock.rb +149 -0
- data/lib/admin_module/cli/cli_parameter.rb +66 -0
- data/lib/admin_module/cli/cli_task.rb +149 -0
- data/lib/admin_module/cli_old.rb +92 -0
- data/lib/admin_module/client.rb +146 -0
- data/lib/admin_module/command.rb +25 -0
- data/lib/admin_module/command/client_access.rb +43 -0
- data/lib/admin_module/command/config.rb +310 -0
- data/lib/admin_module/command/dc.rb +110 -0
- data/lib/admin_module/command/gdl.rb +71 -0
- data/lib/admin_module/command/lock.rb +110 -0
- data/lib/admin_module/command/ppm.rb +142 -0
- data/lib/admin_module/command/rule.rb +77 -0
- data/lib/admin_module/command/ruleset.rb +56 -0
- data/lib/admin_module/command/snapshot.rb +110 -0
- data/lib/admin_module/command/stage.rb +131 -0
- data/lib/admin_module/command/task.rb +110 -0
- data/lib/admin_module/config_helper.rb +33 -0
- data/lib/admin_module/dc.rb +133 -0
- data/lib/admin_module/guideline.rb +86 -0
- data/lib/admin_module/locks.rb +142 -0
- data/lib/admin_module/page_factory.rb +55 -0
- data/lib/admin_module/pages.rb +120 -0
- data/lib/admin_module/pages/dc_definitions_page.rb +73 -0
- data/lib/admin_module/pages/dc_detail_page.rb +187 -0
- data/lib/admin_module/pages/guideline_page.rb +35 -0
- data/lib/admin_module/pages/guideline_version_page.rb +140 -0
- data/lib/admin_module/pages/guidelines_page.rb +59 -0
- data/lib/admin_module/pages/guidelines_version_all_page.rb +116 -0
- data/lib/admin_module/pages/lock_definition_page.rb +178 -0
- data/lib/admin_module/pages/lock_definitions_page.rb +69 -0
- data/lib/admin_module/pages/login_page.rb +75 -0
- data/lib/admin_module/pages/parameter_page.rb +62 -0
- data/lib/admin_module/pages/parameters_page.rb +46 -0
- data/lib/admin_module/pages/ppms_page.rb +110 -0
- data/lib/admin_module/pages/rule_page.rb +68 -0
- data/lib/admin_module/pages/rules_page.rb +74 -0
- data/lib/admin_module/pages/ruleset_page.rb +64 -0
- data/lib/admin_module/pages/rulesets_page.rb +60 -0
- data/lib/admin_module/pages/select_list_syncable.rb +64 -0
- data/lib/admin_module/pages/snapshot_definitions_page.rb +73 -0
- data/lib/admin_module/pages/snapshot_detail_page.rb +246 -0
- data/lib/admin_module/pages/workflow_detail_page.rb +451 -0
- data/lib/admin_module/pages/workflow_detail_task_addl_detail_page.rb +172 -0
- data/lib/admin_module/pages/workflow_detail_task_mappings_page.rb +163 -0
- data/lib/admin_module/pages/workflow_detail_task_screens_page.rb +75 -0
- data/lib/admin_module/pages/workflow_details_page.rb +67 -0
- data/lib/admin_module/pages/workflow_task_page.rb +107 -0
- data/lib/admin_module/pages/workflow_tasks_page.rb +111 -0
- data/lib/admin_module/ppms.rb +78 -0
- data/lib/admin_module/rake.rb +22 -0
- data/lib/admin_module/rake/dc_tasks.rb +185 -0
- data/lib/admin_module/rake/deploy_task.rb +59 -0
- data/lib/admin_module/rake/gdl_tasks.rb +189 -0
- data/lib/admin_module/rake/lock_tasks.rb +189 -0
- data/lib/admin_module/rake/parameter_task.rb +86 -0
- data/lib/admin_module/rake/ppm_tasks.rb +248 -0
- data/lib/admin_module/rake/rule_tasks.rb +157 -0
- data/lib/admin_module/rake/snapshot_tasks.rb +223 -0
- data/lib/admin_module/rake/stage_tasks.rb +197 -0
- data/lib/admin_module/rake/stages_task.rb +197 -0
- data/lib/admin_module/rake/task_tasks.rb +189 -0
- data/lib/admin_module/rules.rb +50 -0
- data/lib/admin_module/rulesets.rb +42 -0
- data/lib/admin_module/snapshots.rb +133 -0
- data/lib/admin_module/stages.rb +171 -0
- data/lib/admin_module/tasks.rb +147 -0
- data/lib/admin_module/version.rb +3 -0
- data/old_spec/lib/admin_module/cli_configuration_spec.rb +126 -0
- data/old_spec/lib/admin_module/cli_create_stage_spec.rb +89 -0
- data/old_spec/lib/admin_module/cli_delete_rule_spec.rb +57 -0
- data/old_spec/lib/admin_module/cli_deploy_spec.rb +57 -0
- data/old_spec/lib/admin_module/cli_export_locks_spec.rb +62 -0
- data/old_spec/lib/admin_module/cli_export_stages_spec.rb +62 -0
- data/old_spec/lib/admin_module/cli_guidelines_version_all_spec.rb +58 -0
- data/old_spec/lib/admin_module/cli_import_locks_spec.rb +153 -0
- data/old_spec/lib/admin_module/cli_import_stages_spec.rb +173 -0
- data/old_spec/lib/admin_module/cli_modify_locks_spec.rb +128 -0
- data/old_spec/lib/admin_module/cli_modify_stages_spec.rb +88 -0
- data/old_spec/lib/admin_module/cli_rename_rule_spec.rb +53 -0
- data/old_spec/lib/admin_module/cli_rename_ruleset_spec.rb +53 -0
- data/old_spec/lib/admin_module/cli_var_spec.rb +41 -0
- data/old_spec/lib/admin_module/rake/deploy_task_spec.rb +85 -0
- data/old_spec/lib/admin_module/rake/parameter_task_spec.rb +58 -0
- data/old_spec/lib/admin_module/rake/rules_task_spec.rb +75 -0
- data/spec/data/build/test1.xml +0 -0
- data/spec/data/build/test2.xml +1 -0
- data/spec/data/import_dcs.yml +31 -0
- data/spec/data/import_locks.yml +4 -0
- data/spec/data/import_snapshots.yml +35 -0
- data/spec/data/import_stages.yml +4 -0
- data/spec/data/import_tasks.yml +25 -0
- data/spec/data/patch-test.xml +1 -0
- data/spec/data/remove_test_del_rule.xml +1 -0
- data/spec/data/stages.yml +518 -0
- data/spec/data/test_del_rule.xml +1 -0
- data/spec/lib/admin_module/admin_module_spec.rb +175 -0
- data/spec/lib/admin_module/cli_spec.rb +36 -0
- data/spec/lib/admin_module/client_spec.rb +158 -0
- data/spec/lib/admin_module/command/config_spec.rb +477 -0
- data/spec/lib/admin_module/command/dc_spec.rb +202 -0
- data/spec/lib/admin_module/command/gdl_spec.rb +139 -0
- data/spec/lib/admin_module/command/lock_spec.rb +207 -0
- data/spec/lib/admin_module/command/rule_spec.rb +163 -0
- data/spec/lib/admin_module/command/ruleset_spec.rb +124 -0
- data/spec/lib/admin_module/command/snapshot_spec.rb +202 -0
- data/spec/lib/admin_module/command/stage_spec.rb +259 -0
- data/spec/lib/admin_module/command/task_spec.rb +207 -0
- data/spec/lib/admin_module/dc_spec.rb +192 -0
- data/spec/lib/admin_module/guideline_spec.rb +177 -0
- data/spec/lib/admin_module/locks_spec.rb +188 -0
- data/spec/lib/admin_module/rules_spec.rb +110 -0
- data/spec/lib/admin_module/rulesets_spec.rb +85 -0
- data/spec/lib/admin_module/snapshot_spec.rb +192 -0
- data/spec/lib/admin_module/stages_spec.rb +179 -0
- data/spec/lib/admin_module/tasks_spec.rb +196 -0
- data/spec/spec_helper.rb +54 -0
- data/spec/support/asserts.rb +13 -0
- data/spec/support/data_clearing.rb +28 -0
- data/spec/support/dirs.rb +54 -0
- data/spec/support/helpers.rb +83 -0
- data/spec/support/lock.rb +23 -0
- data/spec/support/mocks.rb +213 -0
- data/spec/support/snapshot.rb +28 -0
- data/spec/support/stage.rb +22 -0
- data/spec/support/stage_factory.rb +138 -0
- data/spec/support/task.rb +23 -0
- 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
|
+
|