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.
Files changed (90) hide show
  1. data/README.md +4 -0
  2. data/lib/sambal-cle/base_page.rb +20 -0
  3. data/lib/sambal-cle/core-ext.rb +90 -0
  4. data/lib/sambal-cle/data_objects/announcement.rb +82 -0
  5. data/lib/sambal-cle/data_objects/assessment.rb +32 -0
  6. data/lib/sambal-cle/data_objects/assignment.rb +205 -0
  7. data/lib/sambal-cle/data_objects/blog.rb +46 -0
  8. data/lib/sambal-cle/data_objects/blogger.rb +49 -0
  9. data/lib/sambal-cle/data_objects/chat_room.rb +54 -0
  10. data/lib/sambal-cle/data_objects/event.rb +89 -0
  11. data/lib/sambal-cle/data_objects/forum.rb +212 -0
  12. data/lib/sambal-cle/data_objects/lesson.rb +185 -0
  13. data/lib/sambal-cle/data_objects/message.rb +57 -0
  14. data/lib/sambal-cle/data_objects/poll.rb +74 -0
  15. data/lib/sambal-cle/data_objects/resource.rb +209 -0
  16. data/lib/sambal-cle/data_objects/site.rb +295 -0
  17. data/lib/sambal-cle/data_objects/syllabus.rb +73 -0
  18. data/lib/sambal-cle/data_objects/web_content_tool.rb +51 -0
  19. data/lib/sambal-cle/data_objects/wiki.rb +63 -0
  20. data/lib/sambal-cle/date_makers.rb +118 -0
  21. data/lib/sambal-cle/gem_ext.rb +23 -0
  22. data/lib/sambal-cle/page_helper.rb +22 -0
  23. data/lib/sambal-cle/page_maker.rb +48 -0
  24. data/lib/sambal-cle/page_objects/account.rb +111 -0
  25. data/lib/sambal-cle/page_objects/aliases.rb +43 -0
  26. data/lib/sambal-cle/page_objects/announcements.rb +190 -0
  27. data/lib/sambal-cle/page_objects/assessments.rb +874 -0
  28. data/lib/sambal-cle/page_objects/assignments.rb +770 -0
  29. data/lib/sambal-cle/page_objects/basic_lti.rb +6 -0
  30. data/lib/sambal-cle/page_objects/blogger.rb +205 -0
  31. data/lib/sambal-cle/page_objects/blogs.rb +60 -0
  32. data/lib/sambal-cle/page_objects/calendar.rb +330 -0
  33. data/lib/sambal-cle/page_objects/calendar_summary.rb +1 -0
  34. data/lib/sambal-cle/page_objects/chat_room.rb +22 -0
  35. data/lib/sambal-cle/page_objects/drop_box.rb +9 -0
  36. data/lib/sambal-cle/page_objects/email_archive.rb +22 -0
  37. data/lib/sambal-cle/page_objects/entity_picker.rb +62 -0
  38. data/lib/sambal-cle/page_objects/evaluations.rb +158 -0
  39. data/lib/sambal-cle/page_objects/feedback.rb +36 -0
  40. data/lib/sambal-cle/page_objects/forms.rb +120 -0
  41. data/lib/sambal-cle/page_objects/forums.rb +254 -0
  42. data/lib/sambal-cle/page_objects/glossary.rb +117 -0
  43. data/lib/sambal-cle/page_objects/gradebook.rb +29 -0
  44. data/lib/sambal-cle/page_objects/gradebook2.rb +17 -0
  45. data/lib/sambal-cle/page_objects/home.rb +36 -0
  46. data/lib/sambal-cle/page_objects/jforums.rb +444 -0
  47. data/lib/sambal-cle/page_objects/job_scheduler.rb +121 -0
  48. data/lib/sambal-cle/page_objects/lessons.rb +361 -0
  49. data/lib/sambal-cle/page_objects/login.rb +28 -0
  50. data/lib/sambal-cle/page_objects/matrix.rb +241 -0
  51. data/lib/sambal-cle/page_objects/media_gallery.rb +13 -0
  52. data/lib/sambal-cle/page_objects/messages.rb +622 -0
  53. data/lib/sambal-cle/page_objects/my_workspace.rb +44 -0
  54. data/lib/sambal-cle/page_objects/news.rb +8 -0
  55. data/lib/sambal-cle/page_objects/podcasts.rb +27 -0
  56. data/lib/sambal-cle/page_objects/polls.rb +69 -0
  57. data/lib/sambal-cle/page_objects/portfolio_templates.rb +161 -0
  58. data/lib/sambal-cle/page_objects/portfolios.rb +162 -0
  59. data/lib/sambal-cle/page_objects/post_em.rb +1 -0
  60. data/lib/sambal-cle/page_objects/profile.rb +51 -0
  61. data/lib/sambal-cle/page_objects/profile2.rb +344 -0
  62. data/lib/sambal-cle/page_objects/public_search.rb +61 -0
  63. data/lib/sambal-cle/page_objects/realms.rb +19 -0
  64. data/lib/sambal-cle/page_objects/resources.rb +326 -0
  65. data/lib/sambal-cle/page_objects/resources_roster.rb +0 -0
  66. data/lib/sambal-cle/page_objects/rosters.rb +70 -0
  67. data/lib/sambal-cle/page_objects/rwiki.rb +34 -0
  68. data/lib/sambal-cle/page_objects/search.rb +34 -0
  69. data/lib/sambal-cle/page_objects/sections.rb +295 -0
  70. data/lib/sambal-cle/page_objects/single_user.rb +1 -0
  71. data/lib/sambal-cle/page_objects/site_setup.rb +621 -0
  72. data/lib/sambal-cle/page_objects/site_statistics.rb +1 -0
  73. data/lib/sambal-cle/page_objects/sites.rb +255 -0
  74. data/lib/sambal-cle/page_objects/styles.rb +74 -0
  75. data/lib/sambal-cle/page_objects/syllabus.rb +166 -0
  76. data/lib/sambal-cle/page_objects/user_membership.rb +57 -0
  77. data/lib/sambal-cle/page_objects/users.rb +88 -0
  78. data/lib/sambal-cle/randomizers.rb +117 -0
  79. data/lib/sambal-cle/rich_text.rb +38 -0
  80. data/lib/sambal-cle/utilities.rb +31 -0
  81. data/lib/sambal-cle/workflows.rb +223 -0
  82. data/lib/sambal-cle.rb +31 -0
  83. data/sambal-cle.gemspec +14 -0
  84. data/test/add_assignment_to_calendar_spec.rb +86 -0
  85. data/test/assignment_announcements_spec.rb +71 -0
  86. data/test/assignment_gradebook_spec.rb +98 -0
  87. data/test/config.yml.template +4 -0
  88. data/test/directory.yml.template +123 -0
  89. data/test/duplicate_site_spec.rb +244 -0
  90. 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,8 @@
1
+ #================
2
+ # News pages
3
+ #================
4
+ #
5
+ class News < BasePage
6
+
7
+ frame_element
8
+ 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