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,163 @@
1
+ ##############################################################################
2
+ # File:: workflow_detail_task_mappings_page.rb
3
+ # Purpose:: Stage Task Screen Mappings page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2015-04-20
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+ require 'nokogiri'
10
+
11
+ module AdminModule::Pages
12
+
13
+ class WorkflowDetailTaskMappingsPage
14
+ include PageObject
15
+
16
+ #page_url(:get_dynamic_url)
17
+
18
+ # The only access is through the Tasks tab Manage Screen Mappings button
19
+
20
+ #def get_dynamic_url
21
+ # AdminModule.configuration.url(WorkflowDetailPage)
22
+ #end
23
+
24
+ # Controls
25
+
26
+ span(:error_span,
27
+ id: 'ctl00_cntPlh_ctlErrors_lblError')
28
+
29
+ # Details Tab
30
+
31
+ text_field( :name,
32
+ id: 'ctl00_cntPlh_txtStateName')
33
+
34
+ # Transition To States Tab
35
+
36
+ select_list(:available_states,
37
+ id: 'ctl00_cntPlh_tsStates_lstAvailable')
38
+
39
+ select_list(:selected_states,
40
+ id: 'ctl00_cntPlh_tsStates_lstSelected')
41
+
42
+ button(:add_state_button,
43
+ id: 'ctl00_cntPlh_tsStates_btnAdd')
44
+
45
+ button(:add_all_states_button,
46
+ id: 'ctl00_cntPlh_tsStates_btnAddAll')
47
+
48
+ button(:back_button,
49
+ id: 'ctl00_cntPlh_btnCancel')
50
+
51
+
52
+ def get_data
53
+ get_tasks_details
54
+ end
55
+
56
+ def set_data data
57
+ if !error_span? || !error_span.include?('No task defined')
58
+ set_tasks_details data
59
+ end
60
+
61
+ self
62
+ end
63
+
64
+ def back
65
+ self.back_button
66
+ end
67
+
68
+ private
69
+
70
+ def details_table
71
+ table_elements[0].table_elements[1]
72
+ end
73
+
74
+ def get_tasks_details
75
+ details = Hash.new
76
+
77
+ capture_details.each do |item|
78
+ details[item.name] = item.to_hsh
79
+ end
80
+
81
+ details
82
+ end
83
+
84
+ def set_screen_mappings btn_id, screens
85
+ btn = button_elements(id: btn_id)[0]
86
+ btn.click
87
+
88
+ WorkflowDetailTaskScreensPage.new(@browser, false)
89
+ .set_screens(screens)
90
+ .save
91
+
92
+ self
93
+ end
94
+
95
+ def set_tasks_details details
96
+ capture_details.each do |item|
97
+ details.each do |dtl|
98
+ if dtl[:name] == item.name
99
+ # We've found a match, see if the mapping screens value matches
100
+ if item.screens != dtl[:mapped_screens]
101
+ # Not a match, we need to change it so find the button
102
+ set_screen_mappings item.edit_button_id, dtl[:mapped_screens]
103
+ end
104
+
105
+ break
106
+ end
107
+ end
108
+ end
109
+
110
+ self
111
+ end
112
+
113
+ class TaskDetail
114
+ attr_accessor :sequence
115
+ attr_accessor :name
116
+ attr_accessor :mapped_screens
117
+ attr_accessor :edit_button_id
118
+
119
+ def to_hsh
120
+ {
121
+ sequence: @sequence,
122
+ name: @name,
123
+ mapped_screens: screens,
124
+ }
125
+ end
126
+
127
+ def screens
128
+ # Clean up the screens list by splitting into an array
129
+ screens = @mapped_screens.split(', ')
130
+ # and removing whitespace (specifically, non-breaking spaces)
131
+ screens.collect! { |scr| scr.gsub("\u00A0",'').strip }
132
+ end
133
+ end
134
+
135
+ ###
136
+ # Build a list of objects containing task detail data.
137
+ #
138
+ # We use this method even though we don't need to (for get_xxx) because we'll
139
+ # need the captured field ids for *setting* values.
140
+ #
141
+
142
+ def capture_details
143
+ details = []
144
+
145
+ Nokogiri::HTML(@browser.html).css("#ctl00_cntPlh_gvScreenMapping>tbody>tr").each do |tr|
146
+ # Skip the header row
147
+ next if tr['class'] == 'GridHeader'
148
+
149
+ detail = TaskDetail.new
150
+ detail.sequence = tr.css("td:nth-child(1)").text
151
+ detail.name = tr.css("td:nth-child(2)").text
152
+ detail.mapped_screens = tr.css("td:nth-child(3)").text
153
+ detail.edit_button_id = tr.css("td:nth-child(4)>input")[0]['id']
154
+
155
+ details << detail
156
+ end # css
157
+
158
+ details
159
+ end
160
+ end # class WorkflowDetailTaskMappingsPage
161
+
162
+ end # module Pages
163
+
@@ -0,0 +1,75 @@
1
+ ##############################################################################
2
+ # File:: workflow_detail_task_screens_page.rb
3
+ # Purpose:: Stage Task Screens detail page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2015-04-20
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+ require 'nokogiri'
10
+
11
+ module AdminModule::Pages
12
+
13
+ class WorkflowDetailTaskScreensPage
14
+ include PageObject
15
+
16
+ #page_url(:get_dynamic_url)
17
+
18
+ # The only access is through the Tasks tab Manage Screen Mappings button
19
+
20
+ #def get_dynamic_url
21
+ # AdminModule.configuration.url(WorkflowDetailTaskScreensPage)
22
+ #end
23
+
24
+ # Controls
25
+
26
+ select_list(:available_screens,
27
+ id: 'ctl00_cntPlh_tsTaskScreen_lstAvailable')
28
+
29
+ select_list(:selected_screens,
30
+ id: 'ctl00_cntPlh_tsTaskScreen_lstSelected')
31
+
32
+ button(:add_screen_button,
33
+ id: 'ctl00_cntPlh_tsTaskScreen_btnAdd')
34
+
35
+ button(:add_all_screens_button,
36
+ id: 'ctl00_cntPlh_tsTaskScreen_btnAddAll')
37
+
38
+ button(:remove_screen_button,
39
+ id: 'ctl00_cntPlh_tsTaskScreen_btnRemove')
40
+
41
+ button(:remove_all_screens_button,
42
+ id: 'ctl00_cntPlh_tsTaskScreen_btnRemoveAll')
43
+
44
+ # Save/Cancel buttons
45
+ button(:save_button,
46
+ id: 'ctl00_cntPlh_btnSave')
47
+
48
+ button(:cancel_button,
49
+ id: 'ctl00_cntPlh_btnCancel')
50
+
51
+
52
+ def set_screens data
53
+ # Remove all screens, then add back the requested sreens.
54
+ self.remove_all_screens_button
55
+ data.each do |t|
56
+ unless t.nil? or t.empty?
57
+ available_screens_element.select(t)
58
+ self.add_screen_button
59
+ end
60
+ end
61
+
62
+ self
63
+ end
64
+
65
+ def save
66
+ self.save_button
67
+ end
68
+
69
+ def cancel
70
+ self.cancel_button
71
+ end
72
+ end # class WorkflowDetailTaskScreensPage
73
+
74
+ end # module Pages
75
+
@@ -0,0 +1,67 @@
1
+ ##############################################################################
2
+ # File:: workflow_details_page.rb
3
+ # Purpose:: Guidelines page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2013-12-12
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+ class WorkflowDetailsPage
12
+ include PageObject
13
+
14
+ page_url(:get_dynamic_url)
15
+
16
+ def get_dynamic_url
17
+ AdminModule.configuration.base_url + "/admin/security/workflows.aspx"
18
+ end
19
+
20
+ select_list(:states,
21
+ id: 'ctl00_cntPlh_elStates_lstItems')
22
+
23
+ button(:add_button,
24
+ id: 'ctl00_cntPlh_elStates_btnAdd')
25
+
26
+ button(:modify_button,
27
+ id: 'ctl00_cntPlh_elStates_btnModify')
28
+
29
+ button(:delete_button,
30
+ id: 'ctl00_cntPlh_elStates_btnDelete')
31
+
32
+ def get_stages
33
+ stage_list = []
34
+ Nokogiri::HTML(@browser.html).css("select#ctl00_cntPlh_elStates_lstItems>option").each do |elem|
35
+ stage_list << elem.text
36
+ end
37
+
38
+ stage_list
39
+ end
40
+
41
+ def modify stage_name
42
+ states_element.select stage_name
43
+ self.modify_button
44
+
45
+ # Return the page object of the next page.
46
+ WorkflowDetailPage.new(@browser, false)
47
+ end
48
+
49
+ def delete stage_name
50
+ raise ArgumentError, "Missing stage name" if stage_name.nil? || stage_name.empty?
51
+ raise ArgumentError, "Stage name '#{name}' does not exist" if !states_options.include?(stage_name)
52
+
53
+ states_element.select stage_name
54
+ self.delete_button
55
+
56
+ self
57
+ end
58
+
59
+ def add
60
+ self.add_button
61
+
62
+ # Return the page object of the next page.
63
+ WorkflowDetailPage.new(@browser, false)
64
+ end
65
+ end # class
66
+ end # module
67
+
@@ -0,0 +1,107 @@
1
+ ##############################################################################
2
+ # File:: workflow_task_page.rb
3
+ # Purpose:: Task definition edit page for AdminModule
4
+ #
5
+ # Author:: Jeff McAffee 2015-04-19
6
+ #
7
+ ##############################################################################
8
+ require 'page-object'
9
+
10
+ module AdminModule::Pages
11
+
12
+ class WorkflowTaskPage
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_txtTaskName')
23
+
24
+ select_list(:schedule,
25
+ id: 'ctl00_cntPlh_ddlSchedule')
26
+
27
+ select_list(:priority,
28
+ id: 'ctl00_cntPlh_ddlPriority')
29
+
30
+ text_field(:due_days,
31
+ id: 'ctl00_cntPlh_txtDueDays')
32
+
33
+ select_list(:due_hours,
34
+ id: 'ctl00_cntPlh_ddlDueHours')
35
+
36
+ select_list(:due_minutes,
37
+ id: 'ctl00_cntPlh_ddlDueMinutes')
38
+
39
+ select_list(:followup,
40
+ id: 'ctl00_cntPlh_ddlFollowupOptions')
41
+
42
+ select_list(:assignedto,
43
+ id: 'ctl00_cntPlh_ddlScheduleFor')
44
+
45
+ text_field(:fees,
46
+ id: 'ctl00_cntPlh_txtFeesAssigned')
47
+
48
+ text_area(:details,
49
+ id: 'ctl00_cntPlh_txtTaskDescription')
50
+
51
+ select_list(:letter_agreement,
52
+ id: 'ctl00_cntPlh_ddlLetterAgreement')
53
+
54
+
55
+
56
+ button(:save_button,
57
+ id: 'ctl00_cntPlh_btnSave')
58
+
59
+ button(:cancel_button,
60
+ id: 'ctl00_cntPlh_btnCancel')
61
+
62
+ def get_task_data
63
+ data = { name: self.name,
64
+ schedule: self.schedule_element.selected_options[0],
65
+ priority: self.priority_element.selected_options[0],
66
+ due_days: self.due_days,
67
+ due_hours: self.due_hours_element.selected_options[0],
68
+ due_minutes: self.due_minutes_element.selected_options[0],
69
+ followup: self.followup_element.selected_options[0],
70
+ assignedto: self.assignedto_element.selected_options[0],
71
+ fees: self.fees,
72
+ details: self.details,
73
+ letter_agreement: self.letter_agreement_element.selected_options[0],
74
+ }
75
+
76
+ data
77
+ end
78
+
79
+ def set_task_data data
80
+ self.name = data[:name]
81
+ self.schedule_element.select data[:schedule]
82
+ self.priority_element.select data[:priority]
83
+ self.due_days = data[:due_days]
84
+ self.due_hours_element.select data[:due_hours]
85
+ self.due_minutes_element.select data[:due_minutes]
86
+ self.followup_element.select data[:followup]
87
+ self.assignedto_element.select data[:assignedto]
88
+ self.fees = data[:fees]
89
+ self.details = data[:details]
90
+ self.letter_agreement_element.select data[:letter_agreement]
91
+
92
+ self
93
+ end
94
+
95
+ def save
96
+ self.save_button
97
+ end
98
+
99
+ def set_name name
100
+ self.name = name
101
+
102
+ self
103
+ end
104
+ end
105
+
106
+ end # module Pages
107
+
@@ -0,0 +1,111 @@
1
+ ##############################################################################
2
+ # File:: workflow_tasks_page.rb
3
+ # Purpose:: Workflow Tasks page
4
+ #
5
+ # admin/security/WorkflowTasks.aspx?act=2
6
+ #
7
+ # Author:: Jeff McAffee 2015-04-19
8
+ #
9
+ ##############################################################################
10
+ require 'page-object'
11
+
12
+ module AdminModule
13
+ module Pages
14
+ class WorkflowTasksPage
15
+ include PageObject
16
+
17
+ page_url(:get_dynamic_url)
18
+
19
+ def get_dynamic_url
20
+ AdminModule.configuration.base_url + "/admin/security/WorkflowTasks.aspx?act=2"
21
+ end
22
+
23
+ button(:add_button,
24
+ id: 'ctl00_cntPlh_btnAdd')
25
+
26
+ button(:modify_button,
27
+ id: 'ctl00_cntPlh_btnModify')
28
+
29
+ button(:delete_button,
30
+ id: 'ctl00_cntPlh_btnDelete')
31
+
32
+ ###
33
+ # Return an array of task names
34
+ #
35
+
36
+ def get_tasks
37
+ get_tasks_and_ids.keys
38
+ end
39
+
40
+ ###
41
+ # Modify a task - browses to the task details page.
42
+ #
43
+ # Returns the Task Details page object (so methods can be chained).
44
+ #
45
+
46
+ def modify name
47
+ tasks = get_tasks_and_ids
48
+
49
+ detail_page tasks[name]
50
+ end
51
+
52
+ ###
53
+ # Add a task - browses to the 'new' task page.
54
+ #
55
+ # Returns the Task Details page object (so methods can be chained).
56
+ #
57
+
58
+ def add
59
+ self.add_button
60
+
61
+ # Return the page object of the next page.
62
+ detail_page
63
+ end
64
+
65
+ private
66
+
67
+ ###
68
+ # Not used at this time, but this is a valid reference to the task details table.
69
+ #
70
+
71
+ def tasks_table
72
+ table_elements[0].table_elements[1]
73
+ end
74
+
75
+ ###
76
+ # Return a hash of task names and ids
77
+ #
78
+ # ex: { 'Some Task Name' => 24 }
79
+ #
80
+ # The ID can be used to edit a specific task.
81
+ #
82
+
83
+ def get_tasks_and_ids
84
+ task_names = Hash.new
85
+
86
+ Nokogiri::HTML(@browser.html).css("#ctl00_cntPlh_dgrTasks>tbody>tr").each do |tr|
87
+ id = tr['taskid']
88
+ name = tr.css("td:nth-child(1)").text
89
+ task_names[name] = id
90
+ end # css
91
+
92
+ task_names
93
+ end
94
+
95
+ ###
96
+ # Return a page object for the Task Detail page
97
+ #
98
+ # To edit a specific task, pass an id. The browser will navigate to the task edit url.
99
+ #
100
+
101
+ def detail_page id = nil
102
+ unless id.nil?
103
+ navigate_to AdminModule.configuration.base_url + "/admin/security/WorkflowTask.aspx?TaskID=#{id}"
104
+ end
105
+
106
+ WorkflowTaskPage.new(@browser, false)
107
+ end
108
+ end
109
+ end
110
+ end
111
+