sambal-cle 0.1.5 → 0.1.6

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 (58) hide show
  1. data/Gemfile +3 -5
  2. data/Gemfile.lock +6 -9
  3. data/lib/sambal-cle/base_page.rb +21 -3
  4. data/lib/sambal-cle/data_objects/announcement.rb +1 -1
  5. data/lib/sambal-cle/data_objects/assignment.rb +3 -2
  6. data/lib/sambal-cle/data_objects/course.rb +5 -4
  7. data/lib/sambal-cle/data_objects/event.rb +7 -7
  8. data/lib/sambal-cle/data_objects/forum.rb +3 -2
  9. data/lib/sambal-cle/data_objects/lesson.rb +3 -1
  10. data/lib/sambal-cle/data_objects/resource.rb +3 -1
  11. data/lib/sambal-cle/page_objects/account.rb +15 -66
  12. data/lib/sambal-cle/page_objects/aliases.rb +3 -2
  13. data/lib/sambal-cle/page_objects/announcements.rb +16 -31
  14. data/lib/sambal-cle/page_objects/assessments.rb +22 -55
  15. data/lib/sambal-cle/page_objects/assignments.rb +1 -1
  16. data/lib/sambal-cle/page_objects/blogger.rb +21 -77
  17. data/lib/sambal-cle/page_objects/blogs.rb +3 -5
  18. data/lib/sambal-cle/page_objects/calendar.rb +22 -40
  19. data/lib/sambal-cle/page_objects/chat_room.rb +2 -2
  20. data/lib/sambal-cle/page_objects/email_archive.rb +1 -2
  21. data/lib/sambal-cle/page_objects/evaluations.rb +78 -50
  22. data/lib/sambal-cle/page_objects/feedback.rb +1 -5
  23. data/lib/sambal-cle/page_objects/forms.rb +14 -55
  24. data/lib/sambal-cle/page_objects/forums.rb +11 -24
  25. data/lib/sambal-cle/page_objects/glossary.rb +6 -12
  26. data/lib/sambal-cle/page_objects/home.rb +7 -18
  27. data/lib/sambal-cle/page_objects/jforums.rb +60 -197
  28. data/lib/sambal-cle/page_objects/job_scheduler.rb +16 -49
  29. data/lib/sambal-cle/page_objects/lessons.rb +11 -34
  30. data/lib/sambal-cle/page_objects/matrix.rb +12 -14
  31. data/lib/sambal-cle/page_objects/messages.rb +71 -466
  32. data/lib/sambal-cle/page_objects/my_workspace.rb +3 -3
  33. data/lib/sambal-cle/page_objects/podcasts.rb +1 -6
  34. data/lib/sambal-cle/page_objects/polls.rb +5 -5
  35. data/lib/sambal-cle/page_objects/portfolio_templates.rb +16 -66
  36. data/lib/sambal-cle/page_objects/portfolios.rb +17 -67
  37. data/lib/sambal-cle/page_objects/profile.rb +5 -16
  38. data/lib/sambal-cle/page_objects/profile2.rb +51 -119
  39. data/lib/sambal-cle/page_objects/public_search.rb +6 -27
  40. data/lib/sambal-cle/page_objects/realms.rb +2 -2
  41. data/lib/sambal-cle/page_objects/resources.rb +89 -116
  42. data/lib/sambal-cle/page_objects/resources_roster.rb +1 -0
  43. data/lib/sambal-cle/page_objects/rosters.rb +3 -13
  44. data/lib/sambal-cle/page_objects/rwiki.rb +2 -6
  45. data/lib/sambal-cle/page_objects/search.rb +10 -10
  46. data/lib/sambal-cle/page_objects/sections.rb +40 -81
  47. data/lib/sambal-cle/page_objects/site_setup.rb +46 -74
  48. data/lib/sambal-cle/page_objects/sites.rb +24 -110
  49. data/lib/sambal-cle/page_objects/styles.rb +6 -51
  50. data/lib/sambal-cle/page_objects/syllabus.rb +12 -26
  51. data/lib/sambal-cle/page_objects/user_membership.rb +3 -15
  52. data/lib/sambal-cle/page_objects/users.rb +9 -25
  53. data/sambal-cle.gemspec +1 -1
  54. data/test/add_assignment_to_calendar_spec.rb +55 -1
  55. data/test/config.yml +1 -1
  56. data/test/duplicate_site_spec.rb +11 -10
  57. data/test/import_site_content_spec.rb +6 -5
  58. metadata +2 -2
@@ -9,10 +9,8 @@ class JobScheduler < BasePage
9
9
 
10
10
  # Clicks the Jobs link, then instantiates
11
11
  # the JobList Class.
12
- def jobs
13
- frm.link(:text=>"Jobs").click
14
- JobList.new(@browser)
15
- end
12
+ link "Jobs"
13
+ link "Filter Events"
16
14
 
