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,138 @@
|
|
1
|
+
#================
|
2
|
+
# Resources Pages
|
3
|
+
#================
|
4
|
+
|
5
|
+
# Resources page for a given Site, in the Course Tools menu
|
6
|
+
class Resources < AddFiles
|
7
|
+
|
8
|
+
include PageObject
|
9
|
+
include ToolsMenu
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
# New class template. For quick class creation...
|
14
|
+
class ResourcesUploadFiles
|
15
|
+
|
16
|
+
include PageObject
|
17
|
+
include ToolsMenu
|
18
|
+
|
19
|
+
@@filex=0 # TODO: This is almost certainly not going to work right.
|
20
|
+
|
21
|
+
# Enters the specified folder/filename value into
|
22
|
+
# the file field on the page. Note that files are
|
23
|
+
# assumed to be in the relative path ../../data/sakai-cle-test-api
|
24
|
+
# The method will throw an error if the specified file
|
25
|
+
# is not found.
|
26
|
+
#
|
27
|
+
# This method is designed to be able to use
|
28
|
+
# multiple times, but it assumes
|
29
|
+
# that the add_another_file method is used
|
30
|
+
# before it, every time except before the first time.
|
31
|
+
def file_to_upload(file_name, file_path="")
|
32
|
+
frm.file_field(:id, "content_#{@@filex}").set(file_path + file_name)
|
33
|
+
@@filex+=1
|
34
|
+
end
|
35
|
+
|
36
|
+
# Clicks the Upload Files Now button, resets the
|
37
|
+
# @@filex class variable back to zero, and instantiates
|
38
|
+
# the Resources page class.
|
39
|
+
def upload_files_now
|
40
|
+
frm.button(:value=>"Upload Files Now").click
|
41
|
+
@@filex=0
|
42
|
+
Resources.new(@browser)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Clicks the Add Another File link.
|
46
|
+
def add_another_file
|
47
|
+
frm.link(:text=>"Add Another File").click
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
class EditFileDetails
|
53
|
+
|
54
|
+
include PageObject
|
55
|
+
include ToolsMenu
|
56
|
+
|
57
|
+
# Clicks the Update button, then instantiates
|
58
|
+
# the Resources page class.
|
59
|
+
def update
|
60
|
+
frm.button(:value=>"Update").click
|
61
|
+
Resources.new(@browser)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Enters the specified string into the title field.
|
65
|
+
def title=(title)
|
66
|
+
frm.text_field(:id=>"displayName_0").set(title)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Enters the specified string into the description field.
|
70
|
+
def description=(description)
|
71
|
+
frm.text_field(:id=>"description_0").set(description)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Sets the radio button for publically viewable.
|
75
|
+
def select_publicly_viewable
|
76
|
+
frm.radio(:id=>"access_mode_public_0").set
|
77
|
+
end
|
78
|
+
|
79
|
+
# Checks the checkbox for showing only on the specifed
|
80
|
+
# condition.
|
81
|
+
def check_show_only_if_condition
|
82
|
+
frm.checkbox(:id=>"cbCondition_0")
|
83
|
+
end
|
84
|
+
|
85
|
+
# Selects the specified Gradebook item value in the
|
86
|
+
# select list.
|
87
|
+
def gradebook_item=(item)
|
88
|
+
frm.select(:id=>"selectResource_0").select(item)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Selects the specified value in the item condition
|
92
|
+
# field.
|
93
|
+
def item_condition=(condition)
|
94
|
+
frm.select(:id=>"selectCondition_0").select(condition)
|
95
|
+
end
|
96
|
+
|
97
|
+
# Sets the Grade field to the specified value.
|
98
|
+
def assignment_grade=(grade)
|
99
|
+
frm.text_field(:id=>"assignment_grade_0").set(grade)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
class CreateFolders
|
104
|
+
|
105
|
+
include PageObject
|
106
|
+
include ToolsMenu
|
107
|
+
|
108
|
+
thing(:folder_name) { |b| b.frm.text_field(:id=>"content_0") }
|
109
|
+
action(:create_folders_now) { |b| b.frm.button(:value=>"Create Folders Now").click }
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
class CreateHTMLPageContent
|
114
|
+
|
115
|
+
include PageObject
|
116
|
+
include ToolsMenu
|
117
|
+
include FCKEditor
|
118
|
+
|
119
|
+
thing(:editor) { |b| b.frm.frame(:id=>"content___Frame") }
|
120
|
+
action(:continue) { |b| b.frm.button(id: "saveChanges").click }
|
121
|
+
|
122
|
+
def source=(text)
|
123
|
+
editor.td(:id, "xEditingArea").text_field(:class=>"SourceField").set text
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
|
128
|
+
class CreateHTMLPageProperties
|
129
|
+
|
130
|
+
include PageObject
|
131
|
+
include ToolsMenu
|
132
|
+
|
133
|
+
thing(:name) { |b| b.frm.text_field(id: "displayName_0") }
|
134
|
+
thing(:description) { |b| b.frm.text_field(id: "description_0") }
|
135
|
+
|
136
|
+
action(:finish) { |b| b.frm.button(id: "finish_button").click }
|
137
|
+
|
138
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module FCKEditor
|
2
|
+
|
3
|
+
# This has to be defined this way because there several pages
|
4
|
+
# that have multiple rich text editors.
|
5
|
+
def source(editor)
|
6
|
+
editor.div(:title=>/Source/).click
|
7
|
+
end
|
8
|
+
|
9
|
+
def select_all(editor)
|
10
|
+
editor.div(:title=>"Select All").click
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -1,9 +1,110 @@
|
|
1
|
+
|
2
|
+
module SectionsMenu
|
3
|
+
include PageObject
|
4
|
+
# Clicks the Add Sections button/link and instantiates
|
5
|
+
# the AddEditSections Class.
|
6
|
+
def add_sections
|
7
|
+
frm.link(:text=>"Add Sections").click
|
8
|
+
AddEditSections.new(@browser)
|
9
|
+
end
|
10
|
+
|
11
|
+
def overview
|
12
|
+
frm.link(:text=>"Overview").click
|
13
|
+
Sections.new(@browser)
|
14
|
+
end
|
15
|
+
|
16
|
+
def student_memberships
|
17
|
+
frm.link(:text=>"Student Memberships").click
|
18
|
+
StudentMemberships.new(@browser)
|
19
|
+
end
|
20
|
+
|
21
|
+
def options
|
22
|
+
frm.link(:text=>"Options").click
|
23
|
+
SectionsOptions.new(@browser)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
1
28
|
# Topmost page for Sections in Site Management
|
2
29
|
class Sections
|
3
30
|
include PageObject
|
4
31
|
include ToolsMenu
|
5
32
|
include SectionsMenu
|
6
|
-
|
33
|
+
# Clicks the Edit link for the specified section.
|
34
|
+
# Then instantiates the AddEditSections class.
|
35
|
+
def edit(title)
|
36
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Edit/).click
|
37
|
+
AddEditSections.new(@browser)
|
38
|
+
end
|
39
|
+
|
40
|
+
def assign_tas(title)
|
41
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Assign TAs/).click
|
42
|
+
AssignTeachingAssistants.new(@browser)
|
43
|
+
end
|
44
|
+
|
45
|
+
def assign_students(title)
|
46
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Assign Students/).click
|
47
|
+
AssignStudents.new(@browser)
|
48
|
+
end
|
49
|
+
|
50
|
+
def check(title)
|
51
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).checkbox(:name=>/remove/).set
|
52
|
+
end
|
53
|
+
|
54
|
+
def section_names
|
55
|
+
names = []
|
56
|
+
frm.table(:class=>/listHier/).rows.each do |row|
|
57
|
+
if row.td(:class=>"leftIndent").exist?
|
58
|
+
names << row.td(:class=>"leftIndent").div(:index=>0).text
|
59
|
+
end
|
60
|
+
end
|
61
|
+
return names
|
62
|
+
end
|
63
|
+
|
64
|
+
def remove_sections
|
65
|
+
frm.button(:value=>"Remove Sections").click
|
66
|
+
Sections.new(@browser)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Returns the text of the Teach Assistant cell for the specified
|
70
|
+
# Section.
|
71
|
+
def tas_for(title)
|
72
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[1].text
|
73
|
+
end
|
74
|
+
|
75
|
+
#
|
76
|
+
def days_for(title)
|
77
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[2].text
|
78
|
+
end
|
79
|
+
|
80
|
+
#
|
81
|
+
def time_for(title)
|
82
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[3].text
|
83
|
+
end
|
84
|
+
|
85
|
+
#
|
86
|
+
def location_for(title)
|
87
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[4].text
|
88
|
+
end
|
89
|
+
|
90
|
+
#
|
91
|
+
def current_size_for(title)
|
92
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[5].text
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
def availability_for(title)
|
97
|
+
frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[6].text
|
98
|
+
end
|
99
|
+
|
100
|
+
def alert_text
|
101
|
+
frm.div(:class=>"validation").text
|
102
|
+
end
|
103
|
+
|
104
|
+
def success_text
|
105
|
+
frm.div(:class=>"success").text
|
106
|
+
end
|
107
|
+
|
7
108
|
end
|
8
109
|
|
9
110
|
# Methods in this class currently do not support
|
@@ -13,13 +114,70 @@ end
|
|
13
114
|
# be supported in the future.
|
14
115
|
class AddEditSections
|
15
116
|
|
16
|
-
identifier = {:class=>"portletMainIframe"}
|
17
|
-
|
18
117
|
include PageObject
|
19
118
|
include ToolsMenu
|
20
119
|
include SectionsMenu
|
21
|
-
|
22
|
-
#
|
120
|
+
# Clicks the Add Sections button then instantiates the Sections Class,
|
121
|
+
# unless there's an Alert message, in which case it will reinstantiate
|
122
|
+
# the class.
|
123
|
+
def add_sections
|
124
|
+
frm.button(:value=>"Add Sections").click
|
125
|
+
if frm.div(:class=>"validation").exist?
|
126
|
+
AddEditSections.new(@browser)
|
127
|
+
else
|
128
|
+
Sections.new(@browser)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def alert_text
|
133
|
+
frm.div(:class=>"validation").text
|
134
|
+
end
|
135
|
+
|
136
|
+
# The Update button is only available when editing an existing Sections record.
|
137
|
+
def update
|
138
|
+
frm.button(:value=>"Update").click
|
139
|
+
if frm.div(:class=>"validation").exist?
|
140
|
+
AddEditSections.new(@browser)
|
141
|
+
else
|
142
|
+
Sections.new(@browser)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
# This method takes an array object containing strings of the
|
147
|
+
# days of the week and then clicks the appropriate checkboxes, based
|
148
|
+
# on those strings.
|
149
|
+
def check_days(array)
|
150
|
+
frm.checkbox(:id=>/SectionsForm:sectionTable:0:meetingsTable:0:monday/).set if array.include?(/mon/i)
|
151
|
+
frm.checkbox(:id=>/SectionsForm:sectionTable:0:meetingsTable:0:tuesday/).set if array.include?(/tue/i)
|
152
|
+
frm.checkbox(:id=>/SectionsForm:sectionTable:0:meetingsTable:0:wednesday/).set if array.include?(/wed/i)
|
153
|
+
frm.checkbox(:id=>/SectionsForm:sectionTable:0:meetingsTable:0:thursday/).set if array.include?(/thu/i)
|
154
|
+
frm.checkbox(:id=>/SectionsForm:sectionTable:0:meetingsTable:0:friday/).set if array.include?(/fri/i)
|
155
|
+
frm.checkbox(:id=>/SectionsForm:sectionTable:0:meetingsTable:0:saturday/).set if array.include?(/sat/i)
|
156
|
+
frm.checkbox(:id=>/SectionsForm:sectionTable:0:meetingsTable:0:sunday/).set if array.include?(/sun/i)
|
157
|
+
end
|
158
|
+
|
159
|
+
in_frame(:class=>"portletMainIframe") do |frame|
|
160
|
+
select_list(:category, :id=>/SectionsForm:category/, :frame=>frame)
|
161
|
+
text_field(:name, :id=>/SectionsForm:sectionTable:0:titleInput/, :frame=>frame)
|
162
|
+
checkbox(:monday, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:monday/, :frame=>frame)
|
163
|
+
checkbox(:tuesday, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:tuesday/, :frame=>frame)
|
164
|
+
checkbox(:wednesday, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:wednesday/, :frame=>frame)
|
165
|
+
checkbox(:thursday, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:thursday/, :frame=>frame)
|
166
|
+
checkbox(:friday, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:friday/, :frame=>frame)
|
167
|
+
checkbox(:saturday, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:saturday/, :frame=>frame)
|
168
|
+
checkbox(:sunday, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:sunday/, :frame=>frame)
|
169
|
+
text_field(:start_time, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:startTime/, :frame=>frame)
|
170
|
+
text_field(:end_time, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:endTime/, :frame=>frame)
|
171
|
+
text_field(:location, :id=>/SectionsForm:sectionTable:0:meetingsTable:0:location/, :frame=>frame)
|
172
|
+
radio_button(:startAM) { |page| page.radio_button_element(:name=>/SectionsForm:sectionTable:0:meetingsTable:0:startTimeAm/, :index=>0, :frame=>frame) }
|
173
|
+
radio_button(:startPM) { |page| page.radio_button_element(:name=>/SectionsForm:sectionTable:0:meetingsTable:0:startTimeAm/, :index=>1, :frame=>frame) }
|
174
|
+
radio_button(:endAM) { |page| page.radio_button_element(:name=>/SectionsForm:sectionTable:0:meetingsTable:0:endTimeAm/, :index=>0, :frame=>frame) }
|
175
|
+
radio_button(:endPM) { |page| page.radio_button_element(:name=>/SectionsForm:sectionTable:0:meetingsTable:0:endTimeAm/, :index=>1, :frame=>frame) }
|
176
|
+
radio_button(:unlimited_students) { |page| page.radio_button_element(:name=>/SectionsForm:sectionTable:0:limit/, :index=>0, :frame=>frame) }
|
177
|
+
radio_button(:limited_students) { |page| page.radio_button_element(:name=>/SectionsForm:sectionTable:0:limit/, :index=>1, :frame=>frame) }
|
178
|
+
text_field(:max_students, :id=>/SectionsForm:sectionTable:0:maxEnrollmentInput/, :frame=>frame)
|
179
|
+
end
|
180
|
+
|
23
181
|
end
|
24
182
|
|
25
183
|
#
|
@@ -27,7 +185,19 @@ class AssignTeachingAssistants
|
|
27
185
|
include PageObject
|
28
186
|
include ToolsMenu
|
29
187
|
include SectionsMenu
|
30
|
-
|
188
|
+
def assign_TAs
|
189
|
+
frm.button(:value=>"Assign TAs").click
|
190
|
+
Sections.new(@browser)
|
191
|
+
end
|
192
|
+
|
193
|
+
in_frame(:class=>"portletMainIframe") do |frame|
|
194
|
+
select_list(:available_tas, :id=>"memberForm:availableUsers", :frame=>frame)
|
195
|
+
select_list(:assigned_tas, :id=>"memberForm:selectedUsers", :frame=>frame)
|
196
|
+
button(:assign, :value=>">", :frame=>frame)
|
197
|
+
button(:unassign, :value=>"<", :frame=>frame)
|
198
|
+
button(:assign_all, :value=>">>", :frame=>frame)
|
199
|
+
button(:unassign_all, :value=>"<<", :frame=>frame)
|
200
|
+
end
|
31
201
|
end
|
32
202
|
|
33
203
|
#
|
@@ -35,7 +205,19 @@ class AssignStudents
|
|
35
205
|
include PageObject
|
36
206
|
include ToolsMenu
|
37
207
|
include SectionsMenu
|
38
|
-
|
208
|
+
def assign_students
|
209
|
+
frm.button(:value=>"Assign students").click
|
210
|
+
Sections.new(@browser)
|
211
|
+
end
|
212
|
+
|
213
|
+
in_frame(:class=>"portletMainIframe") do |frame|
|
214
|
+
select_list(:available_students, :id=>"memberForm:availableUsers", :frame=>frame)
|
215
|
+
select_list(:assigned_students, :id=>"memberForm:selectedUsers", :frame=>frame)
|
216
|
+
button(:assign, :value=>">", :frame=>frame)
|
217
|
+
button(:unassign, :value=>"<", :frame=>frame)
|
218
|
+
button(:assign_all, :value=>">>", :frame=>frame)
|
219
|
+
button(:unassign_all, :value=>"<<", :frame=>frame)
|
220
|
+
end
|
39
221
|
end
|
40
222
|
|
41
223
|
# The Options page for Sections.
|
@@ -43,5 +225,13 @@ class SectionsOptions
|
|
43
225
|
include PageObject
|
44
226
|
include ToolsMenu
|
45
227
|
include SectionsMenu
|
46
|
-
|
228
|
+
def update
|
229
|
+
frm().button(:value=>"Update").click
|
230
|
+
Sections.new(@browser)
|
231
|
+
end
|
232
|
+
|
233
|
+
in_frame(:class=>"portletMainIframe") do |frame|
|
234
|
+
checkbox(:students_can_sign_up, :id=>"optionsForm:selfRegister", :frame=>frame)
|
235
|
+
checkbox(:students_can_switch, :id=>"optionsForm:selfSwitch", :frame=>frame)
|
236
|
+
end
|
47
237
|
end
|
@@ -724,27 +724,7 @@ class Information
|
|
724
724
|
end
|
725
725
|
|
726
726
|
|
727
|
-
#================
|
728
|
-
# Drop Box pages
|
729
|
-
#================
|
730
727
|
|
731
|
-
#
|
732
|
-
class DropBox < AddFiles
|
733
|
-
|
734
|
-
include ToolsMenu
|
735
|
-
|
736
|
-
def initialize(browser)
|
737
|
-
@browser = browser
|
738
|
-
|
739
|
-
@@classes = {
|
740
|
-
:this => "DropBox",
|
741
|
-
:parent => "DropBox",
|
742
|
-
:second => "",
|
743
|
-
:third => ""
|
744
|
-
}
|
745
|
-
end
|
746
|
-
|
747
|
-
end
|
748
728
|
|
749
729
|
|
750
730
|
|
@@ -1079,426 +1059,6 @@ end
|
|
1079
1059
|
|
1080
1060
|
|
1081
1061
|
|
1082
|
-
#================
|
1083
|
-
# Lesson Pages
|
1084
|
-
#================
|
1085
|
-
|
1086
|
-
# Contains items common to most Lessons pages.
|
1087
|
-
module LessonsMenu
|
1088
|
-
|
1089
|
-
# Clicks on the Preferences link on the Lessons page,
|
1090
|
-
# then instantiates the LessonPreferences class.
|
1091
|
-
def preferences
|
1092
|
-
frm.link(:text=>"Preferences").click
|
1093
|
-
LessonPreferences.new(@browser)
|
1094
|
-
end
|
1095
|
-
|
1096
|
-
def view
|
1097
|
-
frm.link(:text=>"View").click
|
1098
|
-
if frm.div(:class=>"meletePortletToolBarMessage").text=="Viewing student side..."
|
1099
|
-
ViewModuleList.new(@browser)
|
1100
|
-
else
|
1101
|
-
#FIXME
|
1102
|
-
end
|
1103
|
-
end
|
1104
|
-
|
1105
|
-
def manage
|
1106
|
-
frm.link(:text=>"Manage").click
|
1107
|
-
LessonManage.new(@browser)
|
1108
|
-
end
|
1109
|
-
|
1110
|
-
def author
|
1111
|
-
#FIXME
|
1112
|
-
end
|
1113
|
-
|
1114
|
-
end
|
1115
|
-
|
1116
|
-
# The Lessons page in a site ("icon-sakai-melete")
|
1117
|
-
#
|
1118
|
-
# Note that this class is inclusive of both the
|
1119
|
-
# Instructor/Admin and the Student views of this page
|
1120
|
-
# many methods will error out if used when in the
|
1121
|
-
# Student view.
|
1122
|
-
class Lessons
|
1123
|
-
|
1124
|
-
include PageObject
|
1125
|
-
include ToolsMenu
|
1126
|
-
include LessonsMenu
|
1127
|
-
|
1128
|
-
# Clicks the Add Module link, then
|
1129
|
-
# instantiates the AddModule class.
|
1130
|
-
#
|
1131
|
-
# Assumes the Add Module link is present
|
1132
|
-
# and will error out if it is not.
|
1133
|
-
def add_module
|
1134
|
-
frm.link(:text=>"Add Module").click
|
1135
|
-
AddEditModule.new(@browser)
|
1136
|
-
end
|
1137
|
-
|
1138
|
-
# Clicks on the link that matches the supplied
|
1139
|
-
# name value, then instantiates the
|
1140
|
-
# AddEditLesson, or ViewLesson class, depending
|
1141
|
-
# on which page loads.
|
1142
|
-
#
|
1143
|
-
# Will error out if there is no
|
1144
|
-
# matching link in the list.
|
1145
|
-
def open_lesson(name)
|
1146
|
-
frm.link(:text=>name).click
|
1147
|
-
if frm.div(:class=>"meletePortletToolBarMessage").exist? && frm.div(:class=>"meletePortletToolBarMessage").text=="Editing module..."
|
1148
|
-
AddEditModule.new(@browser)
|
1149
|
-
else
|
1150
|
-
ViewModule.new(@browser)
|
1151
|
-
end
|
1152
|
-
end
|
1153
|
-
|
1154
|
-
# Returns an array of the Module titles displayed on the page.
|
1155
|
-
def lessons_list
|
1156
|
-
list = []
|
1157
|
-
frm.table(:id=>/lis.+module.+form:table/).links.each do |link|
|
1158
|
-
if link.id=~/lis.+module.+form:table:.+:(edit|view)Mod/
|
1159
|
-
list << link.text
|
1160
|
-
end
|
1161
|
-
end
|
1162
|
-
return list
|
1163
|
-
end
|
1164
|
-
|
1165
|
-
# Returns and array containing the list of section titles for the
|
1166
|
-
# specified module.
|
1167
|
-
def sections_list(module_name)
|
1168
|
-
list = []
|
1169
|
-
if frm.table(:id=>/lis.+module.+form:table/).row(:text=>/#{Regexp.escape(module_name)}/).table(:id=>/tablesec/).exist?
|
1170
|
-
frm.table(:id=>/lis.+module.+form:table/).row(:text=>/#{Regexp.escape(module_name)}/).table(:id=>/tablesec/).links.each do |link|
|
1171
|
-
if link.id=~/Sec/
|
1172
|
-
list << link.text
|
1173
|
-
end
|
1174
|
-
end
|
1175
|
-
end
|
1176
|
-
return list
|
1177
|
-
end
|
1178
|
-
|
1179
|
-
end
|
1180
|
-
|
1181
|
-
# The student user's view of a Lesson Module or Section.
|
1182
|
-
class ViewModule
|
1183
|
-
|
1184
|
-
include PageObject
|
1185
|
-
include ToolsMenu
|
1186
|
-
|
1187
|
-
def sections_list
|
1188
|
-
list = []
|
1189
|
-
frm.table(:id=>"viewmoduleStudentform:tablesec").links.each { |link| list << link.text }
|
1190
|
-
return list
|
1191
|
-
end
|
1192
|
-
|
1193
|
-
def next
|
1194
|
-
frm.link(:text=>"Next").click
|
1195
|
-
ViewModule.new(@browser)
|
1196
|
-
end
|
1197
|
-
|
1198
|
-
# Returns the text of the Module title row
|
1199
|
-
def module_title
|
1200
|
-
frm.span(:id=>/modtitle/).text
|
1201
|
-
end
|
1202
|
-
|
1203
|
-
# Returns the text of the Section title row
|
1204
|
-
def section_title
|
1205
|
-
frm.span(:id=>/form:title/).text
|
1206
|
-
end
|
1207
|
-
|
1208
|
-
def content_include?(content)
|
1209
|
-
frm.form(:id=>"viewsectionStudentform").text.include?(content)
|
1210
|
-
end
|
1211
|
-
|
1212
|
-
end
|
1213
|
-
|
1214
|
-
# This is the Instructor's preview of the Student's view
|
1215
|
-
# of the list of Lesson Modules.
|
1216
|
-
class ViewModuleList
|
1217
|
-
|
1218
|
-
include PageObject
|
1219
|
-
include ToolsMenu
|
1220
|
-
|
1221
|
-
def open_lesson(name)
|
1222
|
-
frm.link(:text=>name).click
|
1223
|
-
LessonStudentSide.new(@browser)
|
1224
|
-
end
|
1225
|
-
|
1226
|
-
def open_section(name)
|
1227
|
-
frm.link(:text=>name).click
|
1228
|
-
SectionStudentSide.new(@browser)
|
1229
|
-
end
|
1230
|
-
|
1231
|
-
end
|
1232
|
-
|
1233
|
-
# The instructor's preview of the student view of the lesson.
|
1234
|
-
class LessonStudentSide
|
1235
|
-
|
1236
|
-
include PageObject
|
1237
|
-
include ToolsMenu
|
1238
|
-
include LessonsMenu
|
1239
|
-
|
1240
|
-
end
|
1241
|
-
|
1242
|
-
# The instructor's preview of the student's view of the section.
|
1243
|
-
class SectionStudentSide
|
1244
|
-
|
1245
|
-
include PageObject
|
1246
|
-
include ToolsMenu
|
1247
|
-
include LessonsMenu
|
1248
|
-
|
1249
|
-
end
|
1250
|
-
|
1251
|
-
# The Managing Options page for Lessons
|
1252
|
-
class LessonManage
|
1253
|
-
|
1254
|
-
include PageObject
|
1255
|
-
include ToolsMenu
|
1256
|
-
include LessonsMenu
|
1257
|
-
|
1258
|
-
def manage_content
|
1259
|
-
frm.link(:text=>"Manage Content").click
|
1260
|
-
LessonManageContent.new(@browser)
|
1261
|
-
end
|
1262
|
-
|
1263
|
-
def sort
|
1264
|
-
frm.link(:text=>"Sort").click
|
1265
|
-
LessonManageSort.new(@browser)
|
1266
|
-
end
|
1267
|
-
|
1268
|
-
# Clicks the Import/Export button and
|
1269
|
-
# instantiates the LessonImportExport class.
|
1270
|
-
def import_export
|
1271
|
-
frm.link(:text=>"Import/Export").click
|
1272
|
-
LessonImportExport.new(@browser)
|
1273
|
-
end
|
1274
|
-
|
1275
|
-
end
|
1276
|
-
|
1277
|
-
# The Sorting Modules and Sections page in Lessons
|
1278
|
-
class LessonManageSort
|
1279
|
-
|
1280
|
-
include PageObject
|
1281
|
-
include ToolsMenu
|
1282
|
-
|
1283
|
-
def view
|
1284
|
-
frm.link(:text=>"View").click
|
1285
|
-
if frm.div(:class=>"meletePortletToolBarMessage").text=="Viewing student side..."
|
1286
|
-
ViewModuleList.new(@browser)
|
1287
|
-
else
|
1288
|
-
#FIXME
|
1289
|
-
end
|
1290
|
-
end
|
1291
|
-
|
1292
|
-
in_frame(:index=>1) do |frame|
|
1293
|
-
link(:sort_modules, :id=>"SortSectionForm:sortmod", :frame=>frame)
|
1294
|
-
link(:sort_sections, :id=>"SortModuleForm:sortsec", :frame=>frame)
|
1295
|
-
|
1296
|
-
end
|
1297
|
-
end
|
1298
|
-
|
1299
|
-
# The Import/Export page in Manage Lessons for a Site
|
1300
|
-
class LessonImportExport
|
1301
|
-
|
1302
|
-
include PageObject
|
1303
|
-
include ToolsMenu
|
1304
|
-
include LessonsMenu
|
1305
|
-
|
1306
|
-
# Uploads the file specified - meaning that it enters
|
1307
|
-
# the target file information, then clicks the import
|
1308
|
-
# button.
|
1309
|
-
#
|
1310
|
-
# The file path is an optional parameter.
|
1311
|
-
def upload_IMS(file_name, file_path="")
|
1312
|
-
frm.file_field(:name, "impfile").set(file_path + file_name)
|
1313
|
-
frm.link(:id=>"importexportform:importModule").click
|
1314
|
-
frm.table(:id=>"AutoNumber1").div(:text=>"Processing...").wait_while_present
|
1315
|
-
end
|
1316
|
-
|
1317
|
-
# Returns the text of the alert box.
|
1318
|
-
def alert_text
|
1319
|
-
frm.span(:class=>"BlueClass").text
|
1320
|
-
end
|
1321
|
-
|
1322
|
-
end
|
1323
|
-
|
1324
|
-
# The User preference options page for Lessons.
|
1325
|
-
#
|
1326
|
-
# Note that this class is inclusive of Student
|
1327
|
-
# and Instructor views of the page. Thus,
|
1328
|
-
# not all methods in the class will work
|
1329
|
-
# at all times.
|
1330
|
-
class LessonPreferences
|
1331
|
-
|
1332
|
-
include PageObject
|
1333
|
-
include ToolsMenu
|
1334
|
-
|
1335
|
-
# Clicks the View button
|
1336
|
-
# then instantiates the Lessons class.
|
1337
|
-
def view
|
1338
|
-
frm.link(:text=>"View").click
|
1339
|
-
Lessons.new(@browser)
|
1340
|
-
end
|
1341
|
-
|
1342
|
-
in_frame(:index=>1) do |frame|
|
1343
|
-
radio_button(:expanded) { |page| page.radio_button_element(:name=>"UserPreferenceForm:_id5", :index=>0, :frame=>frame) }
|
1344
|
-
radio_button(:collapsed) { |page| page.radio_button_element(:name=>"UserPreferenceForm:_id5", :index=>1, :frame=>frame) }
|
1345
|
-
link(:set, :id=>"UserPreferenceForm:SetButton", :frame=>frame)
|
1346
|
-
end
|
1347
|
-
end
|
1348
|
-
|
1349
|
-
# This Class encompasses methods for both the Add and the Edit pages for Lesson Modules.
|
1350
|
-
class AddEditModule
|
1351
|
-
|
1352
|
-
include PageObject
|
1353
|
-
include ToolsMenu
|
1354
|
-
|
1355
|
-
# Clicks the Add button for the Lesson Module
|
1356
|
-
# then instantiates the ConfirmModule class.
|
1357
|
-
def add
|
1358
|
-
frm.link(:id=>/ModuleForm:submitsave/).click
|
1359
|
-
ConfirmModule.new(@browser)
|
1360
|
-
end
|
1361
|
-
|
1362
|
-
def add_content_sections
|
1363
|
-
frm.link(:id=>/ModuleForm:sectionButton/).click
|
1364
|
-
AddEditSection.new(@browser)
|
1365
|
-
end
|
1366
|
-
|
1367
|
-
in_frame(:index=>1) do |frame|
|
1368
|
-
text_field(:title, :id=>/ModuleForm:title/, :frame=>frame)
|
1369
|
-
text_area(:description, :id=>/ModuleForm:description/, :frame=>frame)
|
1370
|
-
text_area(:keywords, :id=>/ModuleForm:keywords/, :frame=>frame)
|
1371
|
-
text_field(:start_date, :id=>/ModuleForm:startDate/, :frame=>frame)
|
1372
|
-
text_field(:end_date, :id=>/ModuleForm:endDate/, :frame=>frame)
|
1373
|
-
end
|
1374
|
-
end
|
1375
|
-
|
1376
|
-
# The confirmation page when you are saving a Lesson Module.
|
1377
|
-
class ConfirmModule
|
1378
|
-
|
1379
|
-
include PageObject
|
1380
|
-
include ToolsMenu
|
1381
|
-
|
1382
|
-
# Clicks the Add Content Sections button and
|
1383
|
-
# instantiates the AddEditSection class.
|
1384
|
-
def add_content_sections
|
1385
|
-
frm.link(:id=>/ModuleConfirmForm:sectionButton/).click
|
1386
|
-
AddEditSection.new(@browser)
|
1387
|
-
end
|
1388
|
-
|
1389
|
-
# Clicks the Return to Modules button, then
|
1390
|
-
# instantiates the AddEditModule class.
|
1391
|
-
def return_to_modules
|
1392
|
-
frm.link(:id=>"AddModuleConfirmForm:returnModImg").click
|
1393
|
-
AddEditModule.new(@browser)
|
1394
|
-
end
|
1395
|
-
|
1396
|
-
end
|
1397
|
-
|
1398
|
-
# Page for adding a section to a Lesson.
|
1399
|
-
class AddEditSection
|
1400
|
-
|
1401
|
-
include PageObject
|
1402
|
-
include ToolsMenu
|
1403
|
-
|
1404
|
-
# Clicks the Add button on the page
|
1405
|
-
# then instantiates the ConfirmSectionAdd class.
|
1406
|
-
def add
|
1407
|
-
frm.link(:id=>/SectionForm:submitsave/).click
|
1408
|
-
ConfirmSectionAdd.new(@browser)
|
1409
|
-
end
|
1410
|
-
|
1411
|
-
# Pointer to the Edit Text box of the FCKEditor
|
1412
|
-
# on the page.
|
1413
|
-
def content_editor
|
1414
|
-
frm.frame(:id, "AddSectionForm:fckEditorView:otherMeletecontentEditor_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0)
|
1415
|
-
end
|
1416
|
-
|
1417
|
-
def add_content=(text)
|
1418
|
-
content_editor.send_keys(text)
|
1419
|
-
end
|
1420
|
-
|
1421
|
-
def clear_content
|
1422
|
-
frm.frame(:id, "AddSectionForm:fckEditorView:otherMeletecontentEditor_inputRichText___Frame").div(:title=>"Select All").fire_event("onclick")
|
1423
|
-
content_editor.send_keys :backspace
|
1424
|
-
end
|
1425
|
-
|
1426
|
-
def select_url
|
1427
|
-
frm.link(:id=>"AddSectionForm:ContentLinkView:serverViewButton").click
|
1428
|
-
SelectingContent.new(@browser)
|
1429
|
-
end
|
1430
|
-
|
1431
|
-
# This method clicks the Select button that appears on the page
|
1432
|
-
# then calls the LessonAddAttachment class.
|
1433
|
-
#
|
1434
|
-
# It assumes that the Content Type selection box has
|
1435
|
-
# already been updated to "Upload or link to a file in Resources".
|
1436
|
-
def select_or_upload_file
|
1437
|
-
frm.link(:id=>"AddSectionForm:ResourceHelperLinkView:serverViewButton").click
|
1438
|
-
LessonAddAttachment.new(@browser)
|
1439
|
-
end
|
1440
|
-
|
1441
|
-
in_frame(:index=>1) do |frame|
|
1442
|
-
text_field(:title, :id=>"AddSectionForm:title", :frame=>frame)
|
1443
|
-
select_list(:content_type, :id=>"AddSectionForm:contentType", :frame=>frame)
|
1444
|
-
checkbox(:auditory_content, :id=>"AddSectionForm:contentaudio", :frame=>frame)
|
1445
|
-
end
|
1446
|
-
end
|
1447
|
-
|
1448
|
-
# Confirmation page for Adding (or Editing)
|
1449
|
-
# a Section to a Module in Lessons.
|
1450
|
-
class ConfirmSectionAdd
|
1451
|
-
|
1452
|
-
include PageObject
|
1453
|
-
include ToolsMenu
|
1454
|
-
|
1455
|
-
# Clicks the Add Another Section button
|
1456
|
-
# then instantiates the AddSection class.
|
1457
|
-
def add_another_section
|
1458
|
-
frm.link(:id=>/SectionConfirmForm:saveAddAnotherbutton/).click
|
1459
|
-
AddEditSection.new(@browser)
|
1460
|
-
end
|
1461
|
-
|
1462
|
-
# Clicks the Finish button
|
1463
|
-
# then instantiates the Lessons class.
|
1464
|
-
def finish
|
1465
|
-
frm.link(:id=>/Form:FinishButton/).click
|
1466
|
-
Lessons.new(@browser)
|
1467
|
-
end
|
1468
|
-
|
1469
|
-
end
|
1470
|
-
|
1471
|
-
#
|
1472
|
-
class SelectingContent
|
1473
|
-
|
1474
|
-
include PageObject
|
1475
|
-
include ToolsMenu
|
1476
|
-
|
1477
|
-
def continue
|
1478
|
-
frm.link(:id=>"ServerViewForm:addButton").click
|
1479
|
-
AddEditSection.new(@browser)
|
1480
|
-
end
|
1481
|
-
|
1482
|
-
in_frame(:index=>1) do |frame|
|
1483
|
-
text_field(:new_url, :id=>"ServerViewForm:link", :frame=>frame)
|
1484
|
-
text_field(:url_title, :id=>"ServerViewForm:link_title", :frame=>frame)
|
1485
|
-
end
|
1486
|
-
end
|
1487
|
-
|
1488
|
-
#
|
1489
|
-
class LessonAddAttachment < AddFiles
|
1490
|
-
|
1491
|
-
include ToolsMenu
|
1492
|
-
|
1493
|
-
def initialize(browser)
|
1494
|
-
@browser = browser
|
1495
|
-
@@classes = {
|
1496
|
-
:this => "LessonAddAttachment",
|
1497
|
-
:parent => "AddEditSection"
|
1498
|
-
}
|
1499
|
-
end
|
1500
|
-
|
1501
|
-
end
|
1502
1062
|
|
1503
1063
|
#================
|
1504
1064
|
# Matrix Pages for a Portfolio Site
|
@@ -1684,10 +1244,13 @@ class EditCell
|
|
1684
1244
|
include PageObject
|
1685
1245
|
include ToolsMenu
|
1686
1246
|
|
1247
|
+
thing(:select_evaluators_link) { |b| b.frm.link(:text=>"Select Evaluators") }
|
1248
|
+
|
1687
1249
|
# Clicks the "Select Evaluators" link
|
1688
1250
|
# and instantiates the SelectEvaluators Class.
|
1689
1251
|
def select_evaluators
|
1690
|
-
|
1252
|
+
select_evaluators_link.wait_until_present
|
1253
|
+
select_evaluators_link.click
|
1691
1254
|
SelectEvaluators.new(@browser)
|
1692
1255
|
end
|
1693
1256
|
|