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.
- 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
@@ -5,24 +5,18 @@
|
|
5
5
|
# This is the page where users log in to the site.
|
6
6
|
class Login < BasePage
|
7
7
|
|
8
|
-
|
8
|
+
page_url $base_url
|
9
9
|
|
10
|
-
|
11
|
-
@browser.frame(:index=>0).link(:text=>"Search Public Courses and Projects").click
|
12
|
-
SearchPublic.new(@browser)
|
13
|
-
end
|
10
|
+
action(:search_public_courses_and_projects) { |b| b.frame(:index=>0).link(:text=>"Search Public Courses and Projects").click }
|
14
11
|
|
15
12
|
# Logs in to Sakai using the
|
16
13
|
# specified credentials. Then it
|
17
14
|
# instantiates the MyWorkspace class.
|
18
|
-
def
|
15
|
+
def login_with username, password
|
19
16
|
frame = @browser.frame(:id, "ifrm")
|
20
17
|
frame.text_field(:id, "eid").set username
|
21
18
|
frame.text_field(:id, "pw").set password
|
22
19
|
frame.form(:method, "post").submit
|
23
|
-
return MyWorkspace.new(@browser)
|
24
20
|
end
|
25
|
-
alias log_in login
|
26
|
-
alias sign_in login
|
27
21
|
|
28
22
|
end
|
@@ -202,7 +202,6 @@ class SectionsOptions < SectionsBase
|
|
202
202
|
element(:students_can_switch) { |b| b.frm.checkbox(:id=>"optionsForm:selfSwitch") }
|
203
203
|
|
204
204
|
action(:update) { |b| b.frm.button(:id=>"optionsForm:_idJsp50").click }
|
205
|
-
action(:cancel) { |b| b.frm.button(:id=>"optionsForm:_idJsp51").click }
|
206
205
|
|
207
206
|
end
|
208
207
|
|
@@ -213,7 +212,7 @@ class AddSections < SectionsBase
|
|
213
212
|
|
214
213
|
element(:num_to_add) { |b| b.frm.select_list(:id=>"addSectionsForm:numToAdd") }
|
215
214
|
element(:category) { |b| b.frm.select_list(:id=>"addSectionsForm:category") }
|
216
|
-
action(:cancel) { |b| b.frm.button(:id=>"addSectionsForm:_idJsp90").click }
|
215
|
+
#action(:cancel) { |b| b.frm.button(:id=>"addSectionsForm:_idJsp90").click }
|
217
216
|
# Note that the following field definitions are appropriate for
|
218
217
|
# ONLY THE FIRST instance of each of the fields. The Add Sections page
|
219
218
|
# allows for an arbitrary number of these fields to exist.
|
@@ -249,7 +248,7 @@ class EditSections < SectionsBase
|
|
249
248
|
|
250
249
|
element(:num_to_add) { |b| b.frm.select_list(:id=>"editSectionsForm:numToAdd") }
|
251
250
|
element(:category) { |b| b.frm.select_list(:id=>"editSectionsForm:category") }
|
252
|
-
action(:cancel) { |b| b.frm.button(:id=>"editSectionsForm:_idJsp90").click }
|
251
|
+
#action(:cancel) { |b| b.frm.button(:id=>"editSectionsForm:_idJsp90").click }
|
253
252
|
# Note that the following field definitions are appropriate for
|
254
253
|
# ONLY THE FIRST instance of each of the fields. The Edit Sections page
|
255
254
|
# allows for an arbitrary number of these fields to exist.
|
@@ -136,7 +136,6 @@ class Groups < SiteSetupBase
|
|
136
136
|
action(:create_new_group) { |p| p.create_new_group_link.click }
|
137
137
|
action(:auto_groups) { |b| b.frm.link(:text=>"Auto Groups").click }
|
138
138
|
action(:remove_checked) { |b| b.frm.button(:id=>"delete-groups").click }
|
139
|
-
action(:cancel) { |b| b.frm.button(:id=>"cancel").click }
|
140
139
|
|
141
140
|
end
|
142
141
|
|
@@ -156,7 +155,6 @@ class CreateNewGroup < SiteSetupBase
|
|
156
155
|
action(:left) { |b| b.frm.button(:name=>"left", :index=>0).click }
|
157
156
|
action(:all_right) { |b| b.frm.button(:name=>"right", :index=>1).click }
|
158
157
|
action(:all_left) { |b| b.frm.button(:name=>"left",:index=>1).click }
|
159
|
-
action(:cancel) { |b| b.frm.button(:id=>"cancel").click }
|
160
158
|
|
161
159
|
end
|
162
160
|
|
@@ -192,7 +190,7 @@ class SiteSetupAddParticipants < SiteSetupBase
|
|
192
190
|
element(:assign_each_individually) { |b| b.frm.radio(:id=>"content::role-row:1:role-select") }
|
193
191
|
element(:active_status) { |b| b.frm.radio(:id=>"content::status-row:0:status-select") }
|
194
192
|
element(:inactive_status) { |b| b.frm.radio(:id=>"content::status-row:1:status-select") }
|
195
|
-
action(:cancel) { |b| b.frm.button(:id=>"content::cancel").click }
|
193
|
+
#action(:cancel) { |b| b.frm.button(:id=>"content::cancel").click }
|
196
194
|
|
197
195
|
end
|
198
196
|
|
@@ -205,7 +203,7 @@ class SiteSetupChooseRolesIndiv < SiteSetupBase
|
|
205
203
|
action(:continue) { |b| b.frm.button(:value=>"Continue").click }
|
206
204
|
|
207
205
|
action(:back) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Aback&Fast%20track%20action=siteAddParticipantHandler.processDifferentRoleBack").click }
|
208
|
-
action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acancel&Fast%20track%20action=siteAddParticipantHandler.processCancel").click }
|
206
|
+
#action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acancel&Fast%20track%20action=siteAddParticipantHandler.processCancel").click }
|
209
207
|
element(:user_role) { |b| b.frm.select(:id=>"content::user-row:0:role-select-selection") }
|
210
208
|
|
211
209
|
end
|
@@ -248,7 +246,7 @@ class SiteSetupParticipantEmail < SiteSetupBase
|
|
248
246
|
|
249
247
|
action(:continue) { |b| b.frm.button(:value=>"Continue").click }
|
250
248
|
action(:back) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acontinue&Fast%20track%20action=siteAddParticipantHandler.processEmailNotiBack").click }
|
251
|
-
action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acontinue&Fast%20track%20action=siteAddParticipantHandler.processEmailNotiCancel").click }
|
249
|
+
#action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acontinue&Fast%20track%20action=siteAddParticipantHandler.processEmailNotiCancel").click }
|
252
250
|
element(:send_now) { |b| b.frm.radio(:id=>"content::noti-row:0:noti-select") }
|
253
251
|
element(:dont_send) { |b| b.frm.radio(:id=>"content::noti-row:1:noti-select") }
|
254
252
|
|
@@ -273,7 +271,7 @@ class SiteSetupParticipantConfirm < SiteSetupBase
|
|
273
271
|
end
|
274
272
|
|
275
273
|
action(:back) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Aback&Fast%20track%20action=siteAddParticipantHandler.processConfirmBack").click }
|
276
|
-
action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Aback&Fast%20track%20action=siteAddParticipantHandler.processConfirmCancel").click }
|
274
|
+
#action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Aback&Fast%20track%20action=siteAddParticipantHandler.processConfirmCancel").click }
|
277
275
|
|
278
276
|
end
|
279
277
|
|
@@ -344,7 +342,6 @@ class EditSiteTools < SiteSetupBase
|
|
344
342
|
element(:yes) { |b| b.frm.radio(:id=>"import_yes") }
|
345
343
|
element(:import_sites) { |b| b.frm.select(:id=>"importSites") }
|
346
344
|
action(:back) { |b| b.frm.button(:name=>"Back").click }
|
347
|
-
action(:cancel) { |b| b.frm.button(:name=>"Cancel").click }
|
348
345
|
|
349
346
|
end
|
350
347
|
|
@@ -394,13 +391,8 @@ class DeleteSite < SiteSetupBase
|
|
394
391
|
|
395
392
|
menu_elements
|
396
393
|
|
397
|
-
# Clicks the Remove button
|
398
|
-
# the SiteSetup class.
|
394
|
+
# Clicks the Remove button
|
399
395
|
action(:remove) { |b| b.frm.button(:value=>"Remove").click }
|
400
|
-
|
401
|
-
# Clicks the Cancel button, then instantiates
|
402
|
-
# the SiteSetup class.
|
403
|
-
action(:cancel) { |b| b.frm.button(:value=>"Cancel").click }
|
404
396
|
|
405
397
|
end
|
406
398
|
|
@@ -427,7 +419,7 @@ class SiteType < SiteSetupBase
|
|
427
419
|
element(:academic_term) { |b| b.frm.select(:id=>"selectTerm") }
|
428
420
|
element(:select_template) { |b| b.frm.select(:id=>"templateSiteId") }
|
429
421
|
element(:select_term) { |b| b.frm.select(:id=>"selectTermTemplate") }
|
430
|
-
action(:cancel) { |b| b.frm.button(:id=>"cancelCreate").click }
|
422
|
+
#action(:cancel) { |b| b.frm.button(:id=>"cancelCreate").click }
|
431
423
|
element(:copy_users) { |b| b.frm.checkbox(:id=>"copyUsers") }
|
432
424
|
element(:copy_content) { |b| b.frm.checkbox(:id=>"copyContent") }
|
433
425
|
end
|
@@ -461,7 +453,6 @@ class AddMultipleTools < SiteSetupBase
|
|
461
453
|
element(:web_content_source) { |b| b.frm.text_field(:id=>"source_sakai.iframe") }
|
462
454
|
element(:more_web_content_tools) { |b| b.frm.select(:id=>"num_sakai.iframe") }
|
463
455
|
action(:back) { |b| b.frm.button(:name=>"Back").click }
|
464
|
-
action(:cancel) { |b| b.frm.button(:name=>"Cancel").click }
|
465
456
|
|
466
457
|
end
|
467
458
|
|
@@ -470,7 +461,8 @@ end
|
|
470
461
|
class CourseSectionInfo < SiteSetupBase
|
471
462
|
|
472
463
|
menu_elements
|
473
|
-
|
464
|
+
expected_element :subject
|
465
|
+
|
474
466
|
# Clicks the Continue button, then instantiates
|
475
467
|
# the CourseSiteInfo Class.
|
476
468
|
action(:continue) { |b| b.frm.button(:value=>"Continue").click }
|
@@ -497,7 +489,6 @@ class CourseSectionInfo < SiteSetupBase
|
|
497
489
|
element(:special_instructions) { |b| b.frm.text_field(:id=>"additional") }
|
498
490
|
element(:add_more_rosters) { |b| b.frm.select(:id=>"number") }
|
499
491
|
action(:back) { |b| b.frm.button(:name=>"Back").click }
|
500
|
-
action(:cancel) { |b| b.frm.button(:name=>"Cancel").click }
|
501
492
|
|
502
493
|
end
|
503
494
|
|
@@ -507,6 +498,7 @@ end
|
|
507
498
|
class SiteAccess < SiteSetupBase
|
508
499
|
|
509
500
|
menu_elements
|
501
|
+
expected_element :allow
|
510
502
|
|
511
503
|
# The page element that displays the joiner role
|
512
504
|
# select list. Use this method to validate whether the
|
@@ -524,7 +516,6 @@ class SiteAccess < SiteSetupBase
|
|
524
516
|
element(:limited) { |b| b.frm.radio(:id=>"unjoinable") }
|
525
517
|
element(:allow) { |b| b.frm.radio(:id=>"joinable") }
|
526
518
|
action(:back) { |b| b.frm.button(:name=>"eventSubmit_doBack").click }
|
527
|
-
action(:cancel) { |b| b.frm.button(:name=>"eventSubmit_doCancel_create").click }
|
528
519
|
element(:joiner_role) { |b| b.frm.select(:id=>"joinerRole") }
|
529
520
|
|
530
521
|
end
|
@@ -571,7 +562,6 @@ class CourseSiteInfo < BasePage
|
|
571
562
|
element(:site_contact_name) { |b| b.frm.text_field(:id=>"siteContactName") }
|
572
563
|
element(:site_contact_email) { |b| b.frm.text_field(:id=>"siteContactEmail") }
|
573
564
|
action(:back) { |b| b.frm.button(:name=>"Back").click }
|
574
|
-
action(:cancel) { |b| b.frm.button(:name=>"Cancel").click }
|
575
565
|
|
576
566
|
end
|
577
567
|
|
data/lib/sambal-cle/rich_text.rb
CHANGED
@@ -24,6 +24,12 @@ module FCKEditor
|
|
24
24
|
source_field(editor).value
|
25
25
|
end
|
26
26
|
|
27
|
+
# Adds the specified string of text to the beginning of the existing
|
28
|
+
# text in the target FCKEditor.
|
29
|
+
def prepend(editor, string)
|
30
|
+
editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(string)
|
31
|
+
end
|
32
|
+
|
27
33
|
def entity_picker(editor)
|
28
34
|
editor.div(:title=>"Sakai_Entity_Link").wait_until_present
|
29
35
|
editor.div(:title=>"Sakai_Entity_Link").click
|
data/lib/sambal-cle/utilities.rb
CHANGED
@@ -16,16 +16,10 @@ module Utilities
|
|
16
16
|
return $~.to_s
|
17
17
|
end
|
18
18
|
|
19
|
+
# TODO: Pull this out because it's a dupe. Fix anything that's broken because this is commented out...
|
19
20
|
# Shorthand method for making a data object for testing.
|
20
|
-
def make data_object_class, opts={}
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
# Transform for use with data object instance variables
|
25
|
-
# that refer to checkboxes or radio buttons.
|
26
|
-
def checkbox_setting(checkbox)
|
27
|
-
checkbox.set? ? :set : :clear
|
28
|
-
end
|
29
|
-
alias radio_setting checkbox_setting
|
21
|
+
#def make data_object_class, opts={}
|
22
|
+
# data_object_class.new @browser, opts
|
23
|
+
#end
|
30
24
|
|
31
25
|
end
|
data/lib/sambal-cle/workflows.rb
CHANGED
@@ -199,6 +199,7 @@ module Workflows
|
|
199
199
|
|
200
200
|
# AssessmentsList class OR the TakeAssessmentList for students
|
201
201
|
menu_link :assessments, :class=>"icon-sakai-samigo"
|
202
|
+
alias :tests_and_quizzes :assessments
|
202
203
|
|
203
204
|
# UserMembership
|
204
205
|
menu_link :user_membership, :class=>"icon-sakai-usermembership"
|
@@ -215,9 +216,4 @@ module Workflows
|
|
215
216
|
# The Page Reset button, found on all Site pages
|
216
217
|
menu_link :reset, :href=>/tool-reset/
|
217
218
|
|
218
|
-
# Login class.
|
219
|
-
menu_link :logout, :text=>"Logout"
|
220
|
-
alias :log_out :logout
|
221
|
-
alias :sign_out :logout
|
222
|
-
|
223
219
|
end
|
data/lib/sambal-cle.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'cgi'
|
2
|
-
require '
|
3
|
-
require 'sambal-cle/page_maker.rb'
|
2
|
+
require 'test-factory'
|
4
3
|
Dir["#{File.dirname(__FILE__)}/sambal-cle/*.rb"].each {|f| require f }
|
5
4
|
Dir["#{File.dirname(__FILE__)}/sambal-cle/page_objects/*.rb"].each {|f| require f }
|
6
5
|
Dir["#{File.dirname(__FILE__)}/sambal-cle/data_objects/*.rb"].each {|f| require f }
|
@@ -12,20 +11,13 @@ Dir["#{File.dirname(__FILE__)}/sambal-cle/data_objects/*.rb"].each {|f| require
|
|
12
11
|
# create the @browser variable used throughout the page classes
|
13
12
|
class SakaiCLE
|
14
13
|
|
15
|
-
#include PageObject
|
16
|
-
#include ToolsMenu
|
17
|
-
|
18
14
|
attr_reader :browser
|
19
15
|
|
20
16
|
def initialize(web_browser, url)
|
21
17
|
@browser = Watir::Browser.new web_browser
|
22
18
|
@browser.window.resize_to(1400,900)
|
23
19
|
@browser.goto url
|
24
|
-
|
25
|
-
|
26
|
-
# Returns the class containing the welcome page's page elements.
|
27
|
-
def page
|
28
|
-
Login.new @browser
|
20
|
+
$base_url=url
|
29
21
|
end
|
30
22
|
|
31
23
|
end
|
data/sambal-cle.gemspec
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'sambal-cle'
|
3
|
-
s.version = '0.1.
|
4
|
-
s.summary = %q{
|
5
|
-
s.description = %q{
|
3
|
+
s.version = '0.1.4'
|
4
|
+
s.summary = %q{rSmart's test framework for testing Sakai-CLE}
|
5
|
+
s.description = %q{This gem is used for creating test scripts for the Sakai Collaborative Learning Environment.}
|
6
6
|
s.files = Dir.glob("**/**/**")
|
7
7
|
s.test_files = Dir.glob("test/*test_rb")
|
8
|
-
s.authors = ["Abraham Heward"]
|
9
|
-
s.email = %w{"aheward@rsmart.com"}
|
10
|
-
s.homepage = 'https://github.com/rSmart
|
11
|
-
s.add_dependency '
|
12
|
-
s.add_dependency 'selenium-webdriver', '>= 2.21.2'
|
8
|
+
s.authors = ["Abraham Heward", "Jon Utter"]
|
9
|
+
s.email = %w{"aheward@rsmart.com" "jutter@rsmart.com"}
|
10
|
+
s.homepage = 'https://github.com/rSmart'
|
11
|
+
s.add_dependency 'test-factory', '>= 0.0.1'
|
13
12
|
s.required_ruby_version = '>= 1.9.2'
|
14
13
|
end
|
@@ -6,9 +6,9 @@ describe "Assignment Due Date on Calendar" do
|
|
6
6
|
|
7
7
|
include Utilities
|
8
8
|
include Workflows
|
9
|
-
include
|
10
|
-
include
|
11
|
-
include
|
9
|
+
include Foundry
|
10
|
+
include StringFactory
|
11
|
+
include DateFactory
|
12
12
|
|
13
13
|
before :all do
|
14
14
|
|
@@ -18,21 +18,20 @@ describe "Assignment Due Date on Calendar" do
|
|
18
18
|
@sakai = SakaiCLE.new(@config['browser'], @config['url'])
|
19
19
|
@browser = @sakai.browser
|
20
20
|
|
21
|
-
@student =
|
22
|
-
|
23
|
-
@instructor1 =
|
24
|
-
|
25
|
-
|
26
|
-
@instructor2 =
|
27
|
-
|
28
|
-
|
29
|
-
@
|
21
|
+
@student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
|
22
|
+
:first_name=>@directory['person1']['firstname'], :last_name=>@directory['person1']['lastname']
|
23
|
+
@instructor1 = make UserObject, :id=>@directory['person3']['id'], :password=>@directory['person3']['password'],
|
24
|
+
:first_name=>@directory['person3']['firstname'], :last_name=>@directory['person3']['lastname'],
|
25
|
+
:type=>"Instructor"
|
26
|
+
@instructor2 = make UserObject, :id=>@directory['person4']['id'], :password=>@directory['person4']['password'],
|
27
|
+
:first_name=>@directory['person4']['firstname'], :last_name=>@directory['person4']['lastname'],
|
28
|
+
:type=>"Instructor"
|
29
|
+
@instructor1.log_in
|
30
30
|
|
31
31
|
@site = make SiteObject
|
32
32
|
@site.create
|
33
|
-
|
34
|
-
@site.add_official_participants :role
|
35
|
-
@site.add_official_participants :role=>"Instructor", :participants=>[@instructor2]
|
33
|
+
@site.add_official_participants :role=>@student.type, :participants=>[@student.id]
|
34
|
+
@site.add_official_participants :role=>@instructor2.type, :participants=>[@instructor2.id]
|
36
35
|
|
37
36
|
@assignment1 = make AssignmentObject, :site=>@site.name, :title=>random_string, :grade_scale=>"Letter grade", :instructions=>random_multiline(500, 10, :string), :open=>minutes_ago(5)
|
38
37
|
@assignment2 = make AssignmentObject, :allow_resubmission=>:set, :add_due_date=>:set, :site=>@site.name, :title=>random_nicelink(15), :open=>hours_ago(5), :student_submissions=>"Inline only", :grade_scale=>"Letter grade", :instructions=>random_multiline(750, 13, :string)
|