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,178 @@
1
+ ##############################################################################
2
+ # File:: lock_definition.rb
3
+ # Purpose:: Lock edit page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2013-11-22
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+
12
+ class LockDefinitionPage
13
+ include PageObject
14
+
15
+ #page_url(:get_dynamic_url)
16
+
17
+ #def get_dynamic_url
18
+ # AdminModule.configuration.url(GuidelinePage)
19
+ #end
20
+
21
+ text_field(:name,
22
+ id: 'ctl00_cntPlh_txtName')
23
+
24
+ text_area(:description,
25
+ id: 'ctl00_cntPlh_txtDesc')
26
+
27
+ checkbox(:is_program_lock,
28
+ id: 'ctl00_cntPlh_chkViewType')
29
+
30
+ link(:parameters_tab,
31
+ text: 'Parameters')
32
+
33
+ select_list(:params_available,
34
+ id: 'ctl00_cntPlh_tsParams_lstAvailable')
35
+
36
+ select_list(:params_selected,
37
+ id: 'ctl00_cntPlh_tsParams_lstSelected')
38
+
39
+ button(:add_param_button,
40
+ id: 'ctl00_cntPlh_tsParams_btnAdd')
41
+
42
+ button(:add_all_params_button,
43
+ id: 'ctl00_cntPlh_tsParams_btnAddAll')
44
+
45
+ button(:remove_param_button,
46
+ id: 'ctl00_cntPlh_tsParams_btnRemove')
47
+
48
+ button(:remove_all_params_button,
49
+ id: 'ctl00_cntPlh_tsParams_btnRemoveAll')
50
+
51
+ link(:dts_tab,
52
+ text: 'DTS/UDF')
53
+
54
+ select_list(:dts_available,
55
+ id: 'ctl00_cntPlh_tsSnapshotDTS_lstAvailable')
56
+
57
+ select_list(:dts_selected,
58
+ id: 'ctl00_cntPlh_tsSnapshotDTS_lstSelected')
59
+
60
+ button(:add_dts_button,
61
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnAdd')
62
+
63
+ button(:add_all_dts_button,
64
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnAddAll')
65
+
66
+ button(:remove_dts_button,
67
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnRemove')
68
+
69
+ button(:remove_all_dts_button,
70
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnRemoveAll')
71
+
72
+
73
+ button(:save_button,
74
+ id: 'ctl00_cntPlh_btnSave')
75
+
76
+ button(:cancel_button,
77
+ id: 'ctl00_cntPlh_btnCancel')
78
+
79
+ def get_lock_data
80
+ lock_data = { name: self.name,
81
+ description: self.description,
82
+ is_program_lock: self.is_program_lock_checked? }
83
+
84
+ self.parameters_tab
85
+ lock_data[:parameters] = get_selected_parameter_options
86
+
87
+ self.dts_tab
88
+ lock_data[:dts] = get_selected_dts_options
89
+
90
+ lock_data
91
+ end
92
+
93
+ def set_lock_data lock_data
94
+ self.name = lock_data[:name]
95
+ self.description = lock_data[:description]
96
+ self.check_is_program_lock if lock_data[:is_program_lock] == true
97
+ self.uncheck_is_program_lock if lock_data[:is_program_lock] == false
98
+
99
+ self.parameters_tab
100
+ set_parameter_fields lock_data[:parameters]
101
+
102
+ self.dts_tab
103
+ set_dts_fields lock_data[:dts]
104
+
105
+ self
106
+ end
107
+
108
+ def save
109
+ self.save_button
110
+ end
111
+
112
+ private
113
+
114
+ include SelectListSyncable
115
+
116
+ def get_available_parameter_options
117
+ vars = []
118
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsParams_lstAvailable > option').each do |elem|
119
+ vars << elem.text
120
+ end
121
+ vars
122
+ end
123
+
124
+ def get_selected_parameter_options
125
+ vars = []
126
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsParams_lstSelected > option').each do |elem|
127
+ vars << elem.text
128
+ end
129
+ vars
130
+ end
131
+
132
+ def get_available_dts_options
133
+ vars = []
134
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsSnapshotDTS_lstAvailable > option').each do |elem|
135
+ vars << elem.text
136
+ end
137
+ vars
138
+ end
139
+
140
+ def get_selected_dts_options
141
+ vars = []
142
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsSnapshotDTS_lstSelected > option').each do |elem|
143
+ vars << elem.text
144
+ end
145
+ vars
146
+ end
147
+
148
+ def set_parameter_fields data
149
+ sync_available_and_selected_lists get_available_parameter_options,
150
+ params_available_element,
151
+ get_selected_parameter_options,
152
+ params_selected_element,
153
+ add_param_button_element,
154
+ remove_param_button_element,
155
+ data
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_params_removed
169
+ raise "Unable to remove parameters" unless get_selected_parameter_options.count == 0
170
+ end
171
+
172
+ def assert_all_dts_fields_removed
173
+ raise "Unable to remove DTS fields" unless get_selected_dts_options.count == 0
174
+ end
175
+ end
176
+
177
+ end # module Pages
178
+
@@ -0,0 +1,69 @@
1
+ ##############################################################################
2
+ # File:: lock_definitions_page.rb
3
+ # Purpose:: Lock Definitions page for AdminModule
4
+ #
5
+ # Note that the admin module has at least 3 pages that all reference
6
+ # the same url with the difference being the 'type' parameter.
7
+ #
8
+ # The Lock Defintions page has a type of 2 and account of 2:
9
+ #
10
+ # admin/security/ViewDefinitions.aspx?type=2&Act=2
11
+ #
12
+ # Author:: Jeff McAffee 2013-11-22
13
+ #
14
+ ##############################################################################
15
+ require 'page-object'
16
+
17
+ module AdminModule::Pages
18
+
19
+ class LockDefinitionsPage
20
+ include PageObject
21
+
22
+ page_url(:get_dynamic_url)
23
+
24
+ def get_dynamic_url
25
+ AdminModule.configuration.base_url + "/admin/security/ViewDefinitions.aspx?act=2&type=2"
26
+ end
27
+
28
+ select_list(:locks,
29
+ id: 'ctl00_cntPlh_elViews_lstItems')
30
+
31
+ button(:add_button,
32
+ id: 'ctl00_cntPlh_elViews_btnAdd')
33
+
34
+ button(:modify_button,
35
+ id: 'ctl00_cntPlh_elViews_btnModify')
36
+
37
+ def get_locks
38
+ lock_list = []
39
+ Nokogiri::HTML(@browser.html).css("select#ctl00_cntPlh_elViews_lstItems>option").each do |elem|
40
+ lock_list << elem.text
41
+ end
42
+
43
+ lock_list
44
+ end
45
+
46
+ def modify lock_name
47
+ #locks_options # List of option text
48
+ locks_element.select lock_name
49
+ self.modify_button
50
+
51
+ # Return the page object of the next page.
52
+ detail_page
53
+ end
54
+
55
+ def add
56
+ self.add_button
57
+
58
+ # Return the page object of the next page.
59
+ detail_page
60
+ end
61
+
62
+ private
63
+
64
+ def detail_page
65
+ LockDefinitionPage.new(@browser, false)
66
+ end
67
+ end # class
68
+ end # module Pages
69
+
@@ -0,0 +1,75 @@
1
+ ##############################################################################
2
+ # File:: login_page.rb
3
+ # Purpose:: Login page for Admin Module
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
+
10
+ require 'page-object'
11
+
12
+ module AdminModule::Pages
13
+
14
+ class LoginPage
15
+ include PageObject
16
+
17
+ page_url(:get_dynamic_url)
18
+
19
+ def get_dynamic_url
20
+ AdminModule.configuration.base_url
21
+ end
22
+
23
+ text_field(:username, :id => "ctl00_cntPlh_txtUserName" )
24
+ text_field(:password_mask, :id => "ctl00_cntPlh_txtPasswordMask" )
25
+ text_field(:password, :id => "ctl00_cntPlh_txtPassword" )
26
+ button(:login, :id => "ctl00_cntPlh_btnLogin" )
27
+
28
+ def login_as(username, password)
29
+ if !self.username? && current_url == AdminModule.configuration.base_url + '/AdminMain.aspx'
30
+ # We're still logged in.
31
+ return
32
+ end
33
+
34
+ raise ArgumentError.new("Missing username for login.\nHave you set the HSBC_envname_USER environment variable?") if username.nil?
35
+
36
+ raise ArgumentError.new("Missing password for login.\nHave you set the HSBC_envname_PASSWORD environment variable?") if password.nil?
37
+
38
+ unless current_url.downcase.include? get_dynamic_url.downcase
39
+ navigate_to get_dynamic_url
40
+ end
41
+
42
+ self.username = username
43
+
44
+ allow_password_entry
45
+
46
+ self.password = password
47
+ login
48
+ end
49
+
50
+ def logout
51
+ navigate_to get_dynamic_url + '/user/logout.aspx'
52
+ end
53
+
54
+ def allow_password_entry
55
+ # We used to have to click on the password mask before the page would let us enter the password itself:
56
+ #
57
+ # # For some unknown reason, we must click on a password mask input before
58
+ # # we can access the password field itself.
59
+ # password_mask_element.click
60
+ #
61
+ # Now, we have to use javascript to hide the mask and display the password field.
62
+ hide_mask_script = <<EOS
63
+ pwdmasks = document.getElementsByClassName('passwordmask');
64
+ pwdmasks[0].style.display = 'none';
65
+ pwds = document.getElementsByClassName('password');
66
+ pwds[0].style.display = 'block';
67
+ EOS
68
+
69
+ @browser.execute_script(hide_mask_script)
70
+ end
71
+
72
+ end
73
+
74
+ end # module Pages
75
+
@@ -0,0 +1,62 @@
1
+ ##############################################################################
2
+ # File:: parameter_page.rb
3
+ # Purpose:: Parameter page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2014-03-19
6
+ # Copyright:: Copyright (c) 2014, kTech Systems LLC. All rights reserved.
7
+ # Website:: http://ktechsystems.com
8
+ ##############################################################################
9
+ require 'page-object'
10
+ require 'nokogiri'
11
+
12
+ module AdminModule::Pages
13
+
14
+ class ParameterPage
15
+ include PageObject
16
+
17
+ #page_url(:get_dynamic_url)
18
+
19
+ def get_dynamic_url
20
+ AdminModule.configuration.url(ParameterPage)
21
+ end
22
+
23
+ text_field(:parameter_name,
24
+ id: 'ctl00_cntPlh_txtParamName')
25
+
26
+ select_list(:parameter_type,
27
+ id: 'ctl00_cntPlh_cboParameterType')
28
+
29
+ select_list(:decision_parameter,
30
+ id: 'ctl00_cntPlh_cboDecisionParameter')
31
+
32
+ text_field(:parameter_order,
33
+ id: 'ctl00_cntPlh_txtOrder')
34
+
35
+ select_list(:precision,
36
+ id: 'ctl00_cntPlh_ddlPrecision')
37
+
38
+ checkbox(:include_in_application_xml,
39
+ id: 'ctl00_cntPlh_chkIncludeInAppXML')
40
+
41
+ button(:save_button,
42
+ id: 'ctl00_cntPlh_btnSave')
43
+
44
+ button(:cancel_button,
45
+ id: 'ctl00_cntPlh_btnCancel')
46
+
47
+ def save
48
+ self.save_button
49
+ end
50
+
51
+ def cancel
52
+ self.cancel_button
53
+ end
54
+
55
+ def update_parameter(params)
56
+ require 'pry'; binding.pry
57
+
58
+ end
59
+ end # class ParameterPage
60
+
61
+ end # module Pages
62
+
@@ -0,0 +1,46 @@
1
+ ##############################################################################
2
+ # File:: parameters_page.rb
3
+ # Purpose:: Parameters page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2014-03-19
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+ require 'nokogiri'
10
+
11
+ module AdminModule::Pages
12
+
13
+ class ParametersPage
14
+ include PageObject
15
+
16
+ page_url(:get_dynamic_url)
17
+
18
+ def get_dynamic_url
19
+ AdminModule.configuration.url(ParametersPage)
20
+ end
21
+
22
+ select_list(:parameters,
23
+ id: 'ctl00_cntPlh_ctlParameters_lstItems')
24
+
25
+ button(:modify,
26
+ id: 'ctl00_cntPlh_ctlParameters_btnModify')
27
+
28
+ def edit_parameter(var_name)
29
+ parameters_element.select var_name
30
+ self.modify
31
+
32
+ # Return the url of the landing page.
33
+ current_url
34
+ end
35
+
36
+ def get_parameters
37
+ vars = []
38
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_ctlParameters_lstItems > option').each do |elem|
39
+ vars << elem.text
40
+ end
41
+ vars
42
+ end
43
+ end
44
+
45
+ end # module Pages
46
+
@@ -0,0 +1,110 @@
1
+ ##############################################################################
2
+ # File:: ppms_page.rb
3
+ # Purpose:: PPM configuration page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2015-06-23
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+
12
+ class PpmsPage
13
+ include PageObject
14
+
15
+ page_url(:get_dynamic_url)
16
+
17
+ def get_dynamic_url
18
+ AdminModule.configuration.base_url + "/admin/security/act/parameters.aspx?act=2"
19
+ end
20
+
21
+
22
+ select_list(:parameters_available,
23
+ id: 'ctl00_cntPlh_tsParameters_lstAvailable')
24
+
25
+ select_list(:parameters_selected,
26
+ id: 'ctl00_cntPlh_tsParameters_lstSelected')
27
+
28
+ button(:add_parameter_button,
29
+ id: 'ctl00_cntPlh_tsParameters_btnAdd')
30
+
31
+ button(:add_all_parameters_button,
32
+ id: 'ctl00_cntPlh_tsParameters_btnAddAll')
33
+
34
+ button(:remove_parameter_button,
35
+ id: 'ctl00_cntPlh_tsParameters_btnRemove')
36
+
37
+ button(:remove_all_parameters_button,
38
+ id: 'ctl00_cntPlh_tsParameters_btnRemoveAll')
39
+
40
+
41
+ button(:save_button,
42
+ id: 'ctl00_cntPlh_cmdSave')
43
+
44
+ button(:cancel_button,
45
+ id: 'ctl00_cntPlh_cmdCancel')
46
+
47
+ def get_ppms_with_ids
48
+ vars = []
49
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsParameters_lstSelected > option').each do |elem|
50
+ name = elem.text
51
+ id = elem.attributes['value'].value
52
+ vars << { name: name, id: id }
53
+ end
54
+
55
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsParameters_lstAvailable > option').each do |elem|
56
+ name = elem.text
57
+ id = elem.attributes['value'].value
58
+ vars << { name: name, id: id }
59
+ end
60
+
61
+ vars
62
+ end
63
+
64
+ def get_ppms_data
65
+ get_selected_ppm_options
66
+ end
67
+
68
+ def set_ppms_data data
69
+ sync_available_and_selected_lists get_available_ppm_options,
70
+ parameters_available_element,
71
+ get_selected_ppm_options,
72
+ parameters_selected_element,
73
+ add_parameter_button_element,
74
+ remove_parameter_button_element,
75
+ data
76
+
77
+ self
78
+ end
79
+
80
+ def save
81
+ self.save_button
82
+ end
83
+
84
+ private
85
+
86
+ include SelectListSyncable
87
+
88
+ def get_available_ppm_options
89
+ vars = []
90
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsParameters_lstAvailable > option').each do |elem|
91
+ vars << elem.text
92
+ end
93
+ vars
94
+ end
95
+
96
+ def get_selected_ppm_options
97
+ vars = []
98
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsParameters_lstSelected > option').each do |elem|
99
+ vars << elem.text
100
+ end
101
+ vars
102
+ end
103
+
104
+ def assert_all_fields_removed control, label
105
+ raise "Unable to remove #{label}" unless control.count == 0
106
+ end
107
+ end
108
+
109
+ end # module Pages
110
+