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.
- data/README.md +3 -1
- data/lib/sambal-cle/base_page.rb +3 -1
- data/lib/sambal-cle/data_objects/announcement.rb +7 -10
- data/lib/sambal-cle/data_objects/assessment.rb +265 -9
- data/lib/sambal-cle/data_objects/assignment.rb +38 -32
- data/lib/sambal-cle/data_objects/assignment_permissions.rb +61 -0
- data/lib/sambal-cle/data_objects/assignment_submission.rb +126 -0
- data/lib/sambal-cle/data_objects/blog.rb +4 -7
- data/lib/sambal-cle/data_objects/blogger.rb +4 -10
- data/lib/sambal-cle/data_objects/chat_room.rb +5 -8
- data/lib/sambal-cle/data_objects/event.rb +6 -17
- data/lib/sambal-cle/data_objects/forum.rb +9 -19
- data/lib/sambal-cle/data_objects/lesson.rb +8 -29
- data/lib/sambal-cle/data_objects/message.rb +7 -10
- data/lib/sambal-cle/data_objects/poll.rb +6 -11
- data/lib/sambal-cle/data_objects/resource.rb +28 -37
- data/lib/sambal-cle/data_objects/site.rb +6 -17
- data/lib/sambal-cle/data_objects/syllabus.rb +6 -8
- data/lib/sambal-cle/data_objects/user.rb +88 -0
- data/lib/sambal-cle/data_objects/web_content_tool.rb +5 -6
- data/lib/sambal-cle/data_objects/wiki.rb +6 -6
- data/lib/sambal-cle/page_objects/account.rb +0 -2
- data/lib/sambal-cle/page_objects/announcements.rb +0 -1
- data/lib/sambal-cle/page_objects/assessments.rb +57 -87
- data/lib/sambal-cle/page_objects/assignments.rb +117 -337
- data/lib/sambal-cle/page_objects/calendar.rb +0 -2
- data/lib/sambal-cle/page_objects/login.rb +3 -9
- data/lib/sambal-cle/page_objects/sections.rb +2 -3
- data/lib/sambal-cle/page_objects/site_setup.rb +9 -19
- data/lib/sambal-cle/rich_text.rb +6 -0
- data/lib/sambal-cle/utilities.rb +4 -10
- data/lib/sambal-cle/workflows.rb +1 -5
- data/lib/sambal-cle.rb +2 -10
- data/sambal-cle.gemspec +7 -8
- data/test/add_assignment_to_calendar_spec.rb +14 -15
- data/test/assessment_create_spec.rb +355 -0
- data/test/assignment_announcements_spec.rb +14 -15
- data/test/assignment_duplicate_spec.rb +56 -0
- data/test/assignment_gradebook_spec.rb +16 -15
- data/test/assignment_permissions_spec.rb +77 -0
- data/test/assignments_grading_spec.rb +123 -0
- data/test/assignments_submission_spec.rb +143 -0
- data/test/config.yml +3 -0
- data/test/directory.yml +120 -0
- data/test/duplicate_site_spec.rb +5 -3
- data/test/import_site_content_spec.rb +248 -0
- metadata +22 -31
- data/lib/sambal-cle/core-ext.rb +0 -90
- data/lib/sambal-cle/date_makers.rb +0 -118
- data/lib/sambal-cle/gem_ext.rb +0 -23
- data/lib/sambal-cle/page_helper.rb +0 -22
- data/lib/sambal-cle/page_maker.rb +0 -48
- 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
|
-
|
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
|
-
|
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
|
-
|
202
|
-
index = assignments_titles.index(assignment_name)
|
203
|
-
frm.link(:text=>"Edit", :index=>index).click
|
204
|
-
|
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
|
-
|
209
|
-
|
210
|
-
|
211
|
-
frm.
|
212
|
-
|
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
|
-
|
220
|
-
index = assignments_titles.index(assignment_name)
|
221
|
-
frm.link(:text=>"Duplicate", :index=>index).click
|
222
|
-
|
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
|
-
|
228
|
-
|
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
|
-
|
239
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
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(:
|
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
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
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
|
-
|
311
|
+
hash
|
363
312
|
end
|
364
313
|
|
365
314
|
# Grabs the Assignment Instructions text.
|
366
|
-
|
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
|
-
|
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
|
-
|
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
|
389
|
-
|
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
|
-
|
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
|
352
|
+
class AssignmentStudentView < BasePage
|
435
353
|
|
354
|
+
include FCKEditor
|
436
355
|
frame_element
|
356
|
+
basic_page_elements
|
437
357
|
|
438
|
-
|
439
|
-
|
440
|
-
frm.
|
441
|
-
|
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
|
-
|
364
|
+
hash
|
451
365
|
end
|
452
366
|
|
453
|
-
|
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
|
-
|
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
|
-
|
466
|
-
|
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
|
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
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
579
|
-
|
580
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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 :
|
503
|
+
expected_element :assignment_submission
|
705
504
|
|
706
|
-
element(:
|
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
|
-
|
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
|
-
|
716
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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(:
|
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") }
|