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.
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
@@ -16,10 +16,4 @@ 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...
20
- # Shorthand method for making a data object for testing.
21
- #def make data_object_class, opts={}
22
- # data_object_class.new @browser, opts
23
- #end
24
-
25
19
  end
@@ -1,124 +1,123 @@
1
1
  # Workflows is a module containing helper navigation methods
2
2
  module Workflows
3
3
 
4
- def self.menu_link name, opts={}
4
+ def self.menu_link name, title, opts={}
5
5
  define_method name.to_s do
6
- @browser.link(opts).click
6
+ @browser.link(opts).click unless @browser.title=~/#{title}/
7
7
  end
8
8
  end
9
9
 
10
10
  # Opens "My Sites" and then clicks on the matching
11
- # Site name. Shortens the name used for search so
11
+ # Site name--unless the specified site is what you're already in.
12
+ # Shortens the name used for search so
12
13
  # that truncated names are not a problem.
13
- # Should be followed by the Home class.
14
- #
15
- # Will error out if there are not matching links.
16
14
  def open_my_site_by_name(name)
17
- truncated_name = name[0..19]
18
- @browser.link(:text, "My Sites").click
19
- @browser.link(:text, /#{Regexp.escape(truncated_name)}/).click
15
+ unless @browser.title=~/#{name}/
16
+ @browser.link(:text, "My Sites").click
17
+ @browser.link(:text, /#{Regexp.escape(name[0..19])}/).click
18
+ end
20
19
  end
21
20
 
22
21
  # Clicks the "Account" link in the Adminstration Workspace
23
22
  # Should be followed by the UserAccount class.
24
23
  #
25
24
  # Throws an error if the link is not present.
26
- menu_link :account, :text=>"Account"
25
+ menu_link :account, "Account", :text=>"Account"
27
26
 
28
27
  # Clicks the "Aliases" link in the Administration Workspace
29
28
  # menu, then should be followed by the Aliases class.
30
- menu_link :aliases, :text=>"Aliases"
29
+ menu_link :aliases, "Aliases", :text=>"Aliases"
31
30
 
32
31
  # Clicks the link for the Administration Workspace, then
33
32
  # should be followed by the MyWorkspace class.
34
- menu_link :administration_workspace, :text=>"Administration Workspace"
33
+ menu_link :administration_workspace, "Administration Workspace", :text=>"Administration Workspace"
35
34
 
36
35
  # Clicks the Announcements link goes to
37
36
  # the Announcements class.
38
- menu_link :announcements, :class=>'icon-sakai-announcements'
37
+ menu_link :announcements, "Announcements", :class=>'icon-sakai-announcements'
39
38
 
40
39
  # Clicks the Assignments link, goes to
41
40
  # the AssignmentsList class.
42
- menu_link :assignments, :class=>"icon-sakai-assignment-grades"
41
+ menu_link :assignments, "Assignments", :class=>"icon-sakai-assignment-grades"
43
42
 
44
43
  # BasicLTI class
45
- menu_link :basic_lti, :class=>"icon-sakai-basiclti"
44
+ menu_link :basic_lti, "Basic LTI", :class=>"icon-sakai-basiclti"
46
45
 
47
46
  # Blogs class
48
- menu_link :blogs, :class=>"icon-sakai-blogwow"
47
+ menu_link :blogs, "Blogs", :class=>"icon-sakai-blogwow"
49
48
 
50
49
  # Clicks the Blogger link in the Site menu and
51
50
  # instantiates the Blogger Class.
52
- menu_link :blogger, :class=>"icon-blogger"
51
+ menu_link :blogger, "Blogger", :class=>"icon-blogger"
53
52
 
54
53
  # Clicks the Calendar link, then instantiates
55
54
  # the Calendar class.
56
- menu_link :calendar, :text=>"Calendar"
55
+ menu_link :calendar, "Calendar", :text=>"Calendar"
57
56
 
58
- menu_link :certification, :text=>"Certification"
57
+ menu_link :certification, "Certification", :text=>"Certification"
59
58
 
60
59
  # ChatRoom class
61
- menu_link :chat_room, :class=>"icon-sakai-chat"
60
+ menu_link :chat_room, "Chat Room", :class=>"icon-sakai-chat"
62
61
 
63
- menu_link :configuration_viewer, :text=>"Configuration Viewer"
64
- menu_link :customizer, :text=>"Customizer"
62
+ menu_link :configuration_viewer, "Configuration Viewer", :text=>"Configuration Viewer"
63
+ menu_link :customizer, "Customizer", :text=>"Customizer"
65
64
 
66
65
  # JForum page class.
67
- menu_link :discussion_forums, :class=>"icon-sakai-jforum-tool"
66
+ menu_link :discussion_forums, "Discussion Forums", :class=>"icon-sakai-jforum-tool"
68
67
 
69
68
  # DropBox class
70
- menu_link :drop_box, :class=>"icon-sakai-dropbox"
69
+ menu_link :drop_box, "Drop Box", :class=>"icon-sakai-dropbox"
71
70
 
72
- menu_link :email, :text=>"Email"
71
+ menu_link :email, "Email", :text=>"Email"
73
72
 
74
73
  # Email Archive class
75
- menu_link :email_archive, :class=>"icon-sakai-mailbox"
74
+ menu_link :email_archive, "Email Archive", :class=>"icon-sakai-mailbox"
76
75
 
77
- menu_link :email_template_administration, :text=>"Email Template Administration"
76
+ menu_link :email_template_administration, "Email Template Administration", :text=>"Email Template Administration"
78
77
 
79
78
  # EvaluationSystem class
80
- menu_link :evaluation_system, :class=>"icon-sakai-rsf-evaluation"
79
+ menu_link :evaluation_system, "Evaluation System", :class=>"icon-sakai-rsf-evaluation"
81
80
 
82
81
  # Feedback class
83
- menu_link :feedback, :class=>"icon-sakai-postem"
82
+ menu_link :feedback, "Feedback", :class=>"icon-sakai-postem"
84
83
 
85
84
  # Forms class
86
- menu_link :forms, :text=>"Forms", :class=>"icon-sakai-metaobj"
85
+ menu_link :forms, "Forms", :text=>"Forms", :class=>"icon-sakai-metaobj"
87
86
 
88
87
  # Forums class.
89
- menu_link :forums, :text=>"Forums"
88
+ menu_link :forums, "Forums", :text=>"Forums"
90
89
 
91
90
  # Glossary Class.
92
- menu_link :glossary, :text=>"Glossary"
91
+ menu_link :glossary, "Glossary", :text=>"Glossary"
93
92
 
94
93
  # Gradebook Class.
95
- menu_link :gradebook, :text=>"Gradebook"
94
+ menu_link :gradebook, "Gradebook", :text=>"Gradebook"
96
95
 
97
96
  # Gradebook2 class
98
- menu_link :gradebook2, :text=>"Gradebook2"
97
+ menu_link :gradebook2, "Gradebook2", :text=>"Gradebook2"
99
98
 
100
- menu_link :help, :text=>"Help"
99
+ menu_link :help, "Help", :text=>"Help"
101
100
 
102
101
  # Home class--unless the target page happens to be
103
102
  # My Workspace, in which case the MyWorkspace
104
103
  # page should be used.
105
- menu_link :home, :text=>"Home"
104
+ menu_link :home, "Home", :text=>"Home"
106
105
 
107
106
  # Job Scheduler class.
108
- menu_link :job_scheduler, :text=>"Job Scheduler"
107
+ menu_link :job_scheduler, "Job Scheduler", :text=>"Job Scheduler"
109
108
 
110
109
  # Lessons class
111
- menu_link :lessons, :text=>"Lessons"
110
+ menu_link :lessons, "Lessons", :text=>"Lessons"
112
111
 
113
- menu_link :lesson_builder, :text=>"Lesson Builder"
114
- menu_link :link_tool, :text=>"Link Tool"
115
- menu_link :live_virtual_classroom, :text=>"Live Virtual Classroom"
112
+ menu_link :lesson_builder, "Lesson Builder", :text=>"Lesson Builder"
113
+ menu_link :link_tool, "Link Tool", :text=>"Link Tool"
114
+ menu_link :live_virtual_classroom, "Live Virtual Classroom", :text=>"Live Virtual Classroom"
116
115
 
117
116
  # Matrices Class
118
- menu_link :matrices, :text=>"Matrices"
117
+ menu_link :matrices, "Matrices", :text=>"Matrices"
119
118
 
120
119
  # MediaGallery class
121
- menu_link :media_gallery, :class=>"icon-sakai-kaltura"
120
+ menu_link :media_gallery, "Media Gallery", :class=>"icon-sakai-kaltura"
122
121
 
123
122
  menu_link :membership, :text=>"Membership"
124
123
  menu_link :memory, :text=>"Memory"
@@ -128,92 +127,94 @@ module Workflows
128
127
  menu_link :my_sites, :text=>"My Sites"
129
128
 
130
129
  # MyWorkspace Class.
131
- menu_link :my_workspace, :text=>"My Workspace"
130
+ menu_link :my_workspace, "My Workspace", :text=>"My Workspace"
132
131
 
133
132
  # News
134
- menu_link :news, :class=>"icon-sakai-news"
133
+ menu_link :news, "News", :class=>"icon-sakai-news"
135
134
 
136
- menu_link :online, :text=>"On-Line"
137
- menu_link :oauth_providers, :text=>"Oauth Providers"
138
- menu_link :oauth_tokens, :text=>"Oauth Tokens"
135
+ menu_link :online, "On-Line", :text=>"On-Line"
136
+ menu_link :oauth_providers, "Oauth Providers", :text=>"Oauth Providers"
137
+ menu_link :oauth_tokens, "Oauth Tokens", :text=>"Oauth Tokens"
139
138
  menu_link :openSyllabus, :text=>"OpenSyllabus"
140
139
 
141
140
  # Podcasts
142
- menu_link :podcasts, :class=>"icon-sakai-podcasts"
141
+ menu_link :podcasts, "Podcasts", :class=>"icon-sakai-podcasts"
143
142
 
144
143
  # Polls class
145
- menu_link :polls, :class=>"icon-sakai-poll"
144
+ menu_link :polls, "Polls", :class=>"icon-sakai-poll"
146
145
 
147
146
  # Portfolios class
148
- menu_link :portfolios, :class=>"icon-osp-presentation"
147
+ menu_link :portfolios, "Portfolios", :class=>"icon-osp-presentation"
149
148
 
150
149
  # PortfolioTemplates
151
- menu_link :portfolio_templates, :text=>"Portfolio Templates"
150
+ menu_link :portfolio_templates, "Portfolio Templates", :text=>"Portfolio Templates"
152
151
 
153
- menu_link :preferences, :text=>"Preferences"
152
+ menu_link :preferences, "Preferences", :text=>"Preferences"
154
153
 
155
- menu_link :profile, :text=>"Profile"
154
+ menu_link :profile, "Profile", :text=>"Profile"
156
155
 
157
156
  # Profile2 class
158
- menu_link :profile2, :class=>"icon-sakai-profile2"
157
+ menu_link :profile2, "Profile2", :class=>"icon-sakai-profile2"
159
158
 
160
- menu_link :realms, :text=>"Realms"
159
+ menu_link :realms, "Realms", :text=>"Realms"
161
160
 
162
161
  # Resources class.
163
- menu_link :resources, :text=>"Resources"
162
+ menu_link :resources, "Resources", :text=>"Resources"
164
163
 
165
164
  # Roster
166
- menu_link :roster, :class=>"icon-sakai-site-roster"
165
+ menu_link :roster, "Roster", :class=>"icon-sakai-site-roster"
167
166
 
168
- menu_link :rsmart_support, :text=>"rSmart Support"
167
+ menu_link :rsmart_support, "rSmart Support", :text=>"rSmart Support"
169
168
 
170
169
  # Because "Search" is used in many pages,
171
170
  # The Search button found in the Site Management
172
171
  # Menu must be given the more explicit name
173
- menu_link :site_management_search, :class=>"icon-sakai-search"
172
+ menu_link :site_management_search, "Search", :class=>"icon-sakai-search"
174
173
 
175
174
  # Sections
176
- menu_link :sections, :class=>"icon-sakai-sections"
175
+ menu_link :sections, "Sections", :class=>"icon-sakai-sections"
177
176
 
178
- menu_link :site_archive, :text=>"Site Archive"
177
+ menu_link :site_archive, "Site Archive", :text=>"Site Archive"
179
178
 
180
179
  # SiteEditor class.
181
- menu_link :site_editor, :text=>"Site Editor"
180
+ menu_link :site_editor, "Site Editor", :text=>"Site Editor"
182
181
 
183
182
  # SiteSetup class.
184
- menu_link :site_setup, :text=>"Site Setup"
183
+ menu_link :site_setup, "Site Setup", :text=>"Site Setup"
185
184
 
186
- menu_link :site_statistics, :text=>"Site Statistics"
185
+ menu_link :site_statistics, "Site Statistics", :text=>"Site Statistics"
187
186
 
188
187
  # Sites class.
189
- menu_link :sites, :class=>"icon-sakai-sites"
188
+ menu_link :sites, "Sites", :class=>"icon-sakai-sites"
190
189
 
191
- menu_link :skin_manager, :text=>"Skin Manager"
192
- menu_link :super_user, :text=>"Super User"
190
+ menu_link :skin_manager, "Skin Manager", :text=>"Skin Manager"
191
+ menu_link :super_user, "Super User", :text=>"Super User"
193
192
 
194
193
  # Styles
195
- menu_link :styles, :text=>"Styles"
194
+ menu_link :styles, "Styles", :text=>"Styles"
196
195
 
197
196
  # Syllabus class.
198
- menu_link :syllabus, :text=>"Syllabus"
197
+ menu_link :syllabus, "Syllabus", :text=>"Syllabus"
199
198
 
200
199
  # AssessmentsList class OR the TakeAssessmentList for students
201
- menu_link :assessments, :class=>"icon-sakai-samigo"
200
+ menu_link :assessments, "Tests & Quizzes", :class=>"icon-sakai-samigo"
202
201
  alias :tests_and_quizzes :assessments
203
202
 
204
203
  # UserMembership
205
- menu_link :user_membership, :class=>"icon-sakai-usermembership"
204
+ menu_link :user_membership, "User Membership", :class=>"icon-sakai-usermembership"
206
205
 
207
206
  # Users
208
- menu_link :users, :class=>"icon-sakai-users"
207
+ menu_link :users, "Users", :class=>"icon-sakai-users"
209
208
 
210
209
  # WebContent
211
- menu_link :web_content, :class=>"icon-sakai-iframe"
210
+ menu_link :web_content, "Web Content", :class=>"icon-sakai-iframe"
212
211
 
213
212
  # Wikis
214
- menu_link :wiki, :class=>"icon-sakai-rwiki"
213
+ menu_link :wiki, "Wiki", :class=>"icon-sakai-rwiki"
215
214
 
216
215
  # The Page Reset button, found on all Site pages
217
- menu_link :reset, :href=>/tool-reset/
216
+ def reset
217
+ @browser.link(:href=>/tool-reset/).click
218
+ end
218
219
 
219
220
  end
data/lib/sambal-cle.rb CHANGED
@@ -7,9 +7,9 @@ Dir["#{File.dirname(__FILE__)}/sambal-cle/data_objects/*.rb"].each {|f| require
7
7
  # Initialize this class at the start of your test cases to
8
8
  # open the specified test browser at the specified Sakai welcome page URL.
9
9
  #
10
- # The initialization will return the LoginPage class object as well as
10
+ # The initialization will
11
11
  # create the @browser variable used throughout the page classes
12
- class SakaiCLE
12
+ class SambalCLE
13
13
 
14
14
  attr_reader :browser
15
15
 
data/sambal-cle.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'sambal-cle'
3
- s.version = '0.1.4'
3
+ s.version = '0.1.5'
4
4
  s.summary = %q{rSmart's test framework for testing Sakai-CLE}
5
5
  s.description = %q{This gem is used for creating test scripts for the Sakai Collaborative Learning Environment.}
6
6
  s.files = Dir.glob("**/**/**")
@@ -8,6 +8,6 @@ spec = Gem::Specification.new do |s|
8
8
  s.authors = ["Abraham Heward", "Jon Utter"]
9
9
  s.email = %w{"aheward@rsmart.com" "jutter@rsmart.com"}
10
10
  s.homepage = 'https://github.com/rSmart'
11
- s.add_dependency 'test-factory', '>= 0.0.1'
11
+ s.add_dependency 'test-factory', '>= 0.0.7'
12
12
  s.required_ruby_version = '>= 1.9.2'
13
13
  end
@@ -15,7 +15,7 @@ describe "Assignment Due Date on Calendar" do
15
15
  # Get the test configuration data
16
16
  @config = YAML.load_file("config.yml")
17
17
  @directory = YAML.load_file("directory.yml")
18
- @sakai = SakaiCLE.new(@config['browser'], @config['url'])
18
+ @sakai = SambalCLE.new(@config['browser'], @config['url'])
19
19
  @browser = @sakai.browser
20
20
 
21
21
  @student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
@@ -28,10 +28,10 @@ describe "Assignment Due Date on Calendar" do
28
28
  :type=>"Instructor"
29
29
  @instructor1.log_in
30
30
 
31
- @site = make SiteObject
31
+ @site = make CourseSiteObject
32
32
  @site.create
33
- @site.add_official_participants :role=>@student.type, :participants=>[@student.id]
34
- @site.add_official_participants :role=>@instructor2.type, :participants=>[@instructor2.id]
33
+ @site.add_official_participants @student.type, @student.id
34
+ @site.add_official_participants @instructor2.type, @instructor2.id
35
35
 
36
36
  @assignment1 = make AssignmentObject, :site=>@site.name, :title=>random_string, :grade_scale=>"Letter grade", :instructions=>random_multiline(500, 10, :string), :open=>minutes_ago(5)
37
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)
@@ -14,7 +14,7 @@ describe "Assessments" do
14
14
  # Get the test configuration data
15
15
  @config = YAML.load_file("config.yml")
16
16
  @directory = YAML.load_file("directory.yml")
17
- @sakai = SakaiCLE.new(@config['browser'], @config['url'])
17
+ @sakai = SambalCLE.new(@config['browser'], @config['url'])
18
18
  @browser = @sakai.browser
19
19
 
20
20
  @student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
@@ -0,0 +1,78 @@
1
+ require 'rspec'
2
+ require 'sambal-cle'
3
+ require 'yaml'
4
+
5
+ describe "Assessment Feedback" do
6
+
7
+ include Workflows
8
+ include Foundry
9
+ include StringFactory
10
+ include DateFactory
11
+
12
+ before :all do
13
+ # Get the test configuration data
14
+ @config = YAML.load_file("config.yml")
15
+ @directory = YAML.load_file("directory.yml")
16
+ @sakai = SambalCLE.new(@config['browser'], @config['url'])
17
+ @browser = @sakai.browser
18
+
19
+ @student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
20
+ :first_name=>@directory['person1']['firstname'], :last_name=>@directory['person1']['lastname']
21
+ @instructor = make UserObject, :id=>@directory['person3']['id'], :password=>@directory['person3']['password'],
22
+ :first_name=>@directory['person3']['firstname'], :last_name=>@directory['person3']['lastname'],
23
+ :type=>"Instructor"
24
+ @instructor.log_in
25
+
26
+ @site = make CourseSiteObject
27
+ @site.create
28
+ @site.add_official_participants @student.type, @student.id
29
+
30
+ @assessment = make AssessmentObject, :site=>@site.name,
31
+ :feedback_delivery=>:immediate_feedback,
32
+ :feedback_authoring=>:both_feedback_levels,
33
+ :release_options=>[:release_question_level_feedback, :release_selection_level_feedback]
34
+ @assessment.create
35
+
36
+ @assessment.add_question :type=>"Multiple Choice",
37
+ :answers_feedback=>[random_alphanums, random_alphanums, random_alphanums, random_alphanums],
38
+ :correct_answer_feedback=>random_alphanums,
39
+ :incorrect_answer_feedback=>random_alphanums
40
+ @assessment.add_question :type=>"Survey",
41
+ :feedback=>random_alphanums
42
+ @assessment.add_question :type=>"Short Answer/Essay",
43
+ :feedback=>random_alphanums
44
+ @assessment.add_question :type=>"Fill in the Blank",
45
+ :correct_answer_feedback=>random_alphanums,
46
+ :incorrect_answer_feedback=>random_alphanums
47
+ @assessment.add_question :type=>"Numeric Response",
48
+ :correct_answer_feedback=>random_alphanums,
49
+ :incorrect_answer_feedback=>random_alphanums
50
+ @assessment.add_question :type=>"Matching",
51
+ :correct_answer_feedback=>random_alphanums,
52
+ :incorrect_answer_feedback=>random_alphanums
53
+ @assessment.add_question :type=>"True False",
54
+ :correct_answer_feedback=>random_alphanums,
55
+ :incorrect_answer_feedback=>random_alphanums
56
+ @assessment.add_question :type=>"Audio Recording",
57
+ :feedback=>random_alphanums
58
+ @assessment.add_question :type=>"File Upload",
59
+ :feedback=>random_alphanums
60
+ @assessment.add_question :type=>"Calculated Question",
61
+ :correct_answer_feedback=>random_alphanums,
62
+ :incorrect_answer_feedback=>random_alphanums
63
+
64
+ @assessment.publish
65
+
66
+ @instructor.log_out
67
+
68
+ end
69
+
70
+ after :all do
71
+ @browser.close
72
+ end
73
+
74
+ xit "feedback" do
75
+ # Test cases pending underlying submission code.
76
+ end
77
+
78
+ end
@@ -0,0 +1,102 @@
1
+ require 'rspec'
2
+ require 'sambal-cle'
3
+ require 'yaml'
4
+
5
+ describe "Publishing Assessments" do
6
+
7
+ include Workflows
8
+ include Foundry
9
+ include DateFactory
10
+
11
+ before :all do
12
+ # Get the test configuration data
13
+ @config = YAML.load_file("config.yml")
14
+ @directory = YAML.load_file("directory.yml")
15
+ @sakai = SambalCLE.new(@config['browser'], @config['url'])
16
+ @browser = @sakai.browser
17
+
18
+ @student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
19
+ :first_name=>@directory['person1']['firstname'], :last_name=>@directory['person1']['lastname']
20
+ @instructor1 = make UserObject, :id=>@directory['person3']['id'], :password=>@directory['person3']['password'],
21
+ :first_name=>@directory['person3']['firstname'], :last_name=>@directory['person3']['lastname'],
22
+ :type=>"Instructor"
23
+ @instructor2 = make UserObject, :id=>@directory['person4']['id'], :password=>@directory['person4']['password'],
24
+ :first_name=>@directory['person4']['firstname'], :last_name=>@directory['person4']['lastname'],
25
+ :type=>"Instructor"
26
+ @instructor1.log_in
27
+
28
+ @site = make CourseSiteObject
29
+ @site.create
30
+ @site.add_official_participants @student.type, @student.id
31
+ @site.add_official_participants @instructor2.type, @instructor2.id
32
+
33
+ @assessment1 = make AssessmentObject, :site=>@site.name
34
+ @assessment1.create
35
+
36
+ 1.times{ @assessment1.add_part }
37
+ 3.times{ @assessment1.add_question }
38
+
39
+ @assessment2 = make AssessmentObject, :site=>@site.name
40
+ @assessment2.create
41
+
42
+ 1.times{ @assessment2.add_part }
43
+ 3.times{ @assessment2.add_question }
44
+
45
+ @assessment2.publish
46
+
47
+ @assessment3 = make AssessmentObject, :site=>@site.name, :available_date=>in_an_hour
48
+ @assessment3.create
49
+
50
+ 1.times{ @assessment3.add_part }
51
+ 3.times{ @assessment3.add_question }
52
+
53
+ @assessment3.publish
54
+
55
+ @instructor1.log_out
56
+
57
+ end
58
+
59
+ after :all do
60
+ @browser.close
61
+ end
62
+
63
+ it "Instructors can see pending, published, and inactive assessments made by others" do
64
+ @instructor2.log_in
65
+ open_my_site_by_name @site.name
66
+ tests_and_quizzes
67
+ on AssessmentsList do |list|
68
+ list.pending_assessment_titles.should include @assessment1.title
69
+ list.published_assessment_titles.should include @assessment2.title
70
+ list.inactive_assessment_titles.should include @assessment3.title
71
+ end
72
+ @instructor2.log_out
73
+ end
74
+
75
+ it "Students can see published assessments that are currently available" do
76
+ @student.log_in
77
+ open_my_site_by_name @site.name
78
+ tests_and_quizzes
79
+ on StudentAssessmentsList do |list|
80
+ list.available_assessments.should include @assessment2.title
81
+ end
82
+ end
83
+
84
+ it "Students cannot see published assessments prior to the available date" do
85
+ @student.log_in
86
+ open_my_site_by_name @site.name
87
+ tests_and_quizzes
88
+ on StudentAssessmentsList do |list|
89
+ list.available_assessments.should_not include @assessment3.title
90
+ end
91
+ end
92
+
93
+ it "Students cannot see unpublished assessments" do
94
+ @student.log_in
95
+ open_my_site_by_name @site.name
96
+ tests_and_quizzes
97
+ on StudentAssessmentsList do |list|
98
+ list.available_assessments.should_not include @assessment1.title
99
+ end
100
+ end
101
+
102
+ end
@@ -15,7 +15,7 @@ describe "Assignments appearing in Announcements" do
15
15
  # Get the test configuration data
16
16
  @config = YAML.load_file("config.yml")
17
17
  @directory = YAML.load_file("directory.yml")
18
- @sakai = SakaiCLE.new(@config['browser'], @config['url'])
18
+ @sakai = SambalCLE.new(@config['browser'], @config['url'])
19
19
  @browser = @sakai.browser
20
20
 
21
21
  @student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
@@ -28,10 +28,10 @@ describe "Assignments appearing in Announcements" do
28
28
  :type=>"Instructor"
29
29
  @instructor1.log_in
30
30
 
31
- @site = make SiteObject
31
+ @site = make CourseSiteObject
32
32
  @site.create
33
- @site.add_official_participants :role=>@student.type, :participants=>[@student.id]
34
- @site.add_official_participants :role=>@instructor2.type, :participants=>[@instructor2.id]
33
+ @site.add_official_participants @student.type, @student.id
34
+ @site.add_official_participants @instructor2.type, @instructor2.id
35
35
 
36
36
  @assignment1 = make AssignmentObject, :status=>"Draft", :add_open_announcement=>:set, :site=>@site.name, :title=>random_xss_string(30), :open=>in_an_hour, :student_submissions=>"Attachments only", :grade_scale=>"Points", :max_points=>"100", :instructions=>random_multiline(600, 12, :string)
37
37
  @assignment2 = make AssignmentObject, :site=>@site.name, :add_open_announcement=>:set, :open=>an_hour_ago
@@ -15,7 +15,7 @@ describe "Duplicating an Assignment" do
15
15
  # Get the test configuration data
16
16
  @config = YAML.load_file("config.yml")
17
17
  @directory = YAML.load_file("directory.yml")
18
- @sakai = SakaiCLE.new(@config['browser'], @config['url'])
18
+ @sakai = SambalCLE.new(@config['browser'], @config['url'])
19
19
  @browser = @sakai.browser
20
20
 
21
21
  @student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
@@ -28,10 +28,10 @@ describe "Duplicating an Assignment" do
28
28
  :type=>"Instructor"
29
29
  @instructor1.log_in
30
30
 
31
- @site = make SiteObject
31
+ @site = make CourseSiteObject
32
32
  @site.create
33
- @site.add_official_participants :role=>@student.type, :participants=>[@student.id]
34
- @site.add_official_participants :role=>@instructor2.type, :participants=>[@instructor2.id]
33
+ @site.add_official_participants @student.type, @student.id
34
+ @site.add_official_participants @instructor2.type, @instructor2.id
35
35
 
36
36
  @assignment = make AssignmentObject, :site=>@site.name, :title=>random_string(25), :open=>next_monday, :grade_scale=>"Pass", :instructions=>random_alphanums
37
37
 
@@ -15,7 +15,7 @@ describe "Assignments" do
15
15
  # Get the test configuration data
16
16
  @config = YAML.load_file("config.yml")
17
17
  @directory = YAML.load_file("directory.yml")
18
- @sakai = SakaiCLE.new(@config['browser'], @config['url'])
18
+ @sakai = SambalCLE.new(@config['browser'], @config['url'])
19
19
  @browser = @sakai.browser
20
20
 
21
21
  @student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
@@ -28,10 +28,10 @@ describe "Assignments" do
28
28
  :type=>"Instructor"
29
29
  @instructor1.log_in
30
30
 
31
- @site = make SiteObject
31
+ @site = make CourseSiteObject
32
32
  @site.create
33
- @site.add_official_participants :role=>@student.type, :participants=>[@student.id]
34
- @site.add_official_participants :role=>@instructor2.type, :participants=>[@instructor2.id]
33
+ @site.add_official_participants @student.type, @student.id
34
+ @site.add_official_participants @instructor2.type, @instructor2.id
35
35
 
36
36
  @assignment = make AssignmentObject, :site=>@site.name, :title=>random_string(25), :open=>next_monday, :grade_scale=>"Pass", :instructions=>random_multiline(300, 15, :string)
37
37
 
@@ -17,7 +17,7 @@ describe "Assignment Permissions" do
17
17
  # Get the test configuration data
18
18
  @config = YAML.load_file("config.yml")
19
19
  @directory = YAML.load_file("directory.yml")
20
- @sakai = SakaiCLE.new(@config['browser'], @config['url'])
20
+ @sakai = SambalCLE.new(@config['browser'], @config['url'])
21
21
  @browser = @sakai.browser
22
22
 
23
23
  @student = make UserObject, :id=>@directory['person1']['id'], :password=>@directory['person1']['password'],
@@ -30,12 +30,12 @@ describe "Assignment Permissions" do
30
30
  :type=>"Instructor"
31
31
  @instructor1.log_in
32
32
 
33
- @site = make SiteObject
33
+ @site = make CourseSiteObject
34
34
  @site.create
35
- @site.add_official_participants :role=>@student.type, :participants=>[@student.id]
36
- @site.add_official_participants :role=>@instructor2.type, :participants=>[@instructor2.id]
35
+ @site.add_official_participants @student.type, @student.id
36
+ @site.add_official_participants @instructor2.type, @instructor2.id
37
37
 
38
- @site = make SiteObject
38
+ @site = make CourseSiteObject
39
39
  @site.create
40
40
 
41
41
  @site.add_official_participants :role=>"Student", :participants=>[@student]