sambal-cle 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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") }