sakai-cle-test-api 0.0.7 → 0.0.9
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/lib/sakai-cle-test-api.rb +7 -2
- data/lib/sakai-cle-test-api/add_files.rb +198 -0
- data/lib/sakai-cle-test-api/admin_page_elements.rb +7 -3
- data/lib/sakai-cle-test-api/announcements.rb +274 -7
- data/lib/sakai-cle-test-api/assessments.rb +930 -27
- data/lib/sakai-cle-test-api/assignments.rb +769 -13
- data/lib/sakai-cle-test-api/basic_lti.rb +5 -1
- data/lib/sakai-cle-test-api/blogs.rb +54 -2
- data/lib/sakai-cle-test-api/calendar.rb +423 -8
- data/lib/sakai-cle-test-api/chat_room.rb +0 -0
- data/lib/sakai-cle-test-api/common_page_elements.rb +69 -172
- data/lib/sakai-cle-test-api/core-ext.rb +90 -0
- data/lib/sakai-cle-test-api/data_objects/announcement.rb +38 -0
- data/lib/sakai-cle-test-api/data_objects/assessment.rb +32 -0
- data/lib/sakai-cle-test-api/data_objects/assignment.rb +62 -0
- data/lib/sakai-cle-test-api/data_objects/event.rb +86 -0
- data/lib/sakai-cle-test-api/data_objects/lesson.rb +137 -0
- data/lib/sakai-cle-test-api/data_objects/resource.rb +174 -0
- data/lib/sakai-cle-test-api/data_objects/site.rb +213 -0
- data/lib/sakai-cle-test-api/data_objects/syllabus.rb +7 -0
- data/lib/sakai-cle-test-api/data_objects/topic.rb +0 -0
- data/lib/sakai-cle-test-api/data_objects/web_content_tool.rb +52 -0
- data/lib/sakai-cle-test-api/data_objects/wiki.rb +7 -0
- data/lib/sakai-cle-test-api/drop_box.rb +21 -0
- data/lib/sakai-cle-test-api/email_archive.rb +15 -1
- data/lib/sakai-cle-test-api/forums.rb +282 -8
- data/lib/sakai-cle-test-api/gem_ext.rb +45 -0
- data/lib/sakai-cle-test-api/gradebook.rb +19 -1
- data/lib/sakai-cle-test-api/gradebook2.rb +15 -1
- data/lib/sakai-cle-test-api/lessons.rb +440 -0
- data/lib/sakai-cle-test-api/messages.rb +551 -15
- data/lib/sakai-cle-test-api/news.rb +3 -1
- data/lib/sakai-cle-test-api/polls.rb +65 -3
- data/lib/sakai-cle-test-api/profile.rb +36 -2
- data/lib/sakai-cle-test-api/profile2.rb +315 -6
- data/lib/sakai-cle-test-api/resources.rb +138 -0
- data/lib/sakai-cle-test-api/rich_text.rb +13 -0
- data/lib/sakai-cle-test-api/sections.rb +198 -8
- data/lib/sakai-cle-test-api/site_page_elements.rb +4 -441
- data/lib/sakai-cle-test-api/syllabus.rb +149 -7
- data/lib/sakai-cle-test-api/tools_menu.rb +3 -20
- data/lib/sakai-cle-test-api/utilities.rb +260 -0
- data/sakai-cle-test-api.gemspec +2 -3
- metadata +21 -19
@@ -0,0 +1,32 @@
|
|
1
|
+
class AssessmentObject
|
2
|
+
|
3
|
+
include PageObject
|
4
|
+
include Utilities
|
5
|
+
include ToolsMenu
|
6
|
+
|
7
|
+
attr_accessor :title, :site
|
8
|
+
|
9
|
+
def initialize(browser, opts={})
|
10
|
+
@browser = browser
|
11
|
+
|
12
|
+
defaults = {
|
13
|
+
:title=>random_alphanums,
|
14
|
+
:site=>"placeholder"
|
15
|
+
}
|
16
|
+
options = defaults.merge(opts)
|
17
|
+
@title=options[:title]
|
18
|
+
@site=options[:site]
|
19
|
+
raise "You must specify a Site for your Assessment" if @site==nil
|
20
|
+
end
|
21
|
+
|
22
|
+
def create
|
23
|
+
my_workspace.open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
24
|
+
tests_and_quizzes unless @browser.title=~/Tests & Quizzes$/
|
25
|
+
on_page AssessmentsList do |page|
|
26
|
+
page.title=@title
|
27
|
+
page.create
|
28
|
+
end
|
29
|
+
# Do more here eventually...
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class AssignmentObject
|
2
|
+
|
3
|
+
include PageObject
|
4
|
+
include Utilities
|
5
|
+
include ToolsMenu
|
6
|
+
|
7
|
+
attr_accessor :title, :site, :instructions, :id, :link
|
8
|
+
|
9
|
+
def initialize(browser, opts={})
|
10
|
+
@browser = browser
|
11
|
+
|
12
|
+
defaults = {
|
13
|
+
:title=>random_alphanums,
|
14
|
+
:instructions=>random_multiline(500, 10, :string),
|
15
|
+
:site=>"placeholder"
|
16
|
+
|
17
|
+
}
|
18
|
+
options = defaults.merge(opts)
|
19
|
+
|
20
|
+
@title=options[:title]
|
21
|
+
@instructions=options[:instructions]
|
22
|
+
@site=options[:site]
|
23
|
+
raise "You must specify a Site for your Assignment" if @site==nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def create
|
27
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
28
|
+
|
29
|
+
# Go to assignments page
|
30
|
+
assignments unless @browser.title=~/Assignments$/
|
31
|
+
on_page AssignmentsList do |page|
|
32
|
+
page.add
|
33
|
+
end
|
34
|
+
on_page AssignmentAdd do |add|
|
35
|
+
add.title=@title
|
36
|
+
add.instructions=@instructions
|
37
|
+
add.post
|
38
|
+
end
|
39
|
+
on_page AssignmentsList do |list|
|
40
|
+
@id = list.get_assignment_id @title
|
41
|
+
@link = list.assignment_href @title
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def edit opts={}
|
46
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
47
|
+
assignments unless @browser.title=~/Assignments$/
|
48
|
+
list = AssignmentsList.new @browser
|
49
|
+
edit = list.edit_assignment @title
|
50
|
+
edit.title=opts[:title] unless opts[:title] == nil
|
51
|
+
unless opts[:instructions] == nil
|
52
|
+
edit.source(edit.editor)
|
53
|
+
edit.source=opts[:instructions]
|
54
|
+
end
|
55
|
+
edit.post
|
56
|
+
|
57
|
+
@title=opts[:title] unless opts[:title] == nil
|
58
|
+
@instructions=opts[:instructions] unless opts[:instructions] == nil
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
class EventObject
|
2
|
+
|
3
|
+
include PageObject
|
4
|
+
include Utilities
|
5
|
+
include ToolsMenu
|
6
|
+
|
7
|
+
attr_accessor :title, :month, :day, :year, :start_hour, :start_minute,
|
8
|
+
:start_meridian, :duration_hours, :duration_minutes, :end_hour,
|
9
|
+
:end_minute, :end_meridian, :message, :site, :link
|
10
|
+
|
11
|
+
def initialize(browser, opts={})
|
12
|
+
@browser = browser
|
13
|
+
|
14
|
+
defaults = {
|
15
|
+
:title=>random_alphanums,
|
16
|
+
:month=>in_15_minutes[:month_str],
|
17
|
+
:day=>in_15_minutes[:day],
|
18
|
+
:year=>in_15_minutes[:year],
|
19
|
+
:start_hour=>in_15_minutes[:hour],
|
20
|
+
:start_minute=>in_15_minutes[:minute],
|
21
|
+
:start_meridian=>in_15_minutes[:meridian],
|
22
|
+
:duration_hours=>nil,
|
23
|
+
:duration_minutes=>nil,
|
24
|
+
:end_hour=>nil,
|
25
|
+
:end_minute=>nil,
|
26
|
+
:end_meridian=>nil,
|
27
|
+
:message=>random_multiline(400,20, :alpha),
|
28
|
+
:site=>"placeholder"
|
29
|
+
}
|
30
|
+
options = defaults.merge(opts)
|
31
|
+
|
32
|
+
@title=options[:title]
|
33
|
+
@month=options[:month]
|
34
|
+
@day=options[:day]
|
35
|
+
@year=options[:year]
|
36
|
+
@start_hour=options[:start_hour]
|
37
|
+
@start_minute=options[:start_minute]
|
38
|
+
@start_meridian=options[:start_meridian]
|
39
|
+
@duration_hours=options[:duration_hours]
|
40
|
+
@duration_minutes=options[:duration_minutes]
|
41
|
+
@end_hour=options[:end_hour]
|
42
|
+
@end_minute=options[:end_minute]
|
43
|
+
@end_meridian=options[:end_meridian]
|
44
|
+
@message=options[:message]
|
45
|
+
@site=options[:site]
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
def create
|
50
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
51
|
+
calendar unless @browser.title=~/Calendar$/
|
52
|
+
cal = Calendar.new @browser
|
53
|
+
add_event = cal.add
|
54
|
+
add_event.message=@message
|
55
|
+
add_event.title=@title
|
56
|
+
add_event.month=@month
|
57
|
+
add_event.day=@day
|
58
|
+
add_event.year=@year
|
59
|
+
add_event.start_hour=@start_hour
|
60
|
+
add_event.start_minute=@start_minute
|
61
|
+
add_event.start_meridian=@start_meridian
|
62
|
+
if @end_hour == nil && @duration_hours == nil
|
63
|
+
@duration_hours = add_event.hours
|
64
|
+
@duration_minutes = add_event.minutes
|
65
|
+
@end_hour = add_event.end_hour
|
66
|
+
@end_minute = add_event.end_minute
|
67
|
+
@end_meridian = add_event.end_meridian
|
68
|
+
elsif @end_hour == nil
|
69
|
+
add_event.hours=@duration_hours
|
70
|
+
add_event.minutes=@duration_minutes
|
71
|
+
@end_hour = add_event.end_hour
|
72
|
+
@end_minute = add_event.end_minute
|
73
|
+
@end_meridian = add_event.end_meridian
|
74
|
+
elsif @duration_hours == nil
|
75
|
+
|
76
|
+
else
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
cal = add_event.save_event
|
81
|
+
|
82
|
+
@link = cal.event_href @title
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
class ModuleObject
|
2
|
+
|
3
|
+
include PageObject
|
4
|
+
include Utilities
|
5
|
+
include ToolsMenu
|
6
|
+
|
7
|
+
attr_accessor :title, :description, :keywords, :start_date, :end_date, :site
|
8
|
+
|
9
|
+
def initialize(browser, opts={})
|
10
|
+
@browser = browser
|
11
|
+
|
12
|
+
defaults = {
|
13
|
+
:title=>random_alphanums
|
14
|
+
}
|
15
|
+
options = defaults.merge(opts)
|
16
|
+
|
17
|
+
@title=options[:title]
|
18
|
+
@description=options[:description]
|
19
|
+
@keywords=options[:keywords]
|
20
|
+
@start_date=options[:start_date]
|
21
|
+
@end_date=options[:end_date]
|
22
|
+
@site=options[:site]
|
23
|
+
raise "You must specify a Site name for your lesson" if @site==nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def create
|
27
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
28
|
+
lessons unless @browser.title=~/Lessons$/
|
29
|
+
reset
|
30
|
+
on_page Lessons do |page|
|
31
|
+
page.add_module
|
32
|
+
end
|
33
|
+
on_page AddEditModule do |page|
|
34
|
+
page.title=@title
|
35
|
+
page.description=@description
|
36
|
+
page.keywords=@keywords
|
37
|
+
page.start_date=@start_date
|
38
|
+
page.end_date=@end_date
|
39
|
+
page.add
|
40
|
+
end
|
41
|
+
on_page ConfirmModule do |page|
|
42
|
+
page.return_to_modules
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
class ContentSectionObject
|
49
|
+
|
50
|
+
include PageObject
|
51
|
+
include Utilities
|
52
|
+
include ToolsMenu
|
53
|
+
|
54
|
+
attr_accessor :site, :module, :title, :instructions, :modality, :content_type,
|
55
|
+
:copyright_status, :editor_content, :file_name, :file_path, :url, :url_title,
|
56
|
+
:file_description, :url_description
|
57
|
+
|
58
|
+
def initialize(browser, opts={})
|
59
|
+
@browser = browser
|
60
|
+
|
61
|
+
defaults = {
|
62
|
+
:title=>random_alphanums,
|
63
|
+
:copyright_status=>"Public Domain",
|
64
|
+
:modality=>[:check_textual]
|
65
|
+
}
|
66
|
+
options = defaults.merge(opts)
|
67
|
+
|
68
|
+
@site=options[:site]
|
69
|
+
@module=options[:module]
|
70
|
+
@title=options[:title]
|
71
|
+
@instructions=options[:instructions]
|
72
|
+
@modality=options[:modality]
|
73
|
+
@content_type=options[:content_type]
|
74
|
+
@copyright_status=options[:copyright_status]
|
75
|
+
@editor_content=options[:editor_content]
|
76
|
+
@file_name=options[:file_name]
|
77
|
+
@file_path=options[:file_path]
|
78
|
+
@file_description=options[:file_description]
|
79
|
+
@url=options[:url]
|
80
|
+
@url_title=options[:url_title]
|
81
|
+
@url_description=options[:url_description]
|
82
|
+
raise "Your modality variable must be an Array containing one or more keys\nthat match the checkbox methods, like this:\n[:uncheck_textual, :check_visual, :check_auditory]" unless @modality.class==Array
|
83
|
+
raise "You must specify a Site for your Section" if @site==nil
|
84
|
+
raise "You must specify a Module for your Section" if @module==nil
|
85
|
+
end
|
86
|
+
|
87
|
+
def create
|
88
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
89
|
+
lessons unless @browser.title=~/Lessons$/
|
90
|
+
reset
|
91
|
+
on_page Lessons do |page|
|
92
|
+
page.open_lesson @module
|
93
|
+
end
|
94
|
+
on_page AddEditModule do |page|
|
95
|
+
page.add_content_sections
|
96
|
+
end
|
97
|
+
on_page AddEditContentSection do |page|
|
98
|
+
page.title=@title
|
99
|
+
page.instructions=@instructions
|
100
|
+
@modality.each do |content|
|
101
|
+
page.send(content)
|
102
|
+
end
|
103
|
+
page.content_type=@content_type unless @content_type==nil
|
104
|
+
sleep 3 # Need to wait for page refresh
|
105
|
+
case @content_type
|
106
|
+
when "Compose content with editor"
|
107
|
+
page.source(page.content_editor)
|
108
|
+
page.source=@editor_content
|
109
|
+
when "Upload or link to a file"
|
110
|
+
page.select_a_file
|
111
|
+
on_page LessonAddAttachment do |subpage|
|
112
|
+
subpage.upload_local_file @file_name, @file_path
|
113
|
+
subpage.continue
|
114
|
+
end
|
115
|
+
page.file_description=@file_description
|
116
|
+
when "Link to new or existing URL resource on server"
|
117
|
+
page.select_url
|
118
|
+
on_page SelectingContent do |subpage|
|
119
|
+
subpage.new_url=@url
|
120
|
+
subpage.url_title=@url_title
|
121
|
+
subpage.continue
|
122
|
+
end
|
123
|
+
page.url_description=@url_description
|
124
|
+
when "Upload or link to a file in Resources"
|
125
|
+
page.select_or_upload_file
|
126
|
+
on_page AddFiles do |subpage|
|
127
|
+
subpage.select @file_name
|
128
|
+
subpage.continue
|
129
|
+
end
|
130
|
+
else
|
131
|
+
raise "You have a typo in what you've specified for your Section's content type.\nIt must be one of the options contained in the dropdown."
|
132
|
+
end
|
133
|
+
page.copyright_status=@copyright_status
|
134
|
+
page.add
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
@@ -0,0 +1,174 @@
|
|
1
|
+
class FileObject
|
2
|
+
|
3
|
+
include PageObject
|
4
|
+
include Utilities
|
5
|
+
include ToolsMenu
|
6
|
+
|
7
|
+
attr_accessor
|
8
|
+
|
9
|
+
def initialize(browser, opts={})
|
10
|
+
@browser = browser
|
11
|
+
|
12
|
+
defaults = {}
|
13
|
+
options = defaults.merge(opts)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
class FolderObject
|
23
|
+
include PageObject
|
24
|
+
include Utilities
|
25
|
+
include ToolsMenu
|
26
|
+
|
27
|
+
attr_accessor :name, :parent_folder, :site
|
28
|
+
|
29
|
+
def initialize(browser, opts={})
|
30
|
+
@browser = browser
|
31
|
+
|
32
|
+
defaults = {
|
33
|
+
:name=>random_alphanums
|
34
|
+
}
|
35
|
+
options = defaults.merge(opts)
|
36
|
+
|
37
|
+
@name = options[:name]
|
38
|
+
@parent_folder = options[:parent_folder]
|
39
|
+
@site = options[:site]
|
40
|
+
raise "You must specify a Site for your Folder" if @site==nil
|
41
|
+
end
|
42
|
+
|
43
|
+
def create
|
44
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
45
|
+
resources unless @browser.title=~/Resources$/
|
46
|
+
on_page Resources do |page|
|
47
|
+
page.create_subfolders_in @parent_folder
|
48
|
+
end
|
49
|
+
on_page CreateFolders do |page|
|
50
|
+
page.folder_name.set @name
|
51
|
+
page.create_folders_now
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
class WebLinkObject
|
58
|
+
include PageObject
|
59
|
+
include Utilities
|
60
|
+
include ToolsMenu
|
61
|
+
|
62
|
+
attr_accessor
|
63
|
+
|
64
|
+
def initialize(browser, opts={})
|
65
|
+
@browser = browser
|
66
|
+
|
67
|
+
defaults = {}
|
68
|
+
options = defaults.merge(opts)
|
69
|
+
@site = options[:site]
|
70
|
+
raise "You must specify a Site for your Web Link" if @site==nil
|
71
|
+
end
|
72
|
+
|
73
|
+
def create
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
class HTMLPageObject
|
80
|
+
|
81
|
+
include PageObject
|
82
|
+
include Utilities
|
83
|
+
include ToolsMenu
|
84
|
+
|
85
|
+
attr_accessor :name, :description, :site, :folder, :html, :url
|
86
|
+
|
87
|
+
def initialize(browser, opts={})
|
88
|
+
@browser = browser
|
89
|
+
|
90
|
+
defaults = {
|
91
|
+
:name=>random_alphanums,
|
92
|
+
:description=>random_multiline(500, 10, :alpha),
|
93
|
+
:html=>"<body>Body</body>"
|
94
|
+
}
|
95
|
+
options = defaults.merge(opts)
|
96
|
+
|
97
|
+
@name = options[:name]
|
98
|
+
@description = options[:description]
|
99
|
+
@site = options[:site]
|
100
|
+
@folder = options[:folder]
|
101
|
+
@html = options[:html]
|
102
|
+
@site = options[:site]
|
103
|
+
raise "You must specify a Site for your HTML Page" if @site==nil
|
104
|
+
end
|
105
|
+
|
106
|
+
def create
|
107
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
108
|
+
resources unless @browser.title=~/Resources$/
|
109
|
+
on_page Resources do |page|
|
110
|
+
page.create_html_page_in @folder
|
111
|
+
end
|
112
|
+
on_page CreateHTMLPageContent do |page|
|
113
|
+
page.source(page.editor)
|
114
|
+
page.source=@html
|
115
|
+
page.continue
|
116
|
+
end
|
117
|
+
on_page CreateHTMLPageProperties do |page|
|
118
|
+
page.name.set @name
|
119
|
+
page.description.set @description
|
120
|
+
# Put more here as needed later
|
121
|
+
page.finish
|
122
|
+
end
|
123
|
+
on_page Resources do |page|
|
124
|
+
@url = page.href(@name)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
class TextDocumentObject
|
131
|
+
include PageObject
|
132
|
+
include Utilities
|
133
|
+
include ToolsMenu
|
134
|
+
|
135
|
+
attr_accessor
|
136
|
+
|
137
|
+
def initialize(browser, opts={})
|
138
|
+
@browser = browser
|
139
|
+
|
140
|
+
defaults = {}
|
141
|
+
options = defaults.merge(opts)
|
142
|
+
@site = options[:site]
|
143
|
+
raise "You must specify a Site for your Text Document" if @site==nil
|
144
|
+
end
|
145
|
+
|
146
|
+
def create
|
147
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
148
|
+
resources unless @browser.title=~/Resources$/
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
152
|
+
|
153
|
+
class CitationListObject
|
154
|
+
include PageObject
|
155
|
+
include Utilities
|
156
|
+
include ToolsMenu
|
157
|
+
|
158
|
+
attr_accessor
|
159
|
+
|
160
|
+
def initialize(browser, opts={})
|
161
|
+
@browser = browser
|
162
|
+
|
163
|
+
defaults = {}
|
164
|
+
options = defaults.merge(opts)
|
165
|
+
@site = options[:site]
|
166
|
+
raise "You must specify a Site for your Citations List" if @site==nil
|
167
|
+
end
|
168
|
+
|
169
|
+
def create
|
170
|
+
open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
171
|
+
resources unless @browser.title=~/Resources$/
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|