sambal-cle 0.1.3
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.
- data/README.md +4 -0
- data/lib/sambal-cle/base_page.rb +20 -0
- data/lib/sambal-cle/core-ext.rb +90 -0
- data/lib/sambal-cle/data_objects/announcement.rb +82 -0
- data/lib/sambal-cle/data_objects/assessment.rb +32 -0
- data/lib/sambal-cle/data_objects/assignment.rb +205 -0
- data/lib/sambal-cle/data_objects/blog.rb +46 -0
- data/lib/sambal-cle/data_objects/blogger.rb +49 -0
- data/lib/sambal-cle/data_objects/chat_room.rb +54 -0
- data/lib/sambal-cle/data_objects/event.rb +89 -0
- data/lib/sambal-cle/data_objects/forum.rb +212 -0
- data/lib/sambal-cle/data_objects/lesson.rb +185 -0
- data/lib/sambal-cle/data_objects/message.rb +57 -0
- data/lib/sambal-cle/data_objects/poll.rb +74 -0
- data/lib/sambal-cle/data_objects/resource.rb +209 -0
- data/lib/sambal-cle/data_objects/site.rb +295 -0
- data/lib/sambal-cle/data_objects/syllabus.rb +73 -0
- data/lib/sambal-cle/data_objects/web_content_tool.rb +51 -0
- data/lib/sambal-cle/data_objects/wiki.rb +63 -0
- data/lib/sambal-cle/date_makers.rb +118 -0
- data/lib/sambal-cle/gem_ext.rb +23 -0
- data/lib/sambal-cle/page_helper.rb +22 -0
- data/lib/sambal-cle/page_maker.rb +48 -0
- data/lib/sambal-cle/page_objects/account.rb +111 -0
- data/lib/sambal-cle/page_objects/aliases.rb +43 -0
- data/lib/sambal-cle/page_objects/announcements.rb +190 -0
- data/lib/sambal-cle/page_objects/assessments.rb +874 -0
- data/lib/sambal-cle/page_objects/assignments.rb +770 -0
- data/lib/sambal-cle/page_objects/basic_lti.rb +6 -0
- data/lib/sambal-cle/page_objects/blogger.rb +205 -0
- data/lib/sambal-cle/page_objects/blogs.rb +60 -0
- data/lib/sambal-cle/page_objects/calendar.rb +330 -0
- data/lib/sambal-cle/page_objects/calendar_summary.rb +1 -0
- data/lib/sambal-cle/page_objects/chat_room.rb +22 -0
- data/lib/sambal-cle/page_objects/drop_box.rb +9 -0
- data/lib/sambal-cle/page_objects/email_archive.rb +22 -0
- data/lib/sambal-cle/page_objects/entity_picker.rb +62 -0
- data/lib/sambal-cle/page_objects/evaluations.rb +158 -0
- data/lib/sambal-cle/page_objects/feedback.rb +36 -0
- data/lib/sambal-cle/page_objects/forms.rb +120 -0
- data/lib/sambal-cle/page_objects/forums.rb +254 -0
- data/lib/sambal-cle/page_objects/glossary.rb +117 -0
- data/lib/sambal-cle/page_objects/gradebook.rb +29 -0
- data/lib/sambal-cle/page_objects/gradebook2.rb +17 -0
- data/lib/sambal-cle/page_objects/home.rb +36 -0
- data/lib/sambal-cle/page_objects/jforums.rb +444 -0
- data/lib/sambal-cle/page_objects/job_scheduler.rb +121 -0
- data/lib/sambal-cle/page_objects/lessons.rb +361 -0
- data/lib/sambal-cle/page_objects/login.rb +28 -0
- data/lib/sambal-cle/page_objects/matrix.rb +241 -0
- data/lib/sambal-cle/page_objects/media_gallery.rb +13 -0
- data/lib/sambal-cle/page_objects/messages.rb +622 -0
- data/lib/sambal-cle/page_objects/my_workspace.rb +44 -0
- data/lib/sambal-cle/page_objects/news.rb +8 -0
- data/lib/sambal-cle/page_objects/podcasts.rb +27 -0
- data/lib/sambal-cle/page_objects/polls.rb +69 -0
- data/lib/sambal-cle/page_objects/portfolio_templates.rb +161 -0
- data/lib/sambal-cle/page_objects/portfolios.rb +162 -0
- data/lib/sambal-cle/page_objects/post_em.rb +1 -0
- data/lib/sambal-cle/page_objects/profile.rb +51 -0
- data/lib/sambal-cle/page_objects/profile2.rb +344 -0
- data/lib/sambal-cle/page_objects/public_search.rb +61 -0
- data/lib/sambal-cle/page_objects/realms.rb +19 -0
- data/lib/sambal-cle/page_objects/resources.rb +326 -0
- data/lib/sambal-cle/page_objects/resources_roster.rb +0 -0
- data/lib/sambal-cle/page_objects/rosters.rb +70 -0
- data/lib/sambal-cle/page_objects/rwiki.rb +34 -0
- data/lib/sambal-cle/page_objects/search.rb +34 -0
- data/lib/sambal-cle/page_objects/sections.rb +295 -0
- data/lib/sambal-cle/page_objects/single_user.rb +1 -0
- data/lib/sambal-cle/page_objects/site_setup.rb +621 -0
- data/lib/sambal-cle/page_objects/site_statistics.rb +1 -0
- data/lib/sambal-cle/page_objects/sites.rb +255 -0
- data/lib/sambal-cle/page_objects/styles.rb +74 -0
- data/lib/sambal-cle/page_objects/syllabus.rb +166 -0
- data/lib/sambal-cle/page_objects/user_membership.rb +57 -0
- data/lib/sambal-cle/page_objects/users.rb +88 -0
- data/lib/sambal-cle/randomizers.rb +117 -0
- data/lib/sambal-cle/rich_text.rb +38 -0
- data/lib/sambal-cle/utilities.rb +31 -0
- data/lib/sambal-cle/workflows.rb +223 -0
- data/lib/sambal-cle.rb +31 -0
- data/sambal-cle.gemspec +14 -0
- data/test/add_assignment_to_calendar_spec.rb +86 -0
- data/test/assignment_announcements_spec.rb +71 -0
- data/test/assignment_gradebook_spec.rb +98 -0
- data/test/config.yml.template +4 -0
- data/test/directory.yml.template +123 -0
- data/test/duplicate_site_spec.rb +244 -0
- metadata +167 -0
@@ -0,0 +1,622 @@
|
|
1
|
+
class Messages < BasePage
|
2
|
+
|
3
|
+
frame_element
|
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)
|
176
|
+
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
|
187
|
+
|
188
|
+
# Creates an array consisting of the
|
189
|
+
# message subject lines.
|
190
|
+
def subjects
|
191
|
+
titles = []
|
192
|
+
messages = frm.table(:id=>"prefs_pvt_form:pvtmsgs")
|
193
|
+
1.upto(messages.rows.size-1) do |x|
|
194
|
+
titles << messages.row(:index=>x).a.title
|
195
|
+
end
|
196
|
+
return titles
|
197
|
+
end
|
198
|
+
|
199
|
+
# Returns an Array object containing the
|
200
|
+
# subjects of the displayed messages that are
|
201
|
+
# marked unread.
|
202
|
+
def unread_messages
|
203
|
+
# TODO - Write this method
|
204
|
+
end
|
205
|
+
|
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
|
+
end
|
218
|
+
|
219
|
+
# Page for the Contents of a Custom Folder for Messages
|
220
|
+
class FolderList < BasePage
|
221
|
+
|
222
|
+
frame_element
|
223
|
+
|
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
|
255
|
+
|
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
|
272
|
+
|
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
|
283
|
+
|
284
|
+
def unread_messages
|
285
|
+
# TODO - Write this method
|
286
|
+
end
|
287
|
+
|
288
|
+
def move
|
289
|
+
frm.link(:text, "Move").click
|
290
|
+
MoveMessageTo.new(@browser)
|
291
|
+
end
|
292
|
+
|
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 }
|
296
|
+
|
297
|
+
end
|
298
|
+
|
299
|
+
# Page that appears when you want to move a message
|
300
|
+
# from one folder to another.
|
301
|
+
class MoveMessageTo < BasePage
|
302
|
+
|
303
|
+
frame_element
|
304
|
+
|
305
|
+
def move_messages
|
306
|
+
frm.button(:value=>"Move Messages").click
|
307
|
+
Messages.new(@browser)
|
308
|
+
end
|
309
|
+
|
310
|
+
# Method for selecting any custom folders
|
311
|
+
# present on the screen--and *only* the custom
|
312
|
+
# folders. Count begins with "1" for the first custom
|
313
|
+
# folder listed.
|
314
|
+
def select_custom_folder_num(num)
|
315
|
+
frm.radio(:index=>num.to_i+3).set
|
316
|
+
end
|
317
|
+
|
318
|
+
element(:received) { |b| b.frm.radio(:name=>"pvtMsgMove:_id16:0:privateForums:0:_id19") }
|
319
|
+
element(:sent) { |b| b.frm.radio(:name=>"pvtMsgMove:_id16:0:privateForums:1:_id19") }
|
320
|
+
element(:deleted) { |b| b.frm.radio(:name=>"pvtMsgMove:_id16:0:privateForums:2:_id19") }
|
321
|
+
element(:draft) { |b| b.frm.radio(:name=>"pvtMsgMove:_id16:0:privateForums:3:_id19") }
|
322
|
+
|
323
|
+
end
|
324
|
+
|
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
|
+
# The Page where you are reading a Message.
|
419
|
+
class MessageView < BasePage
|
420
|
+
|
421
|
+
frame_element
|
422
|
+
|
423
|
+
# Returns the contents of the message body.
|
424
|
+
def message_text
|
425
|
+
frm.div(:class=>"textPanel").text
|
426
|
+
end
|
427
|
+
|
428
|
+
def reply
|
429
|
+
frm.button(:value=>"Reply").click
|
430
|
+
ReplyToMessage.new(@browser)
|
431
|
+
end
|
432
|
+
|
433
|
+
def forward
|
434
|
+
frm.button(:value=>"Forward ").click
|
435
|
+
ForwardMessage.new(@browser)
|
436
|
+
end
|
437
|
+
|
438
|
+
def received
|
439
|
+
frm.link(:text=>"Received").click
|
440
|
+
MessagesReceivedList.new(@browser)
|
441
|
+
end
|
442
|
+
|
443
|
+
# Clicks the "Messages" breadcrumb link to return
|
444
|
+
# to the top level of Messages. Then instantiates
|
445
|
+
# the Messages class.
|
446
|
+
def messages
|
447
|
+
frm.link(:text=>"Messages").click
|
448
|
+
Messages.new(@browser)
|
449
|
+
end
|
450
|
+
end
|
451
|
+
|
452
|
+
class ComposeMessage < BasePage
|
453
|
+
|
454
|
+
frame_element
|
455
|
+
|
456
|
+
def send
|
457
|
+
frm.button(:value=>"Send ").click
|
458
|
+
Messages.new(@browser)
|
459
|
+
end
|
460
|
+
|
461
|
+
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)
|
475
|
+
end
|
476
|
+
|
477
|
+
action(:save_draft) {|b| b.frm.button(:value=>"Save Draft").click }
|
478
|
+
element(:send_to) { |b| b.frm.select(:id=>"compose:list1") }
|
479
|
+
element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
|
480
|
+
element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
|
481
|
+
|
482
|
+
end
|
483
|
+
|
484
|
+
class ReplyToMessage < BasePage
|
485
|
+
include FCKEditor
|
486
|
+
frame_element
|
487
|
+
|
488
|
+
expected_element :editor
|
489
|
+
|
490
|
+
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
|
502
|
+
|
503
|
+
def message_text=(text)
|
504
|
+
editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
|
505
|
+
editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
506
|
+
end
|
507
|
+
|
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 }
|
519
|
+
element(:select_additional_recipients) { |b| b.frm.select(:id=>"compose:list1") }
|
520
|
+
element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
|
521
|
+
element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
|
522
|
+
|
523
|
+
end
|
524
|
+
|
525
|
+
# The page for composing a message
|
526
|
+
class ForwardMessage < BasePage
|
527
|
+
|
528
|
+
frame_element
|
529
|
+
|
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
|
539
|
+
|
540
|
+
def add_attachments
|
541
|
+
frm.button(:value=>"Add attachments").click
|
542
|
+
MessagesAttachment.new(@browser)
|
543
|
+
end
|
544
|
+
|
545
|
+
def preview
|
546
|
+
frm.button(:value=>"Preview").click
|
547
|
+
MessagesPreview.new(@browser)
|
548
|
+
end
|
549
|
+
|
550
|
+
action(:save_draft) {|b| b.frm.button(:value=>"Save Draft").click }
|
551
|
+
element(:select_forward_recipients) { |b| b.frm.select(:id=>"pvtMsgForward:list1") }
|
552
|
+
element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
|
553
|
+
element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
|
554
|
+
|
555
|
+
end
|
556
|
+
|
557
|
+
# The page that appears when you select to
|
558
|
+
# Delete a message that is already inside
|
559
|
+
# the Deleted folder.
|
560
|
+
class MessageDeleteConfirmation < BasePage
|
561
|
+
|
562
|
+
frame_element
|
563
|
+
|
564
|
+
value(:alert_message_text) { |b| b.frm.span(:class=>"alertMessage").text }
|
565
|
+
|
566
|
+
def delete_messages
|
567
|
+
frm.button(:value=>"Delete Message(s)").click
|
568
|
+
MessagesDeletedList.new(@browser)
|
569
|
+
end
|
570
|
+
|
571
|
+
#FIXME
|
572
|
+
# Want eventually to have a method that will return
|
573
|
+
# an array of Message subjects
|
574
|
+
end
|
575
|
+
|
576
|
+
# The page for creating a new folder for Messages
|
577
|
+
class MessagesNewFolder < BasePage
|
578
|
+
|
579
|
+
frame_element
|
580
|
+
|
581
|
+
def add
|
582
|
+
frm.button(:value=>"Add").click
|
583
|
+
Messages.new(@browser)
|
584
|
+
end
|
585
|
+
|
586
|
+
element(:title) { |b| b.frm.text_field(:id=>"pvtMsgFolderAdd:title") }
|
587
|
+
|
588
|
+
end
|
589
|
+
|
590
|
+
# The page for editing a Message Folder's settings
|
591
|
+
class MessageFolderSettings < BasePage
|
592
|
+
|
593
|
+
frame_element
|
594
|
+
|
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
|
609
|
+
|
610
|
+
end
|
611
|
+
|
612
|
+
# Page that confirms you want to delete the custom messages folder.
|
613
|
+
class FolderDeleteConfirm < BasePage
|
614
|
+
|
615
|
+
frame_element
|
616
|
+
|
617
|
+
def delete
|
618
|
+
frm.button(:value=>"Delete").click
|
619
|
+
Messages.new(@browser)
|
620
|
+
end
|
621
|
+
|
622
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# The Page that appears when you are not in a particular Site
|
2
|
+
# Note that this page differs depending on what user is logged in.
|
3
|
+
# The definitions below include all potential objects. We may
|
4
|
+
# have to split this class out into user-specific classes.
|
5
|
+
class MyWorkspace < BasePage
|
6
|
+
|
7
|
+
frame_element
|
8
|
+
|
9
|
+
# Because the links below are contained within iframes
|
10
|
+
# we need the in_frame method in place so that the
|
11
|
+
# links can be properly parsed in the PageObject
|
12
|
+
# methods for them.
|
13
|
+
# Note that the iframes are being identified by their
|
14
|
+
# index values on the page. This is a very brittle
|
15
|
+
# method for identifying them, but for now it's our
|
16
|
+
# only option because both the <id> and <name>
|
17
|
+
# tags are unique for every site.
|
18
|
+
# Calendar Options button
|
19
|
+
action(:calendar_options) { |b| b.frm.link(:text=>"Options").click }
|
20
|
+
|
21
|
+
# My Workspace Information Options
|
22
|
+
action(:my_workspace_information_options) { |b| b.frm.link(:text=>"Options").click }
|
23
|
+
# Message of the Day, Options button
|
24
|
+
action(:message_of_the_day_options) { |b| b.frm.link(:text=>"Options").click }
|
25
|
+
|
26
|
+
|
27
|
+
element(:select_page_size) { |b| b.frm.select_list(:id=>"selectPageSize").click }
|
28
|
+
action(:next) { |b| b.frm.button(:name=>"eventSubmit_doList_next").click }
|
29
|
+
action(:last) { |b| b.frm.button(:name=>"eventSubmit_doList_last").click }
|
30
|
+
action(:previous) { |b| b.frm.button(:name=>"eventSubmit_doList_prev").click }
|
31
|
+
action(:first) { |b| b.frm.button(:name=>"eventSubmit_doList_first").click }
|
32
|
+
|
33
|
+
# Returns an array of strings of the Calendar Events listed below
|
34
|
+
# the Calendar
|
35
|
+
def calendar_events
|
36
|
+
events = []
|
37
|
+
table = @browser.frame(:class=>"portletMainIframe", :index=>2).table(:id=>"calendarForm:datalist_event_list")
|
38
|
+
table.wait_until_present
|
39
|
+
table.rows.each do |row|
|
40
|
+
events << row.link.text
|
41
|
+
end
|
42
|
+
return events
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#===============
|
2
|
+
# Podcast pages
|
3
|
+
#================
|
4
|
+
|
5
|
+
#
|
6
|
+
class Podcasts < BasePage
|
7
|
+
|
8
|
+
frame_element
|
9
|
+
|
10
|
+
def add
|
11
|
+
frm.link(:text=>"Add").click
|
12
|
+
AddEditPodcast.new(@browser)
|
13
|
+
end
|
14
|
+
|
15
|
+
def podcast_titles
|
16
|
+
titles = []
|
17
|
+
frm.spans.each do |span|
|
18
|
+
if span.class_name == "podTitleFormat"
|
19
|
+
titles << span.text
|
20
|
+
end
|
21
|
+
end
|
22
|
+
return titles
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
end
|