sambal-cle 0.1.3 → 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 (53) hide show
  1. data/README.md +3 -1
  2. data/lib/sambal-cle/base_page.rb +3 -1
  3. data/lib/sambal-cle/data_objects/announcement.rb +7 -10
  4. data/lib/sambal-cle/data_objects/assessment.rb +265 -9
  5. data/lib/sambal-cle/data_objects/assignment.rb +38 -32
  6. data/lib/sambal-cle/data_objects/assignment_permissions.rb +61 -0
  7. data/lib/sambal-cle/data_objects/assignment_submission.rb +126 -0
  8. data/lib/sambal-cle/data_objects/blog.rb +4 -7
  9. data/lib/sambal-cle/data_objects/blogger.rb +4 -10
  10. data/lib/sambal-cle/data_objects/chat_room.rb +5 -8
  11. data/lib/sambal-cle/data_objects/event.rb +6 -17
  12. data/lib/sambal-cle/data_objects/forum.rb +9 -19
  13. data/lib/sambal-cle/data_objects/lesson.rb +8 -29
  14. data/lib/sambal-cle/data_objects/message.rb +7 -10
  15. data/lib/sambal-cle/data_objects/poll.rb +6 -11
  16. data/lib/sambal-cle/data_objects/resource.rb +28 -37
  17. data/lib/sambal-cle/data_objects/site.rb +6 -17
  18. data/lib/sambal-cle/data_objects/syllabus.rb +6 -8
  19. data/lib/sambal-cle/data_objects/user.rb +88 -0
  20. data/lib/sambal-cle/data_objects/web_content_tool.rb +5 -6
  21. data/lib/sambal-cle/data_objects/wiki.rb +6 -6
  22. data/lib/sambal-cle/page_objects/account.rb +0 -2
  23. data/lib/sambal-cle/page_objects/announcements.rb +0 -1
  24. data/lib/sambal-cle/page_objects/assessments.rb +57 -87
  25. data/lib/sambal-cle/page_objects/assignments.rb +117 -337
  26. data/lib/sambal-cle/page_objects/calendar.rb +0 -2
  27. data/lib/sambal-cle/page_objects/login.rb +3 -9
  28. data/lib/sambal-cle/page_objects/sections.rb +2 -3
  29. data/lib/sambal-cle/page_objects/site_setup.rb +9 -19
  30. data/lib/sambal-cle/rich_text.rb +6 -0
  31. data/lib/sambal-cle/utilities.rb +4 -10
  32. data/lib/sambal-cle/workflows.rb +1 -5
  33. data/lib/sambal-cle.rb +2 -10
  34. data/sambal-cle.gemspec +7 -8
  35. data/test/add_assignment_to_calendar_spec.rb +14 -15
  36. data/test/assessment_create_spec.rb +355 -0
  37. data/test/assignment_announcements_spec.rb +14 -15
  38. data/test/assignment_duplicate_spec.rb +56 -0
  39. data/test/assignment_gradebook_spec.rb +16 -15
  40. data/test/assignment_permissions_spec.rb +77 -0
  41. data/test/assignments_grading_spec.rb +123 -0
  42. data/test/assignments_submission_spec.rb +143 -0
  43. data/test/config.yml +3 -0
  44. data/test/directory.yml +120 -0
  45. data/test/duplicate_site_spec.rb +5 -3
  46. data/test/import_site_content_spec.rb +248 -0
  47. metadata +22 -31
  48. data/lib/sambal-cle/core-ext.rb +0 -90
  49. data/lib/sambal-cle/date_makers.rb +0 -118
  50. data/lib/sambal-cle/gem_ext.rb +0 -23
  51. data/lib/sambal-cle/page_helper.rb +0 -22
  52. data/lib/sambal-cle/page_maker.rb +0 -48
  53. data/lib/sambal-cle/randomizers.rb +0 -117
@@ -1,4 +1,3 @@
1
-
2
1
  #================
3
2
  # Assignments Pages
4
3
  #================
@@ -175,6 +174,8 @@ class AssignmentsList < AssignmentsBase
175
174
  listview_elements
176
175
  alias :add :add_assignment
177
176
 
177
+ expected_element :page_title
178
+
178
179
  # Returns an array of the displayed assignment titles.
179
180
  # Use for verification of test steps.
180
181
  def assignments_titles
