sambal-cle 0.1.4 → 0.1.5
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/Gemfile +7 -0
- data/Gemfile.lock +44 -0
- data/lib/sambal-cle/data_objects/announcement.rb +7 -7
- data/lib/sambal-cle/data_objects/assessment.rb +26 -77
- data/lib/sambal-cle/data_objects/assessment_submission.rb +26 -0
- data/lib/sambal-cle/data_objects/assignment.rb +40 -40
- data/lib/sambal-cle/data_objects/assignment_permissions.rb +4 -4
- data/lib/sambal-cle/data_objects/assignment_submission.rb +4 -4
- data/lib/sambal-cle/data_objects/blog.rb +2 -2
- data/lib/sambal-cle/data_objects/blogger.rb +3 -3
- data/lib/sambal-cle/data_objects/chat_room.rb +2 -2
- data/lib/sambal-cle/data_objects/{site.rb → course.rb} +24 -20
- data/lib/sambal-cle/data_objects/event.rb +4 -4
- data/lib/sambal-cle/data_objects/forum.rb +21 -22
- data/lib/sambal-cle/data_objects/glossary_term.rb +71 -0
- data/lib/sambal-cle/data_objects/lesson.rb +10 -9
- data/lib/sambal-cle/data_objects/matrix.rb +142 -0
- data/lib/sambal-cle/data_objects/message.rb +2 -2
- data/lib/sambal-cle/data_objects/poll.rb +2 -2
- data/lib/sambal-cle/data_objects/portfolio.rb +120 -0
- data/lib/sambal-cle/data_objects/questions.rb +690 -0
- data/lib/sambal-cle/data_objects/resource.rb +12 -12
- data/lib/sambal-cle/data_objects/syllabus.rb +7 -7
- data/lib/sambal-cle/data_objects/web_content_tool.rb +2 -2
- data/lib/sambal-cle/data_objects/wiki.rb +6 -6
- data/lib/sambal-cle/page_objects/assessments.rb +165 -157
- data/lib/sambal-cle/page_objects/assignments.rb +17 -17
- data/lib/sambal-cle/page_objects/glossary.rb +14 -64
- data/lib/sambal-cle/page_objects/matrix.rb +77 -113
- data/lib/sambal-cle/page_objects/portfolios.rb +0 -2
- data/lib/sambal-cle/page_objects/resources.rb +4 -4
- data/lib/sambal-cle/page_objects/site_setup.rb +31 -23
- data/lib/sambal-cle/page_objects/sites.rb +2 -12
- data/lib/sambal-cle/utilities.rb +0 -6
- data/lib/sambal-cle/workflows.rb +77 -76
- data/lib/sambal-cle.rb +2 -2
- data/sambal-cle.gemspec +2 -2
- data/test/add_assignment_to_calendar_spec.rb +4 -4
- data/test/assessment_create_spec.rb +1 -1
- data/test/assessment_feedback_spec.rb +78 -0
- data/test/assessment_publish_spec.rb +102 -0
- data/test/assignment_announcements_spec.rb +4 -4
- data/test/assignment_duplicate_spec.rb +4 -4
- data/test/assignment_gradebook_spec.rb +4 -4
- data/test/assignment_permissions_spec.rb +5 -5
- data/test/assignments_grading_spec.rb +4 -4
- data/test/assignments_submission_spec.rb +4 -4
- data/test/duplicate_site_spec.rb +2 -2
- data/test/glossary_term_create_spec.rb +71 -0
- data/test/import_site_content_spec.rb +3 -3
- data/test/test_spec.rb +51 -0
- metadata +16 -5
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
sambal-cle (0.1.5)
|
5
|
+
test-factory (>= 0.0.1)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
addressable (2.2.7)
|
11
|
+
childprocess (0.3.1)
|
12
|
+
ffi (~> 1.0.6)
|
13
|
+
diff-lcs (1.1.3)
|
14
|
+
ffi (1.0.11)
|
15
|
+
libwebsocket (0.1.3)
|
16
|
+
addressable
|
17
|
+
multi_json (1.2.0)
|
18
|
+
rspec (2.9.0)
|
19
|
+
rspec-core (~> 2.9.0)
|
20
|
+
rspec-expectations (~> 2.9.0)
|
21
|
+
rspec-mocks (~> 2.9.0)
|
22
|
+
rspec-core (2.9.0)
|
23
|
+
rspec-expectations (2.9.1)
|
24
|
+
diff-lcs (~> 1.1.3)
|
25
|
+
rspec-mocks (2.9.0)
|
26
|
+
rubyzip (0.9.7)
|
27
|
+
selenium-webdriver (2.25.0)
|
28
|
+
childprocess (>= 0.2.5)
|
29
|
+
libwebsocket (~> 0.1.3)
|
30
|
+
multi_json (~> 1.0)
|
31
|
+
rubyzip
|
32
|
+
test-factory (0.0.2)
|
33
|
+
watir-webdriver (>= 0.6.1)
|
34
|
+
watir-webdriver (0.6.1)
|
35
|
+
selenium-webdriver (>= 2.18.0)
|
36
|
+
|
37
|
+
PLATFORMS
|
38
|
+
ruby
|
39
|
+
|
40
|
+
DEPENDENCIES
|
41
|
+
rspec
|
42
|
+
sambal-cle!
|
43
|
+
test-factory
|
44
|
+
watir-webdriver
|
@@ -25,8 +25,8 @@ class AnnouncementObject
|
|
25
25
|
alias :name :title
|
26
26
|
|
27
27
|
def create
|
28
|
-
open_my_site_by_name
|
29
|
-
announcements
|
28
|
+
open_my_site_by_name
|
29
|
+
announcements
|
30
30
|
on_page Announcements do |page|
|
31
31
|
page.add
|
32
32
|
end
|
@@ -43,13 +43,13 @@ class AnnouncementObject
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def edit opts={}
|
46
|
-
open_my_site_by_name @site
|
47
|
-
announcements
|
46
|
+
open_my_site_by_name @site
|
47
|
+
announcements
|
48
48
|
on_page Announcements do |list|
|
49
49
|
list.edit @title
|
50
50
|
end
|
51
51
|
on AddEditAnnouncements do |edit|
|
52
|
-
edit.title.
|
52
|
+
edit.title.fit opts[:title]
|
53
53
|
edit.send(opts[:access]) unless opts[:access]==nil
|
54
54
|
edit.send(opts[:availability]) unless opts[:availability]==nil
|
55
55
|
unless opts[:body]==nil
|
@@ -61,8 +61,8 @@ class AnnouncementObject
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def view
|
64
|
-
open_my_site_by_name @site
|
65
|
-
announcements
|
64
|
+
open_my_site_by_name @site
|
65
|
+
announcements
|
66
66
|
on Announcements do |list|
|
67
67
|
list.view @title
|
68
68
|
end
|
@@ -6,6 +6,21 @@ class AssessmentObject
|
|
6
6
|
include DateFactory
|
7
7
|
include Workflows
|
8
8
|
|
9
|
+
def question_types
|
10
|
+
{
|
11
|
+
:"Multiple Choice"=>MultipleChoiceQuestion,
|
12
|
+
:Survey=>SurveyQuestion,
|
13
|
+
:"Short Answer/Essay"=>ShortAnswerQuestion,
|
14
|
+
:"Fill in the Blank"=>FillInBlankQuestion,
|
15
|
+
:"Numeric Response"=>NumericResponseQuestion,
|
16
|
+
:Matching=>MatchingQuestion,
|
17
|
+
:"True False"=>TrueFalseQuestion,
|
18
|
+
:"Audio Recording"=>AudioRecordingQuestion,
|
19
|
+
:"File Upload"=>FileUploadQuestion,
|
20
|
+
:"Calculated Question"=>CalculatedQuestion
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
9
24
|
attr_accessor :title, :site, :questions, :parts, :status, :type, :available_date,
|
10
25
|
:due_date, :retract_date, :feedback_authoring, :feedback_delivery, :feedback_date,
|
11
26
|
:release_to, :release, :release_options, :secondary_id, :secondary_password,
|
@@ -47,8 +62,8 @@ class AssessmentObject
|
|
47
62
|
end
|
48
63
|
|
49
64
|
def create
|
50
|
-
|
51
|
-
tests_and_quizzes
|
65
|
+
open_my_site_by_name @site
|
66
|
+
tests_and_quizzes
|
52
67
|
reset
|
53
68
|
on_page AssessmentsList do |page|
|
54
69
|
page.title.set @title
|
@@ -117,8 +132,8 @@ class AssessmentObject
|
|
117
132
|
end
|
118
133
|
|
119
134
|
def publish
|
120
|
-
|
121
|
-
tests_and_quizzes
|
135
|
+
open_my_site_by_name @site
|
136
|
+
tests_and_quizzes
|
122
137
|
reset
|
123
138
|
on AssessmentsList do |list|
|
124
139
|
list.publish @title
|
@@ -144,10 +159,11 @@ class AssessmentObject
|
|
144
159
|
position
|
145
160
|
defaults = {
|
146
161
|
:assessment=>@title,
|
147
|
-
:part=>@parts[rand(@parts.length)].title
|
162
|
+
:part=>@parts[rand(@parts.length)].title,
|
163
|
+
:type=>question_types.keys.shuffle[0]
|
148
164
|
}
|
149
165
|
options = defaults.merge(opts)
|
150
|
-
question = make
|
166
|
+
question = make question_types[options[:type].to_sym], options
|
151
167
|
question.create
|
152
168
|
@questions << question
|
153
169
|
end
|
@@ -155,8 +171,8 @@ class AssessmentObject
|
|
155
171
|
private
|
156
172
|
|
157
173
|
def position
|
158
|
-
|
159
|
-
tests_and_quizzes
|
174
|
+
open_my_site_by_name @site
|
175
|
+
tests_and_quizzes
|
160
176
|
unless @browser.frame(:class=>"portletMainIframe").h3.text=="Questions: #{@title}"
|
161
177
|
reset
|
162
178
|
on AssessmentsList do |list|
|
@@ -167,75 +183,10 @@ class AssessmentObject
|
|
167
183
|
|
168
184
|
end
|
169
185
|
|
170
|
-
class QuestionObject
|
171
|
-
|
172
|
-
include Foundry
|
173
|
-
include Utilities
|
174
|
-
include Workflows
|
175
|
-
include StringFactory
|
176
|
-
|
177
|
-
attr_accessor :type, :assessment, :text, :point_value, :part,
|
178
|
-
# Multiple Choice attributes...
|
179
|
-
:correct_type, :answer_credit, :negative_point_value
|
180
|
-
|
181
|
-
def initialize(browser, opts={})
|
182
|
-
@browser = browser
|
183
|
-
defaults = {
|
184
|
-
:type=>QUESTION_TYPES.keys[rand(QUESTION_TYPES.length)],
|
185
|
-
:text=>random_alphanums,
|
186
|
-
:point_value=>(rand(100)+1).to_s
|
187
|
-
|
188
|
-
}
|
189
|
-
options = defaults.merge(opts)
|
190
|
-
set_options(options)
|
191
|
-
requires @assessment
|
192
|
-
end
|
193
|
-
|
194
|
-
QUESTION_TYPES = {
|
195
|
-
:"Multiple Choice"=>:add_multiple_choice,
|
196
|
-
:Survey=>:add_survey#,
|
197
|
-
#:"Short Answer/Essay"=>:add_short_answer,
|
198
|
-
#:"Fill in the Blank"=>:add_fill_in_the_blank,
|
199
|
-
#:"Numeric Response"=>:add_numeric,
|
200
|
-
#:Matching=>:add_matching,
|
201
|
-
#:"True False"=>:add_true_false,
|
202
|
-
#:"Audio Recording"=>:add_audio,
|
203
|
-
#:"File Upload"=>:add_file_upload,
|
204
|
-
#:"Calculated Question"=>:add_calculated_question
|
205
|
-
}
|
206
|
-
|
207
|
-
def create
|
208
|
-
on EditAssessment do |edit|
|
209
|
-
edit.add_question_to_part(@part).select @type
|
210
|
-
end
|
211
|
-
self.send(QUESTION_TYPES[@type.to_sym])
|
212
|
-
end
|
213
|
-
|
214
|
-
private
|
215
|
-
|
216
|
-
def add_multiple_choice
|
217
|
-
on MultipleChoice do |add|
|
218
|
-
add.answer_point_value.set @point_value
|
219
|
-
add.question_text.set @text
|
220
|
-
add.send(@correct_type).set
|
221
|
-
add.send(@answer_credit).set unless @answer_credit==nil
|
222
|
-
add.negative_point_value.set @negative_point_value unless @negative_point_value==nil
|
223
|
-
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
def add_survey
|
228
|
-
on Survey do |add|
|
229
|
-
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
end
|
234
|
-
|
235
186
|
class PartObject
|
236
187
|
|
237
188
|
include Foundry
|
238
|
-
include
|
189
|
+
include DataFactory
|
239
190
|
include Workflows
|
240
191
|
include StringFactory
|
241
192
|
|
@@ -283,6 +234,4 @@ class PartObject
|
|
283
234
|
|
284
235
|
end
|
285
236
|
|
286
|
-
end
|
287
|
-
|
288
|
-
|
237
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class AssessmentSubmissionObject
|
2
|
+
|
3
|
+
include Foundry
|
4
|
+
include DataFactory
|
5
|
+
include StringFactory
|
6
|
+
include DateFactory
|
7
|
+
include Workflows
|
8
|
+
|
9
|
+
attr_accessor :assessment
|
10
|
+
|
11
|
+
def initialize(browser, opts={})
|
12
|
+
@browser = browser
|
13
|
+
|
14
|
+
defaults = {
|
15
|
+
|
16
|
+
}
|
17
|
+
options = defaults.merge(opts)
|
18
|
+
|
19
|
+
set_options(options)
|
20
|
+
# Note that the assessment requirement is for the Assessment Object itself.
|
21
|
+
requires @assessment
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
end
|
@@ -38,10 +38,10 @@ class AssignmentObject
|
|
38
38
|
alias :name :title
|
39
39
|
|
40
40
|
def create
|
41
|
-
open_my_site_by_name @site
|
41
|
+
open_my_site_by_name @site
|
42
42
|
|
43
43
|
# Go to assignments page
|
44
|
-
assignments
|
44
|
+
assignments
|
45
45
|
|
46
46
|
on_page AssignmentsList do |list|
|
47
47
|
list.add
|
@@ -50,40 +50,40 @@ class AssignmentObject
|
|
50
50
|
@allow_resubmission==nil ? @allow_resubmission=checkbox_setting(add.allow_resubmission) : add.allow_resubmission.send(@allow_resubmission)
|
51
51
|
if @allow_resubmission==:set
|
52
52
|
add.num_resubmissions.wait_until_present
|
53
|
-
@num_resubmissions
|
54
|
-
@resubmission[:MON]
|
55
|
-
@resubmission[:day_of_month]
|
56
|
-
@resubmission[:year]
|
57
|
-
@resubmission[:hour]
|
58
|
-
@resubmission[:minute_rounded]
|
59
|
-
@resubmission[:MERIDIAN]
|
53
|
+
@num_resubmissions=get_or_select(@num_resubmissions, add.num_resubmissions)
|
54
|
+
@resubmission[:MON]=get_or_select(@resubmission[:MON], add.resub_until_month)
|
55
|
+
@resubmission[:day_of_month]=get_or_select(@resubmission[:day_of_month], add.resub_until_day)
|
56
|
+
@resubmission[:year]=get_or_select(@resubmission[:year], add.resub_until_year)
|
57
|
+
@resubmission[:hour]=get_or_select(@resubmission[:hour], add.resub_until_hour)
|
58
|
+
@resubmission[:minute_rounded]=get_or_select(@resubmission[:minute_rounded], add.resub_until_minute)
|
59
|
+
@resubmission[:MERIDIAN]=get_or_select(@resubmission[:MERIDIAN], add.resub_until_meridian)
|
60
60
|
end
|
61
61
|
add.title.set @title
|
62
62
|
add.instructions=@instructions
|
63
|
-
@student_submissions
|
64
|
-
@grade_scale
|
65
|
-
@open[:MON]
|
63
|
+
@student_submissions=get_or_select(@student_submissions, add.student_submissions)
|
64
|
+
@grade_scale=get_or_select(@grade_scale, add.grade_scale)
|
65
|
+
@open[:MON]=get_or_select(@open[:MON], add.open_month)
|
66
66
|
add.max_points.set(@max_points) unless @max_points==nil
|
67
|
-
@open[:year]
|
68
|
-
@open[:day_of_month]
|
69
|
-
@open[:hour]
|
70
|
-
@open[:minute_rounded]
|
71
|
-
@open[:MERIDIAN]
|
67
|
+
@open[:year]=get_or_select(@open[:year], add.open_year)
|
68
|
+
@open[:day_of_month]=get_or_select(@open[:day_of_month], add.open_day)
|
69
|
+
@open[:hour]=get_or_select(@open[:hour], add.open_hour)
|
70
|
+
@open[:minute_rounded]=get_or_select(@open[:minute_rounded], add.open_minute)
|
71
|
+
@open[:MERIDIAN]=get_or_select(@open[:MERIDIAN], add.open_meridian)
|
72
72
|
@add_due_date==nil ? @add_due_date=checkbox_setting(add.add_due_date) : add.add_due_date.send(@add_due_date)
|
73
73
|
@add_open_announcement==nil ? @add_open_announcement=checkbox_setting(add.add_open_announcement) : add.add_open_announcement.send(@add_open_announcement)
|
74
74
|
@add_to_gradebook==nil ? @add_to_gradebook=radio_setting(add.add_to_gradebook) : add.add_to_gradebook.send(@add_to_gradebook)
|
75
|
-
@due[:MON]
|
76
|
-
@due[:year]
|
77
|
-
@due[:day_of_month]
|
78
|
-
@due[:hour]
|
79
|
-
@due[:minute_rounded]
|
80
|
-
@due[:MERIDIAN]
|
81
|
-
@accept_until[:MON]
|
82
|
-
@accept_until[:year]
|
83
|
-
@accept_until[:day_of_month]
|
84
|
-
@accept_until[:hour]
|
85
|
-
@accept_until[:minute_rounded]
|
86
|
-
@accept_until[:MERIDIAN]
|
75
|
+
@due[:MON]=get_or_select(@due[:MON], add.due_month)
|
76
|
+
@due[:year]=get_or_select(@due[:year], add.due_year)
|
77
|
+
@due[:day_of_month]=get_or_select(@due[:day_of_month], add.due_day)
|
78
|
+
@due[:hour]=get_or_select(@due[:hour], add.due_hour)
|
79
|
+
@due[:minute_rounded]=get_or_select(@due[:minute_rounded], add.due_minute)
|
80
|
+
@due[:MERIDIAN]=get_or_select(@due[:MERIDIAN], add.due_meridian)
|
81
|
+
@accept_until[:MON]=get_or_select(@accept_until[:MON], add.accept_month)
|
82
|
+
@accept_until[:year]=get_or_select(@accept_until[:year], add.accept_year)
|
83
|
+
@accept_until[:day_of_month]=get_or_select(@accept_until[:day_of_month], add.accept_day)
|
84
|
+
@accept_until[:hour]=get_or_select(@accept_until[:hour], add.accept_hour)
|
85
|
+
@accept_until[:minute_rounded]=get_or_select(@accept_until[:minute_rounded], add.accept_minute)
|
86
|
+
@accept_until[:MERIDIAN]=get_or_select(@accept_until[:MERIDIAN], add.accept_meridian)
|
87
87
|
#@do_not_add_to_gradebook==nil ? @do_not_add_to_gradebook=radio_setting(add.do_not_add_gradebook.set?) :
|
88
88
|
if @status=="Draft"
|
89
89
|
add.save_draft
|
@@ -99,8 +99,8 @@ class AssignmentObject
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def edit opts={}
|
102
|
-
open_my_site_by_name @site
|
103
|
-
assignments
|
102
|
+
open_my_site_by_name @site
|
103
|
+
assignments
|
104
104
|
on AssignmentsList do |list|
|
105
105
|
if @status=="Draft"
|
106
106
|
list.edit_assignment "Draft - #{@title}"
|
@@ -110,12 +110,12 @@ class AssignmentObject
|
|
110
110
|
end
|
111
111
|
|
112
112
|
on AssignmentAdd do |edit|
|
113
|
-
edit.title.
|
113
|
+
edit.title.fit opts[:title]
|
114
114
|
unless opts[:instructions]==nil
|
115
115
|
edit.enter_source_text edit.editor, opts[:instructions]
|
116
116
|
end
|
117
|
-
edit.grade_scale.
|
118
|
-
edit.max_points.
|
117
|
+
edit.grade_scale.fit opts[:grade_scale]
|
118
|
+
edit.max_points.fit opts[:max_points]
|
119
119
|
|
120
120
|
#TODO: All the rest goes here
|
121
121
|
|
@@ -140,8 +140,8 @@ class AssignmentObject
|
|
140
140
|
end
|
141
141
|
|
142
142
|
def get_info
|
143
|
-
open_my_site_by_name @site
|
144
|
-
assignments
|
143
|
+
open_my_site_by_name @site
|
144
|
+
assignments
|
145
145
|
on AssignmentsList do |list|
|
146
146
|
@id = list.get_assignment_id @title
|
147
147
|
@status=list.status_of @title
|
@@ -179,8 +179,8 @@ class AssignmentObject
|
|
179
179
|
end
|
180
180
|
|
181
181
|
def duplicate
|
182
|
-
open_my_site_by_name @site
|
183
|
-
assignments
|
182
|
+
open_my_site_by_name @site
|
183
|
+
assignments
|
184
184
|
reset
|
185
185
|
on AssignmentsList do |list|
|
186
186
|
list.duplicate @title
|
@@ -199,8 +199,8 @@ class AssignmentObject
|
|
199
199
|
# Use this method to open a submitted assignment for viewing
|
200
200
|
# the page.
|
201
201
|
def view_submission
|
202
|
-
open_my_site_by_name @site
|
203
|
-
assignments
|
202
|
+
open_my_site_by_name @site
|
203
|
+
assignments
|
204
204
|
reset
|
205
205
|
on AssignmentsList do |list|
|
206
206
|
list.open_assignment @title
|
@@ -19,8 +19,8 @@ class AssignmentPermissionsObject # TODO: Need to add support for Group-specific
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def set opts={}
|
22
|
-
open_my_site_by_name @site
|
23
|
-
assignments
|
22
|
+
open_my_site_by_name @site
|
23
|
+
assignments
|
24
24
|
reset
|
25
25
|
on AssignmentsList do |list|
|
26
26
|
list.permissions
|
@@ -43,8 +43,8 @@ class AssignmentPermissionsObject # TODO: Need to add support for Group-specific
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def get
|
46
|
-
open_my_site_by_name @site
|
47
|
-
assignments
|
46
|
+
open_my_site_by_name @site
|
47
|
+
assignments
|
48
48
|
reset
|
49
49
|
on AssignmentsList do |list|
|
50
50
|
list.permissions
|
@@ -59,8 +59,8 @@ class AssignmentSubmissionObject
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def grade_submission opts={}
|
62
|
-
open_my_site_by_name @site
|
63
|
-
assignments
|
62
|
+
open_my_site_by_name @site
|
63
|
+
assignments
|
64
64
|
reset
|
65
65
|
on AssignmentsList do |list|
|
66
66
|
list.grade @title
|
@@ -113,8 +113,8 @@ class AssignmentSubmissionObject
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def open
|
116
|
-
open_my_site_by_name @site
|
117
|
-
assignments
|
116
|
+
open_my_site_by_name @site
|
117
|
+
assignments
|
118
118
|
reset
|
119
119
|
on AssignmentsList do |list|
|
120
120
|
list.open_assignment @title
|
@@ -21,8 +21,8 @@ class BloggerPostObject
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def create
|
24
|
-
open_my_site_by_name @site
|
25
|
-
blogs
|
24
|
+
open_my_site_by_name @site
|
25
|
+
blogs
|
26
26
|
# TODO: More needed here
|
27
27
|
end
|
28
28
|
|
@@ -37,7 +37,7 @@ class BloggerPostObject
|
|
37
37
|
def delete
|
38
38
|
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
end
|
42
42
|
|
43
43
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class
|
1
|
+
class CourseSiteObject
|
2
2
|
|
3
3
|
include Foundry
|
4
4
|
include DataFactory
|
@@ -8,7 +8,7 @@ class SiteObject
|
|
8
8
|
|
9
9
|
attr_accessor :name, :id, :subject, :course, :section, :term, :authorizer,
|
10
10
|
:web_content_source, :email, :joiner_role, :creation_date, :web_content_title,
|
11
|
-
:description, :short_description, :site_contact_name, :site_contact_email
|
11
|
+
:description, :short_description, :site_contact_name, :site_contact_email, :participants
|
12
12
|
|
13
13
|
def initialize(browser, opts={})
|
14
14
|
@browser = browser
|
@@ -24,15 +24,16 @@ class SiteObject
|
|
24
24
|
:joiner_role => "Student",
|
25
25
|
:description => random_alphanums(30),
|
26
26
|
:short_description => random_alphanums,
|
27
|
-
:site_contact_name => random_alphanums(5)+" "+random_alphanums(8)
|
27
|
+
:site_contact_name => random_alphanums(5)+" "+random_alphanums(8),
|
28
|
+
:participants=>{}
|
28
29
|
}
|
29
30
|
options = defaults.merge(opts)
|
30
31
|
set_options(options)
|
31
32
|
end
|
32
33
|
|
33
34
|
def create
|
34
|
-
my_workspace
|
35
|
-
site_setup
|
35
|
+
my_workspace
|
36
|
+
site_setup
|
36
37
|
on_page SiteSetup do |page|
|
37
38
|
page.new
|
38
39
|
end
|
@@ -92,7 +93,7 @@ class SiteObject
|
|
92
93
|
end
|
93
94
|
|
94
95
|
# Create a string that will match the new Site's "creation date" string
|
95
|
-
@creation_date =
|
96
|
+
@creation_date = right_now[:sakai]
|
96
97
|
|
97
98
|
on SiteSetup do |site_setup|
|
98
99
|
site_setup.search(Regexp.escape(@subject))
|
@@ -104,8 +105,8 @@ class SiteObject
|
|
104
105
|
end
|
105
106
|
|
106
107
|
def create_and_reuse_site(site_name)
|
107
|
-
my_workspace
|
108
|
-
site_setup
|
108
|
+
my_workspace
|
109
|
+
site_setup
|
109
110
|
on_page SiteSetup do |page|
|
110
111
|
page.new
|
111
112
|
end
|
@@ -216,7 +217,7 @@ class SiteObject
|
|
216
217
|
}
|
217
218
|
options = defaults.merge(opts)
|
218
219
|
|
219
|
-
new_site = make
|
220
|
+
new_site = make CourseSiteObject, options
|
220
221
|
|
221
222
|
new_site.name=options[:name]
|
222
223
|
new_site.subject=options[:subject]
|
@@ -233,8 +234,8 @@ class SiteObject
|
|
233
234
|
new_site.site_contact_email=options[:site_contact_email]
|
234
235
|
new_site.term=options[:term]
|
235
236
|
|
236
|
-
open_my_site_by_name @site
|
237
|
-
site_editor
|
237
|
+
open_my_site_by_name @site
|
238
|
+
site_editor
|
238
239
|
on SiteEditor do |edit|
|
239
240
|
edit.duplicate_site
|
240
241
|
end
|
@@ -244,7 +245,7 @@ class SiteObject
|
|
244
245
|
dupe.duplicate
|
245
246
|
end
|
246
247
|
my_workspace
|
247
|
-
site_setup
|
248
|
+
site_setup
|
248
249
|
on SiteSetup do |sites|
|
249
250
|
sites.search(Regexp.escape(new_site.name))
|
250
251
|
end
|
@@ -256,20 +257,19 @@ class SiteObject
|
|
256
257
|
|
257
258
|
end
|
258
259
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
site_editor unless @browser.title=~/Site Editor$/
|
260
|
+
def add_official_participants(role, *participants)
|
261
|
+
list_of_ids=participants.join("\n")
|
262
|
+
open_my_site_by_name @title
|
263
|
+
site_editor
|
264
264
|
on SiteEditor do |site|
|
265
265
|
site.add_participants
|
266
266
|
end
|
267
267
|
on SiteSetupAddParticipants do |add|
|
268
|
-
add.official_participants.set
|
268
|
+
add.official_participants.set list_of_ids
|
269
269
|
add.continue
|
270
270
|
end
|
271
271
|
on SiteSetupChooseRole do |choose|
|
272
|
-
choose.radio_button(
|
272
|
+
choose.radio_button(role).set
|
273
273
|
choose.continue
|
274
274
|
end
|
275
275
|
on SiteSetupParticipantEmail do |send|
|
@@ -278,7 +278,11 @@ class SiteObject
|
|
278
278
|
on SiteSetupParticipantConfirm do |confirm|
|
279
279
|
confirm.finish
|
280
280
|
end
|
281
|
+
if @participants.has_key?(role)
|
282
|
+
@participants[role].insert(-1, participants).flatten!
|
283
|
+
else
|
284
|
+
@participants.store(role, participants)
|
285
|
+
end
|
281
286
|
end
|
282
287
|
|
283
|
-
|
284
288
|
end
|
@@ -30,8 +30,8 @@ class EventObject
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def create
|
33
|
-
open_my_site_by_name @site
|
34
|
-
calendar
|
33
|
+
open_my_site_by_name @site
|
34
|
+
calendar
|
35
35
|
on Calendar do |cal|
|
36
36
|
cal.add_event
|
37
37
|
end
|
@@ -63,8 +63,8 @@ class EventObject
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def view
|
66
|
-
open_my_site_by_name @site
|
67
|
-
calendar
|
66
|
+
open_my_site_by_name @site
|
67
|
+
calendar
|
68
68
|
on Calendar do |cal|
|
69
69
|
cal.open_event @title
|
70
70
|
end
|