17
15
  end
18
16
 
@@ -21,26 +19,12 @@ class JobList < BasePage
21
19
 
22
20
  frame_element
23
21
 
24
- # Clicks the New Job link, then
25
- # instantiates the CreateNewJob Class.
26
- def new_job
27
- frm.link(:text=>"New Job").click
28
- CreateNewJob.new(@browser)
29
- end
30
-
31
- # Clicks the link with the text "Triggers" associated with the
32
- # specified job name,
33
- # then instantiates the EditTriggers Class.
34
- def triggers(job_name)
35
- frm.div(:class=>"portletBody").table(:class=>"listHier lines").row(:text=>/#{Regexp.escape(job_name)}/).link(:text=>/Triggers/).click
36
- sleep 1
37
- EditTriggers.new(@browser)
38
- end
39
-
40
- def event_log
41
- frm.link(:text=>"Event Log").click
42
- EventLog.new(@browser)
43
- end
22
+ link "New Job"
23
+ link "Delete"
24
+ link "Event Log"
25
+
26
+ action(:triggers) { |job_name, b| b.frm.div(:class=>"portletBody").table(:class=>"listHier lines").row(:text=>/#{Regexp.escape(job_name)}/).link(:text=>/Triggers/).click }
27
+ element(:check) { |job_name, b| b.frm.div(:class=>"portletBody").table(:class=>"listHier lines").row(:text=>/#{Regexp.escape(job_name)}/).checkbox }
44
28
 
45
29
  end
46
30
 
@@ -51,13 +35,11 @@ class CreateNewJob < BasePage
51
35
 
52
36
  # Clicks the Post button, then
53
37
  # instantiates the JobList Class.
54
- def post
55
- frm.button(:value=>"Post").click
56
- JobList.new(@browser)
57
- end
38
+ button "Post"
58
39
 
59
40
  element(:job_name) { |b| b.frm.text_field(:id=>"_id2:job_name") }
60
41
  element(:type) { |b| b.frm.select_list(:name=>"_id2:_id10") }
42
+
61
43
  end
62
44
 
63
45
  # The page for Editing Triggers
@@ -67,20 +49,10 @@ class EditTriggers < BasePage
67
49
 
68
50
  # Clicks the "Run Job Now" link, then
69
51
  # instantiates the RunJobConfirmation Class.
70
- def run_job_now
71
- frm.div(:class=>"portletBody").link(:text=>"Run Job Now").click
72
- RunJobConfirmation.new(@browser)
73
- end
52
+ action(:run_job_now) { |b| b.frm.div(:class=>"portletBody").link(:text=>"Run Job Now").click }
74
53
 
75
- def return_to_jobs
76
- frm.link(:text=>"Return_to_Jobs").click
77
- JobList.new(@browser)
78
- end
79
-
80
- def new_trigger
81
- frm.link(:text=>"New Trigger").click
82
- CreateTrigger.new(@browser)
83
- end
54
+ link "Return_to_Jobs"
55
+ link "New Trigger"
84
56
 
85
57
  end
86
58
 
@@ -89,13 +61,11 @@ class CreateTrigger < BasePage
89
61
 
90
62
  frame_element
91
63
 
92
- def post
93
- frm.button(:value=>"Post").click
94
- EditTriggers.new(@browser)
95
- end
64
+ button "Post"
96
65
 
97
66
  element(:name) { |b| b.frm.text_field(:id=>"_id2:trigger_name") }
98
67
  element(:cron_expression) { |b| b.frm.text_field(:id=>"_id2:trigger_expression") }
68
+
99
69
  end
100
70
 
101
71
 
@@ -106,10 +76,7 @@ class RunJobConfirmation < BasePage
106
76
 
107
77
  # Clicks the "Run Now" button, then
108
78
  # instantiates the JobList Class.
109
- def run_now
110
- frm.button(:value=>"Run Now").click
111
- JobList.new(@browser)
112
- end
79
+ button "Run Now"
113
80
 
114
81
  end
115
82
 
@@ -46,29 +46,14 @@ class Lessons < LessonsBase
46
46
  action(:archive) { |b| b.frm.link(text: "Archive").click }
47
47
  action(:move_sections) { |b| b.frm.link(text: "Move Section(s)").click }
48
48
 
49
- # Clicks on the link that matches the supplied
50
- # name value, next is the
51
- # AddEditLesson, or ViewLesson class, depending
52
- # on which page loads.
53
- #
54
- # Will error out if there is no
55
- # matching link in the list.
56
- def open_lesson(name)
57
- frm.link(:text=>name).click
58
- end
59
- alias open_section open_lesson
49
+ action(:open_lesson) { |name, b| b.frm.link(:text=>name).click }
50
+ alias :open_section :open_lesson
60
51
 
61
- def href(name)
62
- frm.link(:text=>name).href
63
- end
52
+ action(:href) { |name, b| b.frm.link(:text=>name).href }
64
53
 
65
- def check_lesson(name)
66
- frm.tr(text: /#{Regexp.escape(name)}/).td(class: "ModCheckClass").checkbox.set
67
- end
54
+ action(:check_lesson) { |name, b| b.frm.tr(text: /#{Regexp.escape(name)}/).td(class: "ModCheckClass").checkbox.set }
68
55
 
69
- def check_section(name)
70
- frm.td(class: "SectionClass", text: /#{Regexp.escape(name)}/).checkbox.set
71
- end
56
+ action(:check_section) { |name, b| b.frm.td(class: "SectionClass", text: /#{Regexp.escape(name)}/).checkbox.set }
72
57
 
73
58
  # Returns an array of the Module titles displayed on the page.
74
59
  def lessons_list
@@ -108,7 +93,7 @@ class ViewModule < LessonsBase
108
93
  return list
109
94
  end
110
95
 
111
- action(:next) { |b| b.frm.link(:text=>"Next").click }
96
+ link "Next"
112
97
 
113
98
  # Returns the text of the Module title row
114
99
  value(:module_title) { |b| b.frm.span(:id=>/modtitle/).text }
@@ -129,14 +114,10 @@ class ViewModuleList < LessonsBase
129
114
  menu_elements
130
115
 
131
116
  # LessonStudentSide
132
- def open_lesson(name)
133
- frm.link(:text=>name).click
134
- end
117
+ action(:open_lesson) { |name, b| b.frm.link(:text=>name).click }
135
118
 
136
119
  # SectionStudentSide
137
- def open_section(name)
138
- frm.link(:text=>name).click
139
- end
120
+ action(:open_section) { |name, b| b.frm.link(:text=>name).click }
140
121
 
141
122
  end
142
123
 
@@ -159,13 +140,9 @@ class LessonManage < LessonsBase
159
140
 
160
141
  menu_elements
161
142
 
162
- action(:manage_content) {|b| b.frm.link(:text=>"Manage Content").click }
163
-
164
- action(:sort) {|b| b.frm.link(:text=>"Sort").click }
165
-
166
- # Clicks the Import/Export button and
167
- # next is the LessonImportExport class.
168
- action(:import_export) {|b| b.frm.link(:text=>"Import/Export").click }
143
+ link "Manage Content"
144
+ link "Sort"
145
+ link "Import/Export"
169
146
 
170
147
  end
171
148
 
@@ -9,11 +9,11 @@ class Matrices < BasePage
9
9
 
10
10
  # Clicks the Add link and instantiates
11
11
  # the AddEditMatrix Class.
12
- action(:add) { |b| b.frm.link(:text=>"Add").click }
13
- action(:import) { |b| b.frm.link(:text=>"Import").click }
14
- action(:manage_site_associations) { |b| b.frm.link(:text=>"Manage Site Associations").click }
15
- action(:permissions) { |b| b.frm.link(:text=>"Permissions").click }
16
- action(:my_preferences) { |b| b.frm.link(:text=>"My Preferences").click }
12
+ link "Add"
13
+ link "Import"
14
+ link "Manage Site Associations"
15
+ link "Permissions"
16
+ link "My Preferences"
17
17
 
18
18
  # Clicks the "Edit" link for the specified
19
19
  # Matrix item, then instantiates the EditMatrixCells.
@@ -58,19 +58,19 @@ class AddEditMatrix < BasePage
58
58
  element(:editor) { |b| b.frm.frame(:id=>"descriptionTextArea___Frame") }
59
59
 
60
60
  # Clicks the "Create Matrix" button
61
- action(:create_matrix) { |b| b.frm.button(:value=>"Create Matrix").click }
61
+ button "Create Matrix"
62
62
 
63
63
  # Clicks the "Save Changes" button
64
- action(:save_changes) { |b| b.frm.button(:value=>"Save Changes").click }
64
+ button "Save Changes"
65
65
 
66
66
  # Clicks the "Select Style" link
67
- action(:select_style) { |b| b.frm.link(:text=>"Select Style").click }
67
+ link "Select Style"
68
68
 
69
69
  # Clicks the "Add Column" link
70
- action(:add_column) { |b| b.frm.link(:text=>"Add Column").click }
70
+ link "Add Column"
71
71
 
72
72
  # Clicks the "Add Row" link
73
- action(:add_row) { |b| b.frm.link(:text=>"Add Row").click }
73
+ link "Add Row"
74
74
 
75
75
  element(:title) { |b| b.frm.text_field(:id=>"title-id") }
76
76
 
@@ -81,9 +81,7 @@ class SelectMatrixStyle < BasePage
81
81
 
82
82
  frame_element
83
83
 
84
- # Clicks the "Go Back" button and
85
- # instantiates the AddEditMatrix Class.
86
- action(:go_back) { |b| b.frm.button(:value=>"Go Back").click }
84
+ button "Go Back"
87
85
 
88
86
  # Clicks the "Select" link for the specified
89
87
  # Style, then instantiates the AddEditMatrix Class.
@@ -96,7 +94,7 @@ class RowColumnCommon < BasePage
96
94
  frame_element
97
95
  class << self
98
96
  def table_elements
99
- action(:update) { |b| b.frm.button(:value=>"Update").click }
97
+ button "Update"
100
98
  element(:name) { |b| b.frm.text_field(:name=>"description") }
101
99
  element(:background_color) { |b| b.frm.text_field(:id=>"color-id") }
102
100
  element(:font_color) { |b| b.frm.text_field(:id=>"textColor-id") }
@@ -2,188 +2,19 @@ class Messages < BasePage
2
2
 
3
3
  frame_element
4
4
 
5
- # Clicks the Compose Message button,
6
- # then instantiates the
7
- # ComposeMessage class.
8
- def compose_message
9
- frm.link(:text=>"Compose Message").click
10
- sleep 1 #FIXME
11
- ComposeMessage.new(@browser)
12
- end
13
-
14
- def received
15
- frm.link(:text=>"Received").click
16
- MessagesReceivedList.new(@browser)
17
- end
18
-
19
- def sent
20
- frm.link(:text=>"Sent").click
21
- MessagesSentList.new(@browser)
22
- end
23
-
24
- def deleted
25
- frm.link(:text=>"Deleted").click
26
- MessagesDeletedList.new(@browser)
27
- end
28
-
29
- def draft
30
- frm.link(:text=>"Draft").click
31
- MessagesDraftList.new(@browser)
32
- end
33
-
34
- def open_folder(foldername)
35
- frm.link(:text=>foldername).click
36
- FolderList.new(@browser)
37
- end
38
-
39
- def new_folder
40
- frm.link(:text=>"New Folder").click
41
- MessagesNewFolder.new(@browser)
42
- end
43
-
44
- def settings
45
- frm.link(:text=>"Settings").click
46
- MessagesSettings.new(@browser)
47
- end
48
-
49
- # Gets the count of messages
50
- # in the specified folder
51
- # and returns it as a string
52
- def total_messages_in_folder(folder_name)
53
- frm.table(:id=>"msgForum:_id23:0:privateForums").row(:text=>/#{Regexp.escape(folder_name)}/).span(:class=>"textPanelFooter", :index=>0).text =~ /\d+/
54
- return $~.to_s
55
- end
56
-
57
- # Gets the count of unread messages
58
- # in the specified folder and returns it
59
- # as a string
60
- def unread_messages_in_folder(folder_name)
61
- frm.table(:id=>"msgForum:_id23:0:privateForums").row(:text=>/#{Regexp.escape(folder_name)}/).span(:text=>/unread/).text =~ /\d+/
62
- return $~.to_s
63
- end
64
-
65
- # Gets all the folder names
66
- def folders
67
- links = frm.table(:class=>"hierItemBlockWrapper").links.find_all { |link| link.title != /Folder Settings/ }
68
- folders = []
69
- links.each { |link| folders << link.text }
70
- return folders
71
- end
72
-
73
- def folder_settings(folder_name)
74
- frm.table(:class=>"hierItemBlockWrapper").row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Folder Settings").click
75
- MessageFolderSettings.new(@browser)
76
- end
77
- end
78
-
79
- class MessagesSentList < BasePage
80
-
81
- frame_element
82
-
83
- # Clicks the "Messages" breadcrumb link to return
84
- # to the top level of Messages. Then instantiates
85
- # the Messages class.
86
- def messages
87
- frm.link(:text=>"Messages").click
88
- Messages.new(@browser)
89
- end
90
-
91
- # Creates an array consisting of the
92
- # message subject lines.
93
- def subjects
94
- titles = []
95
- messages = frm.table(:id=>"prefs_pvt_form:pvtmsgs")
96
- 1.upto(messages.rows.size-1) do |x|
97
- titles << messages.row(:index=>x).a.title
98
- end
99
- return titles
100
- end
101
-
102
- # Returns a string consisting of the content of the
103
- # page header--or "breadcrumb", as it's called.
104
- def header
105
- frm.div(:class=>"breadCrumb specialLink").text
106
- end
107
-
108
- # Clicks the Compose Message button,
109
- # then instantiates the
110
- # ComposeMessage class.
111
- def compose_message
112
- frm.link(:text=>"Compose Message").click
113
- ComposeMessage.new(@browser)
114
- end
115
-
116
- # Grabs the text from the message
117
- # box that appears after doing some
118
- # action.
119
- #
120
- # Use this method to simplify writing
121
- # Test::Unit asserts
122
- def alert_message_text
123
- frm.span(:class=>"success").text
124
- end
125
-
126
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
127
-
128
- end
129
-
130
- class MessagesReceivedList < BasePage
131
-
132
- frame_element
133
-
134
- # Returns a string consisting of the content of the
135
- # page header--or "breadcrumb", as it's called.
136
- def header
137
- frm.div(:class=>"breadCrumb specialLink").text
138
- end
139
-
140
- # Clicks the "Messages" breadcrumb link to return
141
- # to the top level of Messages. Then instantiates
142
- # the Messages class.
143
- def messages
144
- frm.link(:text=>"Messages").click
145
- Messages.new(@browser)
146
- end
147
-
148
- def compose_message
149
- frm.link(:text=>"Compose Message").click
150
- ComposeMessage.new(@browser)
151
- end
152
-
153
- # Clicks on the specified message subject
154
- # then instantiates the MessageView class.
155
- def open_message(subject)
156
- frm.link(:text, /#{Regexp.escape(subject)}/).click
157
- MessageView.new(@browser)
158
- end
159
-
160
- # Grabs the text from the message
161
- # box that appears after doing some
162
- # action.
163
- #
164
- # Use this method to simplify writing
165
- # Test::Unit asserts
166
- def alert_message_text
167
- frm.span(:class=>"success").text
168
- end
169
-
170
- # Checks the checkbox for the specified
171
- # message in the list.
172
- #
173
- # Will throw an error if the specified
174
- # subject is not present.
175
- def check_message(subject)
5
+ value(:header) { |b| b.frm.div(:class=>"breadCrumb specialLink").text }
6
+ value(:alert_message_text) { |b| b.frm.span(:class=>"success").text }
7
+ link "Compose Message"
8
+ link "Messages"
9
+ action(:open_message) { |subject, b| b.frm.link(:text, /#{Regexp.escape(subject)}/).click }
10
+ action(:check_message) { |subject, b|
176
11
  index=subjects.index(subject)
177
- frm.checkbox(:name=>"prefs_pvt_form:pvtmsgs:#{index}:_id122").set
178
- end
179
-
180
- # Clicks the "Mark Read" link, then
181
- # reinstantiates the class because
182
- # the page partially refreshes.
183
- def mark_read
184
- frm.link(:text=>"Mark Read").click
185
- MessagesReceivedList.new(@browser)
186
- end
12
+ b.frm.checkbox(:name=>"prefs_pvt_form:pvtmsgs:#{index}:_id122").set }
13
+ link "Mark Read"
14
+ element(:view) { |b| b.frm.select(:id=>"prefs_pvt_form:viewlist") }
15
+ link "Check All"
16
+ link "Delete"
17
+ link "Move"
187
18
 
188
19
  # Creates an array consisting of the
189
20
  # message subject lines.
@@ -196,103 +27,44 @@ class MessagesReceivedList < BasePage
196
27
  return titles
197
28
  end
198
29
 
199
- # Returns an Array object containing the
200
- # subjects of the displayed messages that are
201
- # marked unread.
202
30
  def unread_messages
203
31
  # TODO - Write this method
204
32
  end
205
33
 
206
- # Clicks the Move link, then
207
- # instantiates the MoveMessageTo Class.
208
- def move
209
- frm.link(:text, "Move").click
210
- MoveMessageTo.new(@browser)
211
- end
212
-
213
- element(:view) { |b| b.frm.select(:id=>"prefs_pvt_form:viewlist") }
214
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
215
- action(:delete) { |b| b.frm.link(:text=>"Delete").click }
216
-
217
34
  end
218
35
 
219
- # Page for the Contents of a Custom Folder for Messages
220
- class FolderList < BasePage
36
+ class MessageFolders < BasePage
221
37
 
222
38
  frame_element
223
39
 
224
- def compose_message
225
- frm.link(:text=>"Compose Message").click
226
- ComposeMessage.new(@browser)
227
- end
228
-
229
- # Clicks on the specified message subject
230
- # then instantiates the MessageView class.
231
- def open_message(subject)
232
- frm.link(:text, /#{Regexp.escape(subject)}/).click
233
- MessageView.new(@browser)
234
- end
235
-
236
- # Grabs the text from the message
237
- # box that appears after doing some
238
- # action.
239
- #
240
- # Use this method to simplify writing
241
- # Test::Unit asserts
242
- def alert_message_text
243
- frm.span(:class=>"success").text
244
- end
245
-
246
- # Checks the checkbox for the specified
247
- # message in the list.
248
- #
249
- # Will throw an error if the specified
250
- # subject is not present.
251
- def check_message(subject)
252
- index=subjects.index(subject)
253
- frm.checkbox(:name=>"prefs_pvt_form:pvtmsgs:#{index}:_id122").set
254
- end
40
+ link "Received"
41
+ link "Sent"
42
+ link "Deleted"
43
+ link "Draft"
44
+ link "New Folder"
45
+ link "Settings"
255
46
 
256
- # Clicks the Messages link in the
257
- # Breadcrumb bar at the top of the
258
- # page, then instantiates the Messages
259
- # class
260
- def messages
261
- frm.link(:text=>"Messages").click
262
- Messages.new(@browser)
263
- end
264
-
265
- # Clicks the "Mark Read" link, then
266
- # reinstantiates the class because
267
- # the page partially refreshes.
268
- def mark_read
269
- frm.link(:text=>"Mark Read").click
270
- MessagesReceivedList.new(@browser)
271
- end
47
+ action(:open_folder) { |foldername, b| b.frm.link(:text=>foldername).click }
272
48
 
273
- # Creates an array consisting of the
274
- # message subject lines.
275
- def subjects
276
- titles = []
277
- messages = frm.table(:id=>"prefs_pvt_form:pvtmsgs")
278
- 1.upto(messages.rows.size-1) do |x|
279
- titles << messages.row(:index=>x).a.title
280
- end
281
- return titles
282
- end
49
+ # Gets the count of messages
50
+ # in the specified folder
51
+ # and returns it as a string
52
+ action(:total_messages_in_folder) { |folder_name, b| b.frm.table(:id=>"msgForum:_id23:0:privateForums").row(:text=>/#{Regexp.escape(folder_name)}/).span(:class=>"textPanelFooter", :index=>0).text =~ /\d+/; return $~.to_s }
283
53
 
284
- def unread_messages
285
- # TODO - Write this method
286
- end
54
+ # Gets the count of unread messages
55
+ # in the specified folder and returns it
56
+ # as a string
57
+ action(:unread_messages_in_folder) { |folder_name, b| b.frm.table(:id=>"msgForum:_id23:0:privateForums").row(:text=>/#{Regexp.escape(folder_name)}/).span(:text=>/unread/).text =~ /\d+/; return $~.to_s }
287
58
 
288
- def move
289
- frm.link(:text, "Move").click
290
- MoveMessageTo.new(@browser)
59
+ # Gets all the folder names
60
+ def folders
61
+ links = frm.table(:class=>"hierItemBlockWrapper").links.find_all { |link| link.title != /Folder Settings/ }
62
+ folders = []
63
+ links.each { |link| folders << link.text }
64
+ return folders
291
65
  end
292
66
 
293
- element(:view) { |b| b.frm.select(:id=>"prefs_pvt_form:viewlist") }
294
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
295
- action(:delete) { |b| b.frm.link(:text=>"Delete").click }
67
+ action(:folder_settings) { |folder_name, b| b.frm.table(:class=>"hierItemBlockWrapper").row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Folder Settings").click }
296
68
 
297
69
  end
298
70
 
@@ -302,18 +74,13 @@ class MoveMessageTo < BasePage
302
74
 
303
75
  frame_element
304
76
 
305
- def move_messages
306
- frm.button(:value=>"Move Messages").click
307
- Messages.new(@browser)
308
- end
77
+ button "Move Messages"
309
78
 
310
79
  # Method for selecting any custom folders
311
80
  # present on the screen--and *only* the custom
312
81
  # folders. Count begins with "1" for the first custom
313
82
  # folder listed.
314
- def select_custom_folder_num(num)
315
- frm.radio(:index=>num.to_i+3).set
316
- end
83
+ action(:select_custom_folder_num) { |num, b| b.frm.radio(:index=>num.to_i+3).set }
317
84
 
318
85
  element(:received) { |b| b.frm.radio(:name=>"pvtMsgMove:_id16:0:privateForums:0:_id19") }
319
86
  element(:sent) { |b| b.frm.radio(:name=>"pvtMsgMove:_id16:0:privateForums:1:_id19") }
@@ -322,159 +89,43 @@ class MoveMessageTo < BasePage
322
89
 
323
90
  end
324
91
 
325
- # The page showing the list of deleted messages.
326
- class MessagesDeletedList < BasePage
327
-
328
- frame_element
329
-
330
- # Returns a string consisting of the content of the
331
- # page header--or "breadcrumb", as it's called.
332
- def header
333
- frm.div(:class=>"breadCrumb specialLink").text
334
- end
335
-
336
- # Clicks the "Messages" breadcrumb link to return
337
- # to the top level of Messages. Then instantiates
338
- # the Messages class.
339
- def messages
340
- frm.link(:text=>"Messages").click
341
- Messages.new(@browser)
342
- end
343
-
344
- def compose_message
345
- frm.link(:text=>"Compose Message").click
346
- ComposeMessage.new(@browser)
347
- end
348
-
349
- # Grabs the text from the message
350
- # box that appears after doing some
351
- # action.
352
- #
353
- # Use this method to simplify writing
354
- # Test::Unit asserts
355
- def alert_message_text
356
- frm.span(:class=>"success").text
357
- end
358
-
359
- # Creates an array consisting of the
360
- # message subject lines.
361
- def subjects
362
- titles = []
363
- messages = frm.table(:id=>"prefs_pvt_form:pvtmsgs")
364
- 1.upto(messages.rows.size-1) do |x|
365
- titles << messages[x][2].text
366
- end
367
- return titles
368
- end
369
-
370
- # Checks the checkbox for the specified
371
- # message in the list.
372
- #
373
- # Will throw an error if the specified
374
- # subject is not present.
375
- def check_message(subject)
376
- index=subjects.index(subject)
377
- frm.checkbox(:name=>"prefs_pvt_form:pvtmsgs:#{index}:_id122").set
378
- end
379
-
380
- def move
381
- frm.link(:text, "Move").click
382
- MoveMessageTo.new(@browser)
383
- end
384
-
385
- def delete
386
- frm.link(:text=>"Delete").click
387
- MessageDeleteConfirmation.new(@browser)
388
- end
389
-
390
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
391
-
392
- end
393
-
394
- # The page showing the list of Draft messages.
395
- class MessagesDraftList < BasePage
396
-
397
- frame_element
398
-
399
- def compose_message
400
- frm.link(:text=>"Compose Message").click
401
- ComposeMessage.new(@browser)
402
- end
403
-
404
- # Grabs the text from the message
405
- # box that appears after doing some
406
- # action.
407
- #
408
- # Use this method to simplify writing
409
- # Test::Unit asserts
410
- def alert_message_text
411
- frm.span(:class=>"success").text
412
- end
413
-
414
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
415
-
416
- end
417
-
418
92
  # The Page where you are reading a Message.
419
93
  class MessageView < BasePage
420
94
 
421
95
  frame_element
422
96
 
423
97
  # Returns the contents of the message body.
424
- def message_text
425
- frm.div(:class=>"textPanel").text
426
- end
98
+ value(:message_text) { |b| b.frm.div(:class=>"textPanel").text }
427
99
 
428
- def reply
429
- frm.button(:value=>"Reply").click
430
- ReplyToMessage.new(@browser)
431
- end
100
+ button "Reply"
432
101
 
433
- def forward
434
- frm.button(:value=>"Forward ").click
435
- ForwardMessage.new(@browser)
436
- end
102
+ action(:forward) { |b| b.frm.button(:value=>"Forward ").click }
437
103
 
438
- def received
439
- frm.link(:text=>"Received").click
440
- MessagesReceivedList.new(@browser)
441
- end
104
+ link "Received"
442
105
 
443
106
  # Clicks the "Messages" breadcrumb link to return
444
107
  # to the top level of Messages. Then instantiates
445
108
  # the Messages class.
446
- def messages
447
- frm.link(:text=>"Messages").click
448
- Messages.new(@browser)
449
- end
109
+ link "Messages"
110
+
450
111
  end
451
112
 
452
113
  class ComposeMessage < BasePage
453
114
 
115
+ include FCKEditor
454
116
  frame_element
117
+ expected_element :editor
455
118
 
456
- def send
457
- frm.button(:value=>"Send ").click
458
- Messages.new(@browser)
459
- end
119
+ element(:editor) { |b| b.frm.frame(:id, "compose:pvt_message_body_inputRichText___Frame") }
120
+ action(:send) { |b| b.frm.button(:value=>"Send ").click }
460
121
 
461
122
  def message_text=(text)
462
- frm.frame(:id, "compose:pvt_message_body_inputRichText___Frame").td(:id, "xEditingArea").wait_until_present
463
- sleep 0.3
464
- frm.frame(:id, "compose:pvt_message_body_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
465
- end
466
-
467
- def add_attachments
468
- frm.button(:value=>"Add attachments").click
469
- MessagesAttachment.new(@browser)
470
- end
471
-
472
- def preview
473
- frm.button(:value=>"Preview").click
474
- MessagesPreview.new(@browser)
123
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
475
124
  end
476
125
 
477
- action(:save_draft) {|b| b.frm.button(:value=>"Save Draft").click }
126
+ button "Add attachments"
127
+ button "Preview"
128
+ button "Save Draft"
478
129
  element(:send_to) { |b| b.frm.select(:id=>"compose:list1") }
479
130
  element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
480
131
  element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
@@ -488,34 +139,16 @@ class ReplyToMessage < BasePage
488
139
  expected_element :editor
489
140
 
490
141
  element(:editor) { |b| b.frm.frame(:id, "pvtMsgReply:df_compose_body_inputRichText___Frame") }
491
-
492
- def send
493
- frm.button(:value=>"Send ").click
494
- # Need logic here to ensure the
495
- # right class gets called...
496
- if frm.div(:class=>/breadCrumb/).text=~ /Messages.\/.Received/
497
- MessagesReceivedList.new(@browser)
498
- else #FIXME
499
- Messages.new(@browser)
500
- end
501
- end
142
+ action(:send) { |b| b.frm.button(:value=>"Send ").click }
502
143
 
503
144
  def message_text=(text)
504
145
  editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
505
146
  editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
506
147
  end
507
148
 
508
- def add_attachments
509
- frm.button(:value=>"Add attachments").click
510
- MessagesAttachment.new(@browser)
511
- end
512
-
513
- def preview
514
- frm.button(:value=>"Preview").click
515
- MessagesPreview.new(@browser)
516
- end
517
-
518
- action(:save_draft) {|b| b.frm.button(:value=>"Save Draft").click }
149
+ button "Add attachments"
150
+ button "Preview"
151
+ button "Save Draft"
519
152
  element(:select_additional_recipients) { |b| b.frm.select(:id=>"compose:list1") }
520
153
  element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
521
154
  element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
@@ -524,30 +157,22 @@ end
524
157
 
525
158
  # The page for composing a message
526
159
  class ForwardMessage < BasePage
527
-
160
+ include FCKEditor
528
161
  frame_element
529
162
 
530
- def send
531
- frm.button(:value=>"Send ").click
532
- MessagesReceivedList.new(@browser) #FIXME!
533
- end
534
-
535
- def message_text=(text)
536
- frm.frame(:id, "pvtMsgForward:df_compose_body_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
537
- frm.frame(:id, "pvtMsgForward:df_compose_body_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
538
- end
163
+ expected_element :editor
539
164
 
540
- def add_attachments
541
- frm.button(:value=>"Add attachments").click
542
- MessagesAttachment.new(@browser)
543
- end
165
+ element(:editor) { |b| b.frm.frame(:id, "pvtMsgForward:df_compose_body_inputRichText___Frame") }
166
+ action(:send) { |b| b.frm.button(:value=>"Send ").click }
544
167
 
545
- def preview
546
- frm.button(:value=>"Preview").click
547
- MessagesPreview.new(@browser)
168
+ def message_text=(text)
169
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
170
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
548
171
  end
549
172
 
550
- action(:save_draft) {|b| b.frm.button(:value=>"Save Draft").click }
173
+ button "Add attachments"
174
+ button "Preview"
175
+ button "Save Draft"
551
176
  element(:select_forward_recipients) { |b| b.frm.select(:id=>"pvtMsgForward:list1") }
552
177
  element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
553
178
  element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
@@ -563,10 +188,7 @@ class MessageDeleteConfirmation < BasePage
563
188
 
564
189
  value(:alert_message_text) { |b| b.frm.span(:class=>"alertMessage").text }
565
190
 
566
- def delete_messages
567
- frm.button(:value=>"Delete Message(s)").click
568
- MessagesDeletedList.new(@browser)
569
- end
191
+ button "Delete Message(s)"
570
192
 
571
193
  #FIXME
572
194
  # Want eventually to have a method that will return
@@ -578,10 +200,7 @@ class MessagesNewFolder < BasePage
578
200
 
579
201
  frame_element
580
202
 
581
- def add
582
- frm.button(:value=>"Add").click
583
- Messages.new(@browser)
584
- end
203
+ button"Add"
585
204
 
586
205
  element(:title) { |b| b.frm.text_field(:id=>"pvtMsgFolderAdd:title") }
587
206
 
@@ -592,20 +211,9 @@ class MessageFolderSettings < BasePage
592
211
 
593
212
  frame_element
594
213
 
595
- def rename_folder
596
- frm.button(:value=>"Rename Folder").click
597
- RenameMessageFolder.new(@browser)
598
- end
599
-
600
- def add
601
- frm.button(:value=>"Add").click
602
- MessagesNewFolder.new(@browser)
603
- end
604
-
605
- def delete
606
- frm.button(:value=>"Delete").click
607
- FolderDeleteConfirm.new(@browser)
608
- end
214
+ button "Rename Folder"
215
+ button "Add"
216
+ button "Delete"
609
217
 
610
218
  end
611
219
 
@@ -614,9 +222,6 @@ class FolderDeleteConfirm < BasePage
614
222
 
615
223
  frame_element
616
224
 
617
- def delete
618
- frm.button(:value=>"Delete").click
619
- Messages.new(@browser)
620
- end
225
+ button "Delete"
621
226
 
622
227
  end