@@ -183,7 +184,7 @@ class AssignmentsList < AssignmentsBase
183
184
  1.upto(a_table.rows.size-1) do |x|
184
185
  titles << a_table[x][1].h4(:index=>0).text
185
186
  end
186
- return titles
187
+ titles
187
188
  end
188
189
  alias assignment_titles assignments_titles
189
190
  alias assignment_list assignments_titles
@@ -191,79 +192,52 @@ class AssignmentsList < AssignmentsBase
191
192
 
192
193
  # Clicks the Edit link for the assignment with the specified
193
194
  # id, then instantiates the AssignmentAdd page class.
194
- def edit_assignment_id(id)
195
- frm.link(:href=>/#{Regexp.escape(id)}/).click
196
- AssignmentAdd.new(@browser)
197
- end
195
+ page_method(:edit_assignment_id) { |id, b| b.frm.link(:href=>/#{Regexp.escape(id)}/).click }
198
196
 
199
197
  # Clicks the Edit link for the Assignment specified.
200
198
  # next is the AssignmentAdd page class.
201
- def edit_assignment(assignment_name)
202
- index = assignments_titles.index(assignment_name)
203
- frm.link(:text=>"Edit", :index=>index).click
204
- end
199
+ page_method(:edit_assignment) { |assignment_name, b|
200
+ index = b.assignments_titles.index(assignment_name)
201
+ b.frm.link(:text=>"Edit", :index=>index).click
202
+ }
205
203
 
206
204
  # Checks the appropriate checkbox, based on the specified assignment_name
207
205
  # Then clicks the Update button and confirms the deletion request.
208
- # It then reinstantiates the AssignmentsList class because of the page
209
- # update.
210
- def delete_assignment(assignment_name)
211
- frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(assignment_name)}/).checkbox(:name=>"selectedAssignments").set
212
- frm.button(:value=>"Update").click
213
- frm.button(:value=>"Delete").click
214
- AssignmentsList.new(@browser)
215
- end
206
+ page_method(:delete) { |assignment_name, b|
207
+ b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).checkbox(:name=>"selectedAssignments").set
208
+ b.frm.button(:value=>"Update").click
209
+ b.frm.button(:value=>"Delete").click
210
+ }
216
211
 
217
212
  # Clicks on the Duplicate link for the Assignment specified.
218
213
  # Then instantiates the AssignmentsList page class.
219
- def duplicate_assignment(assignment_name)
220
- index = assignments_titles.index(assignment_name)
221
- frm.link(:text=>"Duplicate", :index=>index).click
222
- AssignmentsList.new(@browser)
223
- end
214
+ page_method(:duplicate) { |assignment_name, b|
215
+ index = b.assignments_titles.index(assignment_name)
216
+ b.frm.link(:text=>"Duplicate", :index=>index).click
217
+ }
224
218
 
225
219
  # Gets the assignment id from the href of the specified
226
220
  # Assignment link.
227
- def get_assignment_id(assignment_name)
228
- assignment_href(assignment_name) =~ /(?<=\/a\/\S{36}\/).+(?=&pan)/
229
- return $~.to_s
230
- end
231
-
232
- def assignment_href(name)
233
- frm.link(:text=>/#{Regexp.escape(name)}/).href
234
- end
221
+ page_method(:get_assignment_id) { |assignment_name, b| b.assignment_href(assignment_name) =~ /(?<=\/a\/\S{36}\/).+(?=&pan)/; $~.to_s }
222
+ page_method(:assignment_href) { |name, b| b.frm.link(:text=>/#{Regexp.escape(name)}/).href }
235
223
 
236
224
  # Checks the checkbox for the specified Assignment,
237
225
  # using the assignment id as the identifier.
238
- def check_assignment(id) #FIXME to use name instead of id.
239
- frm.checkbox(:value, /#{id}/).set
240
- end
241
-
242
- # Opens the specified assignment for viewing
243
- def open_assignment(assignment_name)
244
- frm.link(:text=>assignment_name).click
245
- end
226
+ page_method(:check_assignment) { |id,b| b.frm.checkbox(:value, /#{id}/).set } #FIXME to use name instead of id.
227
+ page_method(:open_assignment) { |assignment_name, b| b.frm.link(:text=>assignment_name).click }
246
228
 
247
229
  # Gets the contents of the status column
248
230
  # for the specified assignment
249
- def status_of(assignment_name)
250
- frm.table(:class=>/listHier lines/).row(:text=>/#{Regexp.escape(assignment_name)}/).td(:headers=>"status").text
251
- end
231
+ page_method(:status_of) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).td(:headers=>"status").text }
252
232
 
253
233
  # Clicks the View Submissions link for the specified
254
234
  # Assignment, then instantiates the AssignmentSubmissionList
255
235
  # page class.
256
- def view_submissions_for(assignment_name)
257
- frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"View Submissions").click
258
- AssignmentSubmissionList.new(@browser)
259
- end
236
+ page_method(:view_submissions_for) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"View Submissions").click }
260
237
 
261
238
  # Clicks the Grade link for the specified Assignment,
262
239
  # then instantiates the AssignmentSubmissionList page class.
263
- def grade(assignment_name)
264
- frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"Grade").click
265
- AssignmentSubmissionList.new(@browser)
266
- end
240
+ page_method(:grade) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"Grade").click }
267
241
 
