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,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
+