sambal-cle 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/Gemfile +7 -0
  2. data/Gemfile.lock +44 -0
  3. data/lib/sambal-cle/data_objects/announcement.rb +7 -7
  4. data/lib/sambal-cle/data_objects/assessment.rb +26 -77
  5. data/lib/sambal-cle/data_objects/assessment_submission.rb +26 -0
  6. data/lib/sambal-cle/data_objects/assignment.rb +40 -40
  7. data/lib/sambal-cle/data_objects/assignment_permissions.rb +4 -4
  8. data/lib/sambal-cle/data_objects/assignment_submission.rb +4 -4
  9. data/lib/sambal-cle/data_objects/blog.rb +2 -2
  10. data/lib/sambal-cle/data_objects/blogger.rb +3 -3
  11. data/lib/sambal-cle/data_objects/chat_room.rb +2 -2
  12. data/lib/sambal-cle/data_objects/{site.rb → course.rb} +24 -20
  13. data/lib/sambal-cle/data_objects/event.rb +4 -4
  14. data/lib/sambal-cle/data_objects/forum.rb +21 -22
  15. data/lib/sambal-cle/data_objects/glossary_term.rb +71 -0
  16. data/lib/sambal-cle/data_objects/lesson.rb +10 -9
  17. data/lib/sambal-cle/data_objects/matrix.rb +142 -0
  18. data/lib/sambal-cle/data_objects/message.rb +2 -2
  19. data/lib/sambal-cle/data_objects/poll.rb +2 -2
  20. data/lib/sambal-cle/data_objects/portfolio.rb +120 -0
  21. data/lib/sambal-cle/data_objects/questions.rb +690 -0
  22. data/lib/sambal-cle/data_objects/resource.rb +12 -12
  23. data/lib/sambal-cle/data_objects/syllabus.rb +7 -7
  24. data/lib/sambal-cle/data_objects/web_content_tool.rb +2 -2
  25. data/lib/sambal-cle/data_objects/wiki.rb +6 -6
  26. data/lib/sambal-cle/page_objects/assessments.rb +165 -157
  27. data/lib/sambal-cle/page_objects/assignments.rb +17 -17
  28. data/lib/sambal-cle/page_objects/glossary.rb +14 -64
  29. data/lib/sambal-cle/page_objects/matrix.rb +77 -113
  30. data/lib/sambal-cle/page_objects/portfolios.rb +0 -2
  31. data/lib/sambal-cle/page_objects/resources.rb +4 -4
  32. data/lib/sambal-cle/page_objects/site_setup.rb +31 -23
  33. data/lib/sambal-cle/page_objects/sites.rb +2 -12
  34. data/lib/sambal-cle/utilities.rb +0 -6
  35. data/lib/sambal-cle/workflows.rb +77 -76
  36. data/lib/sambal-cle.rb +2 -2
  37. data/sambal-cle.gemspec +2 -2
  38. data/test/add_assignment_to_calendar_spec.rb +4 -4
  39. data/test/assessment_create_spec.rb +1 -1
  40. data/test/assessment_feedback_spec.rb +78 -0
  41. data/test/assessment_publish_spec.rb +102 -0
  42. data/test/assignment_announcements_spec.rb +4 -4
  43. data/test/assignment_duplicate_spec.rb +4 -4
  44. data/test/assignment_gradebook_spec.rb +4 -4
  45. data/test/assignment_permissions_spec.rb +5 -5
  46. data/test/assignments_grading_spec.rb +4 -4
  47. data/test/assignments_submission_spec.rb +4 -4
  48. data/test/duplicate_site_spec.rb +2 -2
  49. data/test/glossary_term_create_spec.rb +71 -0
  50. data/test/import_site_content_spec.rb +3 -3
  51. data/test/test_spec.rb +51 -0
  52. metadata +16 -5
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'rspec'
4
+ gem 'test-factory'
5
+ gem 'watir-webdriver'
6
+
7
+ gemspec
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 @site unless @browser.title=~/#{@site}/
29
- announcements unless @browser.title=~/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 unless @browser.title=~/#{@site}/
47
- announcements unless @browser.title=~/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.set opts[:title] unless opts[:title]==nil
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 unless @browser.title=~/#{@site}/
65
- announcements unless @browser.title=~/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
- my_workspace.open_my_site_by_name @site unless @browser.title=~/#{@site}/
51
- tests_and_quizzes unless @browser.title=~/Tests & 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
- my_workspace.open_my_site_by_name @site unless @browser.title=~/#{@site}/
121
- tests_and_quizzes unless @browser.title=~/Tests & 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 QuestionObject, options
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
- my_workspace.open_my_site_by_name @site unless @browser.title=~/#{@site}/
159
- tests_and_quizzes unless @browser.title=~/Tests & 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 Utilities
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 unless @browser.title=~/#{@site}/
41
+ open_my_site_by_name @site
42
42
 