268
242
  action(:sort_assignment_title) { |b| b.frm.link(:text=>"Assignment title").click }
269
243
  action(:sort_status) { |b| b.frm.link(:text=>"Status").click }
@@ -275,6 +249,9 @@ class AssignmentsList < AssignmentsBase
275
249
  element(:view) { |b| b.frm.select(:id=>"view") }
276
250
  action(:update) { |b| b.frm.button(:name=>"eventSubmit_doDelete_confirm_assignment").click }
277
251
 
252
+ element(:assignments_table) { |b| b.frm.table(:class=>"listHier lines nolines") }
253
+ element(:page_title) { |b| b.frm.div(:class=>"portletBody").h3(:text=>"Assignment List") }
254
+
278
255
  end
279
256
 
280
257
  # The Permissions Page in Assignments
@@ -284,47 +261,18 @@ class AssignmentsPermissions < AssignmentsBase
284
261
  # the AssignmentsList page class.
285
262
  action(:save) {|b| b.frm.button(:value=>"Save").click }
286
263
 
287
- element(:evaluators_share_drafts) { |b| b.frm.checkbox(:id=>"Evaluatorasn.share.drafts") }
288
- element(:organizers_share_drafts) { |b| b.frm.checkbox(:id=>"Organizerasn.share.drafts") }
289
-
290
- element(:guests_all_groups) { |b| b.frm.checkbox(:id=>"Guestasn.all.groups") }
291
- element(:guests_create_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.new") }
292
- element(:guests_submit_to_assigments) { |b| b.frm.checkbox(:id=>"Guestasn.submit") }
293
- element(:guests_delete_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.delete") }
294
- element(:guests_read_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.read") }
295
- element(:guests_revise_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.revise") }
296
- element(:guests_grade_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.grade") }
297
- element(:guests_receive_notifications) { |b| b.frm.checkbox(:id=>"Guestasn.receive.notifications") }
298
- element(:guests_share_drafts) { |b| b.frm.checkbox(:id=>"Guestasn.share.drafts") }
299
- element(:instructors_all_groups) { |b| b.frm.checkbox(:id=>"Instructorasn.all.groups") }
300
- element(:instructors_create_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.new") }
301
- element(:instructors_submit_to_assigments) { |b| b.frm.checkbox(:id=>"Instructorasn.submit") }
302
- element(:instructors_delete_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.delete") }
303
- element(:instructors_read_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.read") }
304
- element(:instructors_revise_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.revise") }
305
- element(:instructors_grade_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.grade") }
306
- element(:instructors_receive_notifications) { |b| b.frm.checkbox(:id=>"Instructorasn.receive.notifications") }
307
- element(:instructors_share_drafts) { |b| b.frm.checkbox(:id=>"Instructorasn.share.drafts") }
308
- element(:students_all_groups) { |b| b.frm.checkbox(:id=>"Studentasn.all.groups") }
309
- element(:students_create_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.new") }
310
- element(:students_submit_to_assigments) { |b| b.frm.checkbox(:id=>"Studentasn.submit") }
311
- element(:students_delete_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.delete") }
312
- element(:students_read_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.read") }
313
- element(:students_revise_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.revise") }
314
- element(:students_grade_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.grade") }
315
- element(:students_receive_notifications) { |b| b.frm.checkbox(:id=>"Studentasn.receive.notifications") }
316
- element(:students_share_drafts) { |b| b.frm.checkbox(:id=>"Studentasn.share.drafts") }
317
- element(:tas_all_groups) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.all.groups") }
318
- element(:tas_create_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.new") }
319
- element(:tas_submit_to_assigments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.submit") }
320
- element(:tas_delete_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.delete") }
321
- element(:tas_read_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.read") }
322
- element(:tas_revise_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.revise") }
323
- element(:tas_grade_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.grade") }
324
- element(:tas_receive_notifications) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.receive.notifications") }
325
- element(:tas_share_drafts) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.share.drafts") }
264
+ def self.chekbocks(*method_names)
265
+ method_names.each do |method_name|
266
+ define_method method_name do |role|
267
+ self.frm.checkbox(:id=>"#{role}asn.#{method_name.to_s.gsub("_", ".")}")
268
+ end
269
+ end
270
+ end
271
+
272
+ chekbocks :all_groups, :new, :submit, :delete, :read, :revise, :grade, :receive_notifications, :share_drafts
273
+
326
274
  action(:undo_changes) { |b| b.frm.link(:text=>"Undo changes").click }
327
- action(:cancel) { |b| b.frm.button(:id=>"eventSubmit_doCancel").click }
275
+ action(:cancel) { |b| b.frm.button(:name=>"eventSubmit_doCancel").click }
328
276
  action(:permission) { |b| b.frm.link(:text=>"Permission").click }
329
277
  action(:guest) { |b| b.frm.link(:text=>"Guest").click }
330
278
  action(:instructor) { |b| b.frm.link(:text=>"Instructor").click }
@@ -343,54 +291,36 @@ class AssignmentsPermissions < AssignmentsBase
343
291
  end
344
292
 
345
293
  # Page that appears when you click to preview an Assignment
294
+ # as an instructor user. Note that the primary difference
295
+ # between this class and AssignmentsView is that there are
296
+ # instructor-specific buttons and menu options that don't
297
+ # appear for student users.
346
298
  class AssignmentsPreview < AssignmentsBase
347
299
 
348
300
  menu_elements
349
-
350
- # Returns the text content of the page header
351
- def header
352
- frm.div(:class=>"portletBody").h3.text
353
- end
354
-
355
- # Returns a hash object containing the contents of the Item Summary table.
356
- # The hash's Key is the header column and the value is the content column.
357
- def item_summary
358
- hash = {}
359
- frm.table(:class=>"itemSummary").rows.each do |row|
360
- hash.store(row.th.text, row.td.text)
301
+ basic_page_elements # Needed for the header method
302
+
303
+ # returns a hash containing the info in the Summary table.
304
+ # Header fields are the keys and their associated tds are the values.
305
+ def summary_info
306
+ hash={}
307
+ array = frm.table(:class=>"itemSummary").to_a
308
+ array.each do |subarray|
309
+ hash.store(subarray[0], subarray[1])
361
310
  end
362
- return hash
311
+ hash
363
312
  end
364
313
 
365
314
  # Grabs the Assignment Instructions text.
366
- def assignment_instructions
367
- frm.div(:class=>"textPanel").text
368
- end
315
+ value(:instructions) { |b| b.frm.div(:class=>"textPanel").text }
369
316
 
370
317
  # Grabs the instructor comments text.
371
- def instructor_comments
372
- frm.div(:class=>"portletBody").div(:class=>"textPanel", :index=>2).text
373
- end
374
-
375
- #
376
- def back_to_list
377
- frm.button(:value=>"Back to list").click
378
- AssignmentsList.new(@browser)
379
- end
318
+ value(:instructor_comments) { |b| b.frm.div(:class=>"portletBody").div(:class=>"textPanel", :index=>2).text }
380
319
 
381
- # Clicks the Post button, then instantiates
382
- # the AssignmentsList page class.
383
- def post
384
- frm.button(:name=>"post").click
385
- AssignmentsList.new(@browser)
386
- end
320
+ action(:back_to_list) { |b| b.frm.button(:value=>"Back to list").click }
387
321
 
388
- # Clicks the Cancel button and instantiates the
389
- # AssignmentsList Class.
390
- def cancel
391
- frm.button(:value=>"Cancel").click
392
- AssignmentsList.new(@browser)
393
- end
322
+ # Clicks the Post button.
323
+ action(:post) { |b| b.frm.button(:name=>"post").click }
394
324
 
395
325
  element(:assignment_id) { |b| b.frm.hidden(:name=>"assignmentId") }
396
326
  action(:hide_assignment) { |b| b.frm.link(:href=>/doHide_preview_assignment_assignment/).click }
@@ -407,21 +337,9 @@ end
407
337
  class AssignmentsReorder < AssignmentsBase
408
338
 
409
339
  menu_elements
340
+ basic_page_elements
410
341
 
411
- # Clicks the Save button, then instantiates
412
- # the AssignmentsList page class.
413
- def save
414
- frm.button(:value=>"Save").click
415
- AssignmentsList.new(@browser)
416
- end
417
-
418
- # Clicks the Cancel button, then instantiates
419
- # the AssignmentsList Class.
420
- def cancel
421
- frm.button(:value=>"Cancel").click
422
- AssignmentsList.new(@browser)
423
- end
424
-
342
+ action(:save) { |b| b.frm.button(:value=>"Save").click }
425
343
  action(:sort_by_title) { |b| b.frm.link(:text=>"Sort by title").click }
426
344
  action(:sort_by_open_date) { |b| b.frm.link(:text=>"Sort by open date").click }
427
345
  action(:sort_by_due_date) { |b| b.frm.link(:text=>"Sort by due date").click }
@@ -431,169 +349,65 @@ class AssignmentsReorder < AssignmentsBase
431
349
  end
432
350
 
433
351
  # A Student user's page for editing/submitting/view an assignment.
434
- class AssignmentStudent < BasePage
352
+ class AssignmentStudentView < BasePage
435
353
 
354
+ include FCKEditor
436
355
  frame_element
356
+ basic_page_elements
437
357
 
438
- # Returns the text content of the page header
439
- def header
440
- frm.div(:class=>"portletBody").h3.text
441
- end
442
-
443
- # Returns a hash object containing the contents of the Item Summary table.
444
- # The hash's Key is the header column and the value is the content column.
445
- def item_summary
446
- hash = {}
447
- frm.table(:class=>"itemSummary").rows.each do |row|
448
- hash.store(row.th.text, row.td.text)
358
+ def summary_info
359
+ hash={}
360
+ array = frm.table(:class=>"itemSummary").to_a
361
+ array.each do |subarray|
362
+ hash.store(subarray[0], subarray[1])
449
363
  end
450
- return hash
364
+ hash
451
365
  end
452
366
 
453
- # Grabs the instructor comments text.
454
- def instructor_comments
455
- frm.div(:class=>"portletBody").div(:class=>"textPanel", :index=>2).text
456
- end
367
+ element(:editor) { |b| b.frm.frame(:id, "Assignment.view_submission_text___Frame") }
457
368
 
458
369
  # Enters the specified text into the Assignment Text FCKEditor.
459
370
  def assignment_text=(text)
460
- frm.frame(:id, "Assignment.view_submission_text___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
371
+ remove_assignment_text
372
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
461
373
  end
462
374
 
463
375
  # Clears out any existing text from the Assignment Text FCKEditor.
464
376
  def remove_assignment_text
465
- frm.frame(:id, "Assignment.view_submission_text___Frame").div(:title=>"Select All").fire_event("onclick")
466
- frm.frame(:id, "Assignment.view_submission_text___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys :backspace
377
+ select_all(editor)
378
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys :backspace
467
379
  end
468
380
 
469
- # This class variable allows adding an arbitrary number of
470
- # files to the page, as long as the adding steps alternate between
471
- # selecting the file and clicking the add more files button
472
- @@file_number = 0
473
-
474
- # Enters the specified file name into the file field. Entering the path
475
- # separately is optional.
476
- # Once the filename is entered in the field, the
477
- # @@file_number class variable is increased by one
478
- # in case any more files need to be added to the upload
479
- # list.
480
381
  def select_file(file_name, file_path="")
481
- frm.file_field(:id=>"clonableUpload", :name=>"upload#{@@file_number}").set(file_path + file_name)
482
- @@file_number += 1
483
- end
484
-
485
- # Clicks the Submit button, then instantiates
486
- # the appropriate page class, based on the
487
- # page that gets loaded.
488
- def submit
489
- frm.button(:value=>"Submit").click
490
- @@file_number=0
491
- if frm.div(:class=>"portletBody").h3.text=~/Submission Confirmation/
492
- SubmissionConfirmation.new(@browser)
493
- elsif frm.button(:value=>"Back to list").exist?
494
- SubmissionConfirmation.new(@browser)
495
- else
496
- AssessmentsList.new(@browser)
497
- end
498
- end
499
-
500
- # Clicks the Resubmit button, then instantiates
501
- # the appropriate page class, based on the
502
- # page that gets loaded.
503
- #
504
- # Resets @@file_number to zero so that file
505
- # uploads will work if this page is visited again
506
- # in the same script.
507
- def resubmit
508
- frm.button(:value=>"Resubmit").click
509
- @@file_number=0
510
- if frm.link(:text=>"Assignment title").exist?
511
- puts "list..."
512
- AssessmentsList.new(@browser)
513
- else
514
- SubmissionConfirmation.new(@browser)
515
- end
516
- end
517
-
518
- # Clicks the Preview button, then
519
- # instantiates the AssignmentStudentPreview page class.
520
- #
521
- # Resets @@file_number to zero so that file
522
- # uploads will work if this page is visited again
523
- # in the same script.
524
- def preview
525
- frm.button(:value=>"Preview").click
526
- @@file_number=0
527
- AssignmentStudentPreview.new(@browser)
528
- end
529
-
530
- # Clicks the Save Draft button, then
531
- # instantiates the SubmissionConfirmation
532
- # page class.
533
- def save_draft
534
- frm.button(:value=>"Save Draft").click
535
- SubmissionConfirmation.new(@browser)
536
- end
537
-
538
- # Clicks the link to select more files
539
- # from the Workspace. Then instantiates
540
- # the AssignmentAttachments page class.
541
- def select_more_files_from_workspace
542
- frm.link(:id=>"attach").click
543
- AssignmentAttachments.new(@browser)
544
- end
545
-
546
- # Clicks the Back to list button, then
547
- # instantiates the AssignmentList page class.
548
- def back_to_list
549
- frm.button(:value=>"Back to list").click
550
- AssignmentsList.new(@browser)
551
- end
552
-
553
- # Clicks the Cancel button and instantiates the
554
- # AssignmentsList Class.
555
- def cancel
556
- frm.button(:value=>"Cancel").click
557
- AssignmentsList.new(@browser)
382
+ frm.file_field(:id=>"clonableUpload", :name=>/upload/).set(file_path + file_name)
558
383
  end
559
384
 
385
+ action(:select_more_files_from_workspace) { |b| b.frm.link(:id=>"attach").click }
560
386
  action(:add_another_file) { |b| b.frm.link(:id=>"addMoreAttachmentControls") }
561
387
 
562
- end
563
-
564
- # Page that appears when a Student User clicks to Preview an
565
- # assignment that is in progress.
566
- class AssignmentStudentPreview < BasePage
388
+ element(:submit_button) { |b| b.frm.button(:value=>"Submit") }
389
+ element(:resubmit_button) { |b| b.frm.button(:value=>"Resubmit") }
390
+ element(:save_draft_button) { |b| b.frm.button(:value=>"Save Draft") }
391
+ element(:preview_button) { |b| b.frm.button(:value=>"Preview") }
567
392
 
568
- frame_element
393
+ action(:submit) { |p| p.submit_button.click }
394
+ action(:resubmit) { |p| p.resubmit_button.click }
395
+ action(:save_draft) { |p| p.save_draft_button.click }
396
+ action(:back_to_list) { |b| b.frm.button(:value=>"Back to list").click }
397
+ action(:preview) { |p| p.preview_button.click }
569
398
 
570
- # Clicks the Submit button, then
571
- # instantiates the SubmissionConfirmation
572
- # page class.
573
- def submit
574
- frm.button(:value=>"Submit").click
575
- SubmissionConfirmation.new(@browser)
576
- end
399
+ element(:instructor_comment_field) { |b| b.frm.form(:name=>"addSubmissionForm").div(:class=>"textPanel", :index=>1) }
577
400
 
578
- # Clicks the Save Draft button, then
579
- # instantiates the SubmissionConfirmation
580
- # page class.
581
- def save_draft
582
- frm.button(:value=>"Save Draft").click
583
- SubmissionConfirmation.new(@browser)
584
- end
585
-
586
- # Returns the contents of the submission box.
587
- def submission_text
588
- frm.div(:class=>"portletBody").div(:class=>/textPanel/).text
589
- end
401
+ value(:instructions) { |b| b.frm.div(:class=>"portletBody").div(:class=>"textPanel").text }
402
+ value(:submission_text) { |b| b.frm.form(:name=>"addSubmissionForm").div(:class=>"textPanel").text }
403
+ value(:instructor_comments) { |p| p.instructor_comment_field.text }
590
404
 
591
405
  # Returns an array of strings. Each element in the
592
406
  # array is the name of attached files.
593
407
  def attachments
594
408
  names = []
595
409
  frm.ul(:class=>"attachList indnt1").links.each { |link| names << link.text }
596
- return names
410
+ names
597
411
  end
598
412
 
599
413
  end
@@ -605,22 +419,24 @@ class SubmissionConfirmation < BasePage
605
419
  frame_element
606
420
 
607
421
  # Returns the text of the success message on the page.
608
- def confirmation_text
609
- frm.div(:class=>"portletBody").div(:class=>"success").text
610
- end
422
+ value(:confirmation_text) { |b| b.frm.div(:class=>"portletBody").div(:class=>"success").text }
611
423
 
612
424
  # Returns the text of the assignment submission.
613
- def submission_text
614
- frm.div(:class=>"portletBody").div(:class=>"textPanel indnt2").text
615
- end
425
+ value(:submission_text) { |b| b.frm.div(:class=>"portletBody").div(:class=>"textPanel indnt2").text }
616
426
 
617
427
  # Clicks the Back to list button, then
618
428
  # instantiates the AssignmentsList page class.
619
- def back_to_list
620
- frm.button(:value=>"Back to list").click
621
- frm.link(:text=>"Assignment title").wait_until_present
622
- AssignmentsList.new(@browser)
429
+ action(:back_to_list) { |b| b.frm.button(:value=>"Back to list").click }
430
+
431
+ def summary_info
432
+ hash={}
433
+ array = frm.table(:class=>"itemSummary").to_a
434
+ array.each do |subarray|
435
+ hash.store(subarray[0], subarray[1])
436
+ end
437
+ hash
623
438
  end
439
+
624
440
  end
625
441
 
626
442
  # The page that appears when you click on an assignment's "Grade" or "View Submission" link
@@ -631,33 +447,18 @@ class AssignmentSubmissionList < AssignmentsBase
631
447
  menu_elements
632
448
  listview_elements
633
449
 
634
- # Clicks the Assignment List link and instantiates the AssignmentsList Class.
635
- def assignment_list
636
- frm.link(:text=>"Assignment List").click
637
- AssignmentsList.new(@browser)
638
- end
639
450
  # Clicks the Show Resubmission Settings button
640
- def show_resubmission_settings
641
- frm.image(:src, "/library/image/sakai/expand.gif?panel=Main").click
642
- end
451
+ action(:show_resubmission_settings) { |b| b.frm.image(:src, "/library/image/sakai/expand.gif?panel=Main").click }
643
452
 
644
453
  # Clicks the Show Assignment Details button.
645
- def show_assignment_details
646
- frm.image(:src, "/library/image/sakai/expand.gif").click
647
- end
454
+ action(:show_assignment_details) { |b| b.frm.image(:src, "/library/image/sakai/expand.gif").click }
648
455
 
649
456
  # Gets the Student table text and returns it in an Array object.
650
- def student_table
651
- table = frm.table(:class=>"listHier lines nolines").to_a
652
- end
457
+ value(:student_table) { |b| b.frm.table(:class=>"listHier lines nolines").to_a }
653
458
 
654
459
  # Clicks the Grade link for the specified student, then
655
460
  # instantiates the AssignmentSubmission page class.
656
- def grade(student_name)
657
- frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/).link(:text=>"Grade").click
658
- frm.frame(:id, "grade_submission_feedback_comment___Frame").td(:id, "xEditingArea").frame(:index=>0).wait_until_present
659
- AssignmentSubmission.new(@browser)
660
- end
461
+ pgmd(:grade) { |student_name, b| b.frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/).link(:text=>"Grade").click }
661
462
 
662
463
  # Gets the value of the status field for the specified
663
464
  # Student. Note that the student's name needs to be entered
@@ -666,9 +467,7 @@ class AssignmentSubmissionList < AssignmentsBase
666
467
  # students with the same name.
667
468
  #
668
469
  # Useful for verification purposes.
669
- def submission_status_of(student_name)
670
- frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/)[4].text
671
- end
470
+ pgmd(:submission_status_of) { |student_name, b| b.frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/)[4].text }
672
471
 
673
472
  element(:search_input) { |b| b.frm.text_field(:id=>"search") }
674
473
  action(:find) { |b| b.frm.button(:value=>"Find").click }
@@ -701,40 +500,35 @@ class AssignmentSubmission < BasePage
701
500
  include FCKEditor
702
501
  frame_element
703
502
 
704
- expected_element :editor
503
+ expected_element :assignment_submission
705
504
 
706
- element(:editor) { |b| b.frm.frame(:id, "grade_submission_feedback_text___Frame") }
505
+ element(:assignment_submission) { |b| b.frm.frame(:id, "grade_submission_feedback_text___Frame") }
506
+ element(:instructor_comments) { |b| b.frm.frame(:id, "grade_submission_feedback_comment___Frame") }
707
507
 
708
508
  # Enters the specified text string in the FCKEditor box for the assignment text.
709
509
  def assignment_text=(text)
710
- editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
510
+ assignment_submission.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
711
511
  end
712
512
 
713
513
  # Removes all the contents of the FCKEditor Assignment Text box.
714
514
  def remove_assignment_text
715
- editor.div(:title=>"Select All").fire_event("onclick")
716
- editor.td(:id, "xEditingArea").frame(:index=>0).send_keys :backspace
515
+ assignment_submission.div(:title=>"Select All").fire_event("onclick")
516
+ assignment_submission.td(:id, "xEditingArea").frame(:index=>0).send_keys :backspace
717
517
  end
718
518
 
719
519
  # Enters the specified string into the Instructor Comments FCKEditor box.
720
520
  def instructor_comments=(text)
721
- editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
521
+ instructor_comments.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
722
522
  end
723
523
 
724
524
  # Clicks the Add Attachments button, then instantiates the AssignmentAttachments Class.
725
- def add_attachments
726
- frm.button(:name=>"attach").click
727
- AssignmentAttachments.new(@browser)
728
- end
525
+ action(:add_attachments) { |b| b.frm.button(:name=>"attach").click }
729
526
 
730
527
  # Clicks the Return to List button, then instantiates the
731
528
  # AssignmentSubmissionList Class.
732
- def return_to_list
733
- frm.button(:value=>"Return to List").click
734
- AssignmentSubmissionList.new(@browser)
735
- end
529
+ action(:return_to_list) { |b| b.frm.button(:value=>"Return to List").click }
736
530
 
737
- element(:select_default_grade) { |b| b.frm.select(:name=>"grade_submission_grade") }
531
+ element(:grade) { |b| b.frm.select(:name=>"grade_submission_grade") }
738
532
  element(:allow_resubmission) { |b| b.frm.checkbox(:id=>"allowResToggle") }
739
533
  element(:num_resubmissions) { |b| b.frm.select(:id=>"allowResubmitNumberSelect") }
740
534
  element(:accept_until_month) { |b| b.frm.select(:id=>"allow_resubmit_closeMonth") }
@@ -753,18 +547,4 @@ class GradeReport < BasePage
753
547
 
754
548
  frame_element
755
549
 
756
- end
757
-
758
- # The Student View page accessed from the Assignments page
759
- class StudentView < AssignmentsBase
760
-
761
- menu_elements
762
- listview_elements
763
-
764
- action(:sort_assignment_title) { |b| b.frm.link(:text=>"Assignment title").click }
765
- action(:sort_status) { |b| b.frm.link(:text=>"Status").click }
766
- action(:sort_open) { |b| b.frm.link(:text=>"Open").click }
767
- action(:sort_due) { |b| b.frm.link(:text=>"Due").click }
768
- action(:sort_scale) { |b| b.frm.link(:text=>"Scale").click }
769
-
770
- end
550
+ end
@@ -228,8 +228,6 @@ class EventFrequency < CalendarBase
228
228
 
229
229
  action(:save_frequency) { |b| b.frm.button(:value=>"Save Frequency").click }
230
230
 
231
- action(:cancel) { |b| b.frm.button(:value=>"Cancel").click }
232
-
233
231
  element(:event_frequency) { |b| b.frm.select(:id=>"frequencySelect") }
234
232
  element(:interval) { |b| b.frm.select(:id=>"interval") }
235
233
  element(:ends_after) { |b| b.frm.select(:name=>"count") }