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,68 @@
1
+ ##############################################################################
2
+ # File:: rule_page.rb
3
+ # Purpose:: Rule 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 RulePage
13
+ include PageObject
14
+
15
+ #page_url(:get_dynamic_url)
16
+
17
+ def get_dynamic_url
18
+ AdminModule.configuration.base_url + "/admin/decision/rule.aspx"
19
+ end
20
+
21
+ text_field(:rule_name,
22
+ id: 'txtRuleName')
23
+
24
+ button(:save_button,
25
+ id: 'btnRuleSave')
26
+
27
+ button(:cancel_button,
28
+ id: 'btnRuleCancel')
29
+
30
+ def set_name new_name
31
+ clear_browser_alert
32
+
33
+ self.rule_name = new_name
34
+ # Return self as page object.
35
+ self
36
+ end
37
+
38
+ def save
39
+ clear_browser_alert
40
+
41
+ self.save_button
42
+
43
+ # Return the next page object.
44
+ RulesPage.new(@browser, false)
45
+ end
46
+
47
+ def cancel
48
+ clear_browser_alert
49
+
50
+ self.cancel_button
51
+
52
+ # Return the next page object.
53
+ RulesPage.new(@browser, false)
54
+ end
55
+
56
+ private
57
+
58
+ def clear_browser_alert
59
+ if @browser.alert.exists?
60
+ while @browser.alert.exists?
61
+ @browser.alert.ok
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ end # module Pages
68
+
@@ -0,0 +1,74 @@
1
+ ##############################################################################
2
+ # File:: rules_page.rb
3
+ # Purpose:: Rules page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2014-03-17
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+ require 'nokogiri'
10
+
11
+ module AdminModule::Pages
12
+
13
+ class RulesPage
14
+ include PageObject
15
+
16
+ page_url(:get_dynamic_url)
17
+
18
+ def get_dynamic_url
19
+ AdminModule.configuration.base_url + "/admin/decision/rules.aspx"
20
+ end
21
+
22
+ select_list(:rules,
23
+ id: 'ctl00_cntPlh_ctlRules_lstItems')
24
+
25
+ button(:modify,
26
+ id: 'ctl00_cntPlh_ctlRules_btnModify')
27
+
28
+ button(:delete,
29
+ id: 'ctl00_cntPlh_ctlRules_btnDelete')
30
+
31
+ def get_rules
32
+ rule_list = []
33
+ Nokogiri::HTML(@browser.html).css("select#ctl00_cntPlh_ctlRules_lstItems>option").each do |elem|
34
+ rule_list << elem.text
35
+ end
36
+
37
+ rule_list
38
+ end
39
+
40
+ def open_rule(rule_name)
41
+ #rules_options # List of option text
42
+ rules_element.select rule_name
43
+ self.modify
44
+
45
+ clear_browser_alert
46
+
47
+ # Return the page object of the next page.
48
+ RulePage.new(@browser, false)
49
+ end
50
+
51
+ def delete_rule(rule_name)
52
+ #rules_options # List of option text
53
+ rules_element.select rule_name
54
+ self.delete
55
+
56
+ clear_browser_alert
57
+
58
+ # Return the page object
59
+ self
60
+ end
61
+
62
+ private
63
+
64
+ def clear_browser_alert
65
+ if @browser.alert.exists?
66
+ while @browser.alert.exists?
67
+ @browser.alert.ok
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ end # module Pages
74
+
@@ -0,0 +1,64 @@
1
+ ##############################################################################
2
+ # File:: ruleset_page.rb
3
+ # Purpose:: Ruleset 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 RulesetPage
13
+ include PageObject
14
+
15
+ #page_url(:get_dynamic_url)
16
+
17
+ def get_dynamic_url
18
+ AdminModule.configuration.base_url + "/admin/decision/ruleset.aspx"
19
+ end
20
+
21
+ text_field(:ruleset_name,
22
+ id: 'ctl00_cntPlh_txtName')
23
+
24
+ button(:save_button,
25
+ id: 'ctl00_cntPlh_btnSave')
26
+
27
+ button(:cancel_button,
28
+ id: 'ctl00_cntPlh_btnCancel')
29
+
30
+ def set_name new_name
31
+ clear_browser_alert
32
+
33
+ self.ruleset_name = new_name
34
+
35
+ self
36
+ end
37
+
38
+ def save
39
+ clear_browser_alert
40
+
41
+ self.save_button
42
+ RulesetsPage.new(@browser, false)
43
+ end
44
+
45
+ def cancel
46
+ clear_browser_alert
47
+
48
+ self.cancel_button
49
+ RulesetsPage.new(@browser, false)
50
+ end
51
+
52
+ private
53
+
54
+ def clear_browser_alert
55
+ if @browser.alert.exists?
56
+ while @browser.alert.exists?
57
+ @browser.alert.ok
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ end # module Pages
64
+
@@ -0,0 +1,60 @@
1
+ ##############################################################################
2
+ # File:: rulesets_page.rb
3
+ # Purpose:: Rulesets page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2014-03-17
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+ require 'nokogiri'
10
+
11
+ module AdminModule::Pages
12
+
13
+ class RulesetsPage
14
+ include PageObject
15
+
16
+ page_url(:get_dynamic_url)
17
+
18
+ def get_dynamic_url
19
+ AdminModule.configuration.base_url + "/admin/decision/rulesets.aspx"
20
+ end
21
+
22
+ select_list(:rulesets,
23
+ id: 'ctl00_cntPlh_ctlRulesets_lstItems')
24
+
25
+ button(:modify,
26
+ id: 'ctl00_cntPlh_ctlRulesets_btnModify')
27
+
28
+ def get_rulesets
29
+ ruleset_list = []
30
+ Nokogiri::HTML(@browser.html).css("select#ctl00_cntPlh_ctlRulesets_lstItems>option").each do |elem|
31
+ ruleset_list << elem.text
32
+ end
33
+
34
+ ruleset_list
35
+ end
36
+
37
+ def open_ruleset(ruleset_name)
38
+ #rulesets_options # List of option text
39
+ rulesets_element.select ruleset_name
40
+ self.modify
41
+
42
+ clear_browser_alert
43
+
44
+ # Return the next page object
45
+ RulesetPage.new(@browser, false)
46
+ end
47
+
48
+ private
49
+
50
+ def clear_browser_alert
51
+ if @browser.alert.exists?
52
+ while @browser.alert.exists?
53
+ @browser.alert.ok
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ end # module Pages
60
+
@@ -0,0 +1,64 @@
1
+ ##############################################################################
2
+ # File:: select_list_syncable.rb
3
+ # Purpose:: Method to sync Available/Selected select lists
4
+ #
5
+ # Author:: Jeff McAffee 2015-06-27
6
+ #
7
+ ##############################################################################
8
+
9
+ module AdminModule::Pages
10
+
11
+ module SelectListSyncable
12
+
13
+ #
14
+ # Sync an array of items between available and selected lists such that after
15
+ # syncing, the selected list will contain only the items in the array.
16
+ #
17
+ # args:
18
+ # available_items - list of items currently in the 'available' select element
19
+ # available_element - the 'available' select element
20
+ # selected_items - list of items currently in the 'selected' select element
21
+ # selected_element - the 'selected' select element
22
+ # add_btn - the `Add` button element
23
+ # remove_btn - the `Remove` button element
24
+ # items_to_select - array of items to sync the select elements to
25
+ #
26
+
27
+ def sync_available_and_selected_lists available_items, available_element, selected_items, selected_element, add_btn, remove_btn, items_to_select
28
+ working_set = items_to_select.dup
29
+ items_to_remove = Array.new
30
+ items_to_add = Array.new
31
+
32
+ # Build a list of indices of items to remove from the selected list
33
+ selected_items.each_index do |i|
34
+ if working_set.include? selected_items[i]
35
+ working_set.delete selected_items[i]
36
+ else
37
+ items_to_remove << i
38
+ end
39
+ end
40
+
41
+ # Build a list of indices of items to add from the available list
42
+ available_items.each_index do |i|
43
+ if working_set.include? available_items[i]
44
+ items_to_add << i
45
+ working_set.delete available_items[i]
46
+ end
47
+ end
48
+
49
+ # Select and remove all params in the removal list
50
+ items_to_remove.each do |i|
51
+ selected_element.options[i].click
52
+ end
53
+ remove_btn.click if items_to_remove.count > 0
54
+
55
+ # Select and add all params in the add list
56
+ items_to_add.each do |i|
57
+ available_element.options[i].click
58
+ end
59
+ add_btn.click if items_to_add.count > 0
60
+ end
61
+ end
62
+
63
+ end # module Pages
64
+
@@ -0,0 +1,73 @@
1
+ ##############################################################################
2
+ # File:: snapshot_definitions_page.rb
3
+ # Purpose:: Snapshot Definitions page
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 Snapshot page has a type of 1:
9
+ #
10
+ # admin/security/ViewDefinitions.aspx?type=1
11
+ #
12
+ # Author:: Jeff McAffee 2015-04-05
13
+ #
14
+ ##############################################################################
15
+ require 'page-object'
16
+
17
+ module AdminModule
18
+ module Pages
19
+ class SnapshotDefinitionsPage
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?type=1&Act=2"
26
+ end
27
+
28
+ select_list(:definitions,
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
+ button(:delete_button,
38
+ id: 'ctl00_cntPlh_elViews_btnDelete')
39
+
40
+ def get_definitions
41
+ defn_list = []
42
+ Nokogiri::HTML(@browser.html).css("select#ctl00_cntPlh_elViews_lstItems>option").each do |elem|
43
+ defn_list << elem.text
44
+ end
45
+
46
+ defn_list
47
+ end
48
+
49
+ def modify name
50
+ definitions_element.select name
51
+ self.modify_button
52
+
53
+ # Return the page object of the next page.
54
+ detail_page
55
+ end
56
+
57
+ def add
58
+ self.add_button
59
+
60
+
61
+ # Return the page object of the next page.
62
+ detail_page
63
+ end
64
+
65
+ private
66
+
67
+ def detail_page
68
+ SnapshotDetailPage.new(@browser, false)
69
+ end
70
+ end
71
+ end
72
+ end
73
+
@@ -0,0 +1,246 @@
1
+ ##############################################################################
2
+ # File:: snapshot_detail_page.rb
3
+ # Purpose:: Snapshot definition edit page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2015-04-05
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+
12
+ class SnapshotDetailPage
13
+ include PageObject
14
+
15
+ #page_url(:get_dynamic_url)
16
+
17
+ #def get_dynamic_url
18
+ # AdminModule.configuration.url(SnapshotDetailPage)
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
+
31
+ # Parameters Tab
32
+ #
33
+
34
+ link(:parameters_tab,
35
+ text: 'Parameters')
36
+
37
+ select_list(:params_available,
38
+ id: 'ctl00_cntPlh_tsParams_lstAvailable')
39
+
40
+ select_list(:params_selected,
41
+ id: 'ctl00_cntPlh_tsParams_lstSelected')
42
+
43
+ button(:add_param_button,
44
+ id: 'ctl00_cntPlh_tsParams_btnAdd')
45
+
46
+ button(:add_all_params_button,
47
+ id: 'ctl00_cntPlh_tsParams_btnAddAll')
48
+
49
+ button(:remove_param_button,
50
+ id: 'ctl00_cntPlh_tsParams_btnRemove')
51
+
52
+ button(:remove_all_params_button,
53
+ id: 'ctl00_cntPlh_tsParams_btnRemoveAll')
54
+
55
+
56
+ # DTS/UDF Tab
57
+ #
58
+
59
+ link(:dts_tab,
60
+ text: 'DTS/UDF')
61
+
62
+ select_list(:dts_available,
63
+ id: 'ctl00_cntPlh_tsSnapshotDTS_lstAvailable')
64
+
65
+ select_list(:dts_selected,
66
+ id: 'ctl00_cntPlh_tsSnapshotDTS_lstSelected')
67
+
68
+ button(:add_dts_button,
69
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnAdd')
70
+
71
+ button(:add_all_dts_button,
72
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnAddAll')
73
+
74
+ button(:remove_dts_button,
75
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnRemove')
76
+
77
+ button(:remove_all_dts_button,
78
+ id: 'ctl00_cntPlh_tsSnapshotDTS_btnRemoveAll')
79
+
80
+
81
+ # Snapshot Control Fields Tab
82
+ #
83
+
84
+ link(:control_fields_tab,
85
+ text: 'Snapshot Control Fields')
86
+
87
+ select_list(:control_fields_available,
88
+ id: 'ctl00_cntPlh_tsSnapshotControls_lstAvailable')
89
+
90
+ select_list(:control_fields_selected,
91
+ id: 'ctl00_cntPlh_tsSnapshotControls_lstSelected')
92
+
93
+ button(:add_control_field_button,
94
+ id: 'ctl00_cntPlh_tsSnapshotControls_btnAdd')
95
+
96
+ button(:add_all_control_fields_button,
97
+ id: 'ctl00_cntPlh_tsSnapshotControls_btnAddAll')
98
+
99
+ button(:remove_control_field_button,
100
+ id: 'ctl00_cntPlh_tsSnapshotControls_btnRemove')
101
+
102
+ button(:remove_all_control_fields_button,
103
+ id: 'ctl00_cntPlh_tsSnapshotControls_btnRemoveAll')
104
+
105
+
106
+ button(:save_button,
107
+ id: 'ctl00_cntPlh_btnSave')
108
+
109
+ button(:cancel_button,
110
+ id: 'ctl00_cntPlh_btnCancel')
111
+
112
+ def get_definition_data
113
+ data = { name: self.name,
114
+ description: self.description,
115
+ parameters: [],
116
+ dts: [],
117
+ control_fields: [],
118
+ }
119
+
120
+ self.parameters_tab
121
+ data[:parameters] = get_selected_parameter_options
122
+
123
+ self.dts_tab
124
+ data[:dts] = get_selected_dts_options
125
+
126
+ self.control_fields_tab
127
+ data[:control_fields] = self.control_fields_selected_options
128
+
129
+ data
130
+ end
131
+
132
+ def set_definition_data data
133
+ self.name = data[:name]
134
+ self.description = data[:description]
135
+
136
+ self.parameters_tab
137
+ set_parameter_fields data[:parameters]
138
+
139
+ self.dts_tab
140
+ set_dts_fields data[:dts]
141
+
142
+ self.control_fields_tab
143
+ set_control_fields data[:control_fields]
144
+
145
+ self
146
+ end
147
+
148
+ def save
149
+ self.save_button
150
+ end
151
+
152
+ def set_name name
153
+ self.name = name
154
+
155
+ self
156
+ end
157
+
158
+ private
159
+
160
+ include SelectListSyncable
161
+
162
+ def get_available_parameter_options
163
+ vars = []
164
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsParams_lstAvailable > option').each do |elem|
165
+ vars << elem.text
166
+ end
167
+ vars
168
+ end
169
+
170
+ def get_selected_parameter_options
171
+ vars = []
172
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsParams_lstSelected > option').each do |elem|
173
+ vars << elem.text
174
+ end
175
+ vars
176
+ end
177
+
178
+ def get_available_dts_options
179
+ vars = []
180
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsSnapshotDTS_lstAvailable > option').each do |elem|
181
+ vars << elem.text
182
+ end
183
+ vars
184
+ end
185
+
186
+ def get_selected_dts_options
187
+ vars = []
188
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsSnapshotDTS_lstSelected > option').each do |elem|
189
+ vars << elem.text
190
+ end
191
+ vars
192
+ end
193
+
194
+ def get_available_control_field_options
195
+ vars = []
196
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsSnapshotControls_lstAvailable > option').each do |elem|
197
+ vars << elem.text
198
+ end
199
+ vars
200
+ end
201
+
202
+ def get_selected_control_field_options
203
+ vars = []
204
+ Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsSnapshotControls_lstSelected > option').each do |elem|
205
+ vars << elem.text
206
+ end
207
+ vars
208
+ end
209
+
210
+ def set_parameter_fields data
211
+ sync_available_and_selected_lists get_available_parameter_options,
212
+ params_available_element,
213
+ get_selected_parameter_options,
214
+ params_selected_element,
215
+ add_param_button_element,
216
+ remove_param_button_element,
217
+ data
218
+ end
219
+
220
+ def set_dts_fields data
221
+ sync_available_and_selected_lists get_available_dts_options,
222
+ dts_available_element,
223
+ get_selected_dts_options,
224
+ dts_selected_element,
225
+ add_dts_button_element,
226
+ remove_dts_button_element,
227
+ data
228
+ end
229
+
230
+ def set_control_fields data
231
+ sync_available_and_selected_lists get_available_control_field_options,
232
+ control_fields_available_element,
233
+ get_selected_control_field_options,
234
+ control_fields_selected_element,
235
+ add_control_field_button_element,
236
+ remove_control_field_button_element,
237
+ data
238
+ end
239
+
240
+ def assert_all_fields_removed control, label
241
+ raise "Unable to remove #{label} fields" unless control.count == 0
242
+ end
243
+ end
244
+
245
+ end # module Pages
246
+