43
43
  # Go to assignments page
44
- assignments unless @browser.title=~/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==nil ? @num_resubmissions=add.num_resubmissions.selected_options[0].text : add.num_resubmissions.select(@num_resubmissions)
54
- @resubmission[:MON]==nil ? @resubmission[:MON]=add.resub_until_month.selected_options[0].text : add.resub_until_month.select(@resubmission[:MON])
55
- @resubmission[:day_of_month]==nil ? @resubmission[:day_of_month]=add.resub_until_day.selected_options[0].text : add.select(@resubmission[:day_of_month])
56
- @resubmission[:year]==nil ? @resubmission[:year]=add.resub_until_year.selected_options[0].text : add.select(@resubmission[:year])
57
- @resubmission[:hour]==nil ? @resubmission[:hour]=add.resub_until_hour.selected_options[0].text : add.select(@resubmission[:hour])
58
- @resubmission[:minute_rounded]==nil ? @resubmission[:minute_rounded]=add.resub_until_minute.selected_options[0].text : add.select(@resubmission[:minute_rounded])
59
- @resubmission[:MERIDIAN]==nil ? @resubmission[:MERIDIAN]=add.resub_until_meridian.selected_options[0].text : add.select(@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==nil ? @student_submissions=add.student_submissions.selected_options[0].text : add.student_submissions.select(@student_submissions)
64
- @grade_scale==nil ? @grade_scale=add.grade_scale.selected_options[0].text : add.grade_scale.select(@grade_scale)
65
- @open[:MON]==nil ? @open[:MON]=add.open_month.selected_options[0].text : add.open_month.select(@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]==nil ? @open[:year]=add.open_year.selected_options[0].text : add.open_year.select(@open[:year])
68
- @open[:day_of_month]==nil ? @open[:day_of_month]=add.open_day.selected_options[0].text : add.open_day.select(@open[:day_of_month])
69
- @open[:hour]==nil ? @open[:hour]=add.open_hour.selected_options[0].text : add.open_hour.select(@open[:hour])
70
- @open[:minute_rounded]==nil ? @open[:minute_rounded]=add.open_minute.selected_options[0].text : add.open_minute.select(@open[:minute_rounded])
71
- @open[:MERIDIAN]==nil ? @open[:MERIDIAN]=add.open_meridian.selected_options[0].text : add.open_meridian.select(@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]==nil ? @due[:MON]=add.due_month.selected_options[0].text : add.due_month.select(@due[:MON])
76
- @due[:year]==nil ? @due[:year]=add.due_year.selected_options[0].text : add.due_year.select(@due[:year])
77
- @due[:day_of_month]==nil ? @due[:day_of_month]=add.due_day.selected_options[0].text : add.due_day.select(@due[:day_of_month])
78
- @due[:hour]==nil ? @due[:hour]=add.due_hour.selected_options[0].text : add.due_hour.select(@due[:hour])
79
- @due[:minute_rounded]==nil ? @due[:minute_rounded]=add.due_minute.selected_options[0].text : add.due_minute.select(@due[:minute_rounded])
80
- @due[:MERIDIAN]==nil ? @due[:MERIDIAN]=add.due_meridian.selected_options[0].text : add.due_meridian.select(@due[:MERIDIAN])
81
- @accept_until[:MON]==nil ? @accept_until[:MON]=add.accept_month.selected_options[0].text : add.accept_month.select(@accept_until[:MON])
82
- @accept_until[:year]==nil ? @accept_until[:year]=add.accept_year.selected_options[0].text : add.accept_year.select(@accept_until[:year])
83
- @accept_until[:day_of_month]==nil ? @accept_until[:day_of_month]=add.accept_day.selected_options[0].text : add.accept_day.select(@accept_until[:day_of_month])
84
- @accept_until[:hour]==nil ? @accept_until[:hour]=add.accept_hour.selected_options[0].text : add.accept_hour.select(@accept_until[:hour])
85
- @accept_until[:minute_rounded]==nil ? @accept_until[:minute_rounded]=add.accept_minute.selected_options[0].text : add.accept_minute.select(@accept_until[:minute_rounded])
86
- @accept_until[:MERIDIAN]==nil ? @accept_until[:MERIDIAN]=add.accept_meridian.selected_options[0].text : add.accept_meridian.select(@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 unless @browser.title=~/#{@site}/
103
- assignments unless @browser.title=~/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.set opts[:title] unless opts[:title]==nil
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.select opts[:grade_scale] unless opts[:grade_scale]==nil
118
- edit.max_points.set opts[:max_points] unless opts[:max_points]==nil
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 unless @browser.title=~/#{@site}/
144
- assignments unless @browser.title=~/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 unless @browser.title=~/#{@site}/
183
- assignments unless @browser.title=~/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 unless @browser.title=~/#{@site}/
203
- assignments unless @browser.title=~/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 unless @browser.title=~/#{@site}/
23
- assignments unless @browser.title=~/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 unless @browser.title=~/#{@site}/
47
- assignments unless @browser.title=~/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 unless @browser.title=~/#{@site}/
63
- assignments unless @browser.title=~/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 unless @browser.title=~/#{@site}/
117
- assignments unless @browser.title=~/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 BlogEntryObject
21
21
  end
22
22
 
23
23
  def create
24
- open_my_site_by_name @site unless @browser.title=~/#{@site}/
25
- blogs unless @browser.title=~/Blogs$/
24
+ open_my_site_by_name @site
25
+ blogs
26
26
  # TODO: More needed here
27
27
  end
28
28
 
@@ -21,8 +21,8 @@ class BloggerPostObject
21
21
  end
22
22
 
23
23
  def create
24
- open_my_site_by_name @site unless @browser.title=~/#{@site}/
25
- blogs unless @browser.title=~/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
 
@@ -23,8 +23,8 @@ class ChatRoomObject
23
23
  end
24
24
 
25
25
  def create
26
- open_my_site_by_name @site unless @browser.title=~/#{@site}/
27
- chat_room unless @browser.title=~/Chat Room$/
26
+ open_my_site_by_name
27
+ chat_room
28
28
  on ChatRoom do |chat|
29
29
  chat.options
30
30
  end
@@ -1,4 +1,4 @@
1
- class SiteObject
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 unless @browser.title=~/My Workspace/
35
- site_setup unless @browser.title=~/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 = make_date(Time.now)
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 unless @browser.title=~/My Workspace/
108
- site_setup unless @browser.title=~/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 SiteObject, options
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 unless @browser.title=~/#{@site}/
237
- site_editor unless @browser.title=~/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 unless @browser.title=~/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
- # TODO: Improve this method to better take advantage of the UserObject...
260
- def add_official_participants opts={}
261
- participants = opts[:participants].join("\n")
262
- open_my_site_by_name @name unless @browser.title=~/#{@name}/
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 participants
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(opts[:role]).set
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 unless @browser.title=~/#{@site}/
34
- calendar unless @browser.title=~/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 unless @browser.title=~/#{@site}/
67
- calendar unless @browser.title=~/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