sambal-cle 0.1.3
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/README.md +4 -0
- data/lib/sambal-cle/base_page.rb +20 -0
- data/lib/sambal-cle/core-ext.rb +90 -0
- data/lib/sambal-cle/data_objects/announcement.rb +82 -0
- data/lib/sambal-cle/data_objects/assessment.rb +32 -0
- data/lib/sambal-cle/data_objects/assignment.rb +205 -0
- data/lib/sambal-cle/data_objects/blog.rb +46 -0
- data/lib/sambal-cle/data_objects/blogger.rb +49 -0
- data/lib/sambal-cle/data_objects/chat_room.rb +54 -0
- data/lib/sambal-cle/data_objects/event.rb +89 -0
- data/lib/sambal-cle/data_objects/forum.rb +212 -0
- data/lib/sambal-cle/data_objects/lesson.rb +185 -0
- data/lib/sambal-cle/data_objects/message.rb +57 -0
- data/lib/sambal-cle/data_objects/poll.rb +74 -0
- data/lib/sambal-cle/data_objects/resource.rb +209 -0
- data/lib/sambal-cle/data_objects/site.rb +295 -0
- data/lib/sambal-cle/data_objects/syllabus.rb +73 -0
- data/lib/sambal-cle/data_objects/web_content_tool.rb +51 -0
- data/lib/sambal-cle/data_objects/wiki.rb +63 -0
- data/lib/sambal-cle/date_makers.rb +118 -0
- data/lib/sambal-cle/gem_ext.rb +23 -0
- data/lib/sambal-cle/page_helper.rb +22 -0
- data/lib/sambal-cle/page_maker.rb +48 -0
- data/lib/sambal-cle/page_objects/account.rb +111 -0
- data/lib/sambal-cle/page_objects/aliases.rb +43 -0
- data/lib/sambal-cle/page_objects/announcements.rb +190 -0
- data/lib/sambal-cle/page_objects/assessments.rb +874 -0
- data/lib/sambal-cle/page_objects/assignments.rb +770 -0
- data/lib/sambal-cle/page_objects/basic_lti.rb +6 -0
- data/lib/sambal-cle/page_objects/blogger.rb +205 -0
- data/lib/sambal-cle/page_objects/blogs.rb +60 -0
- data/lib/sambal-cle/page_objects/calendar.rb +330 -0
- data/lib/sambal-cle/page_objects/calendar_summary.rb +1 -0
- data/lib/sambal-cle/page_objects/chat_room.rb +22 -0
- data/lib/sambal-cle/page_objects/drop_box.rb +9 -0
- data/lib/sambal-cle/page_objects/email_archive.rb +22 -0
- data/lib/sambal-cle/page_objects/entity_picker.rb +62 -0
- data/lib/sambal-cle/page_objects/evaluations.rb +158 -0
- data/lib/sambal-cle/page_objects/feedback.rb +36 -0
- data/lib/sambal-cle/page_objects/forms.rb +120 -0
- data/lib/sambal-cle/page_objects/forums.rb +254 -0
- data/lib/sambal-cle/page_objects/glossary.rb +117 -0
- data/lib/sambal-cle/page_objects/gradebook.rb +29 -0
- data/lib/sambal-cle/page_objects/gradebook2.rb +17 -0
- data/lib/sambal-cle/page_objects/home.rb +36 -0
- data/lib/sambal-cle/page_objects/jforums.rb +444 -0
- data/lib/sambal-cle/page_objects/job_scheduler.rb +121 -0
- data/lib/sambal-cle/page_objects/lessons.rb +361 -0
- data/lib/sambal-cle/page_objects/login.rb +28 -0
- data/lib/sambal-cle/page_objects/matrix.rb +241 -0
- data/lib/sambal-cle/page_objects/media_gallery.rb +13 -0
- data/lib/sambal-cle/page_objects/messages.rb +622 -0
- data/lib/sambal-cle/page_objects/my_workspace.rb +44 -0
- data/lib/sambal-cle/page_objects/news.rb +8 -0
- data/lib/sambal-cle/page_objects/podcasts.rb +27 -0
- data/lib/sambal-cle/page_objects/polls.rb +69 -0
- data/lib/sambal-cle/page_objects/portfolio_templates.rb +161 -0
- data/lib/sambal-cle/page_objects/portfolios.rb +162 -0
- data/lib/sambal-cle/page_objects/post_em.rb +1 -0
- data/lib/sambal-cle/page_objects/profile.rb +51 -0
- data/lib/sambal-cle/page_objects/profile2.rb +344 -0
- data/lib/sambal-cle/page_objects/public_search.rb +61 -0
- data/lib/sambal-cle/page_objects/realms.rb +19 -0
- data/lib/sambal-cle/page_objects/resources.rb +326 -0
- data/lib/sambal-cle/page_objects/resources_roster.rb +0 -0
- data/lib/sambal-cle/page_objects/rosters.rb +70 -0
- data/lib/sambal-cle/page_objects/rwiki.rb +34 -0
- data/lib/sambal-cle/page_objects/search.rb +34 -0
- data/lib/sambal-cle/page_objects/sections.rb +295 -0
- data/lib/sambal-cle/page_objects/single_user.rb +1 -0
- data/lib/sambal-cle/page_objects/site_setup.rb +621 -0
- data/lib/sambal-cle/page_objects/site_statistics.rb +1 -0
- data/lib/sambal-cle/page_objects/sites.rb +255 -0
- data/lib/sambal-cle/page_objects/styles.rb +74 -0
- data/lib/sambal-cle/page_objects/syllabus.rb +166 -0
- data/lib/sambal-cle/page_objects/user_membership.rb +57 -0
- data/lib/sambal-cle/page_objects/users.rb +88 -0
- data/lib/sambal-cle/randomizers.rb +117 -0
- data/lib/sambal-cle/rich_text.rb +38 -0
- data/lib/sambal-cle/utilities.rb +31 -0
- data/lib/sambal-cle/workflows.rb +223 -0
- data/lib/sambal-cle.rb +31 -0
- data/sambal-cle.gemspec +14 -0
- data/test/add_assignment_to_calendar_spec.rb +86 -0
- data/test/assignment_announcements_spec.rb +71 -0
- data/test/assignment_gradebook_spec.rb +98 -0
- data/test/config.yml.template +4 -0
- data/test/directory.yml.template +123 -0
- data/test/duplicate_site_spec.rb +244 -0
- metadata +167 -0
@@ -0,0 +1,770 @@
|
|
1
|
+
|
2
|
+
#================
|
3
|
+
# Assignments Pages
|
4
|
+
#================
|
5
|
+
|
6
|
+
class AssignmentsBase < BasePage
|
7
|
+
|
8
|
+
frame_element
|
9
|
+
|
10
|
+
class << self
|
11
|
+
|
12
|
+
def menu_elements
|
13
|
+
action(:add_assignment) { |b| b.frm.link(:text=>"Add").click }
|
14
|
+
action(:assignment_list) { |b| b.frm.link(:text=>"Assignment List").click }
|
15
|
+
action(:grade_report) { |b| b.frm.link(:text=>"Grade Report").click }
|
16
|
+
action(:student_view) { |b| b.frm.link(:text=>"Student View").click }
|
17
|
+
action(:permissions) { |b| b.frm.link(:text=>"Permissions").click }
|
18
|
+
action(:options) { |b| b.frm.link(:text=>"Options").click }
|
19
|
+
end
|
20
|
+
|
21
|
+
def listview_elements
|
22
|
+
element(:select_page_size) { |b| b.frm.select(:name=>"selectPageSize") }
|
23
|
+
action(:next) { |b| b.frm.button(:name=>"eventSubmit_doList_next").click }
|
24
|
+
action(:last) { |b| b.frm.button(:name=>"eventSubmit_doList_last").click }
|
25
|
+
action(:previous) { |b| b.frm.button(:name=>"eventSubmit_doList_prev").click }
|
26
|
+
action(:first) { |b| b.frm.button(:name=>"eventSubmit_doList_first").click }
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
# The page where you create a new assignment
|
34
|
+
class AssignmentAdd < AssignmentsBase
|
35
|
+
|
36
|
+
include FCKEditor
|
37
|
+
menu_elements
|
38
|
+
|
39
|
+
expected_element :editor
|
40
|
+
|
41
|
+
# Clicks the Post button, then
|
42
|
+
# next is the AssignmentsList page class.
|
43
|
+
action(:post) { |b| b.frm.button(:value=>"Post").click }
|
44
|
+
|
45
|
+
# Clicks the Cancel button, then
|
46
|
+
# next is the AssignmentsList page class.
|
47
|
+
action(:cancel) { |b| b.frm.button(:value=>"Cancel", :index=>-1).click }
|
48
|
+
|
49
|
+
# Clicks the Save Draft button, then
|
50
|
+
# next is the AssignmentsList page class.
|
51
|
+
action(:save_draft) { |b| b.frm.button(:name=>"save").click }
|
52
|
+
|
53
|
+
# Grabs the text contained in the alert box when
|
54
|
+
# it is present on the page (will throw an error if
|
55
|
+
# called when the box is not present).
|
56
|
+
value(:alert_text) { |b| b.frm.div(:class=>"portletBody").div(:class=>"alertMessage").text }
|
57
|
+
|
58
|
+
element(:editor) { |b| b.frm.frame(:id, "new_assignment_instructions___Frame") }
|
59
|
+
|
60
|
+
# Sends the specified text to the text box in the FCKEditor
|
61
|
+
# on the page.
|
62
|
+
def instructions=(instructions)
|
63
|
+
editor.td(:id, "xEditingArea").frame(:index=>0).send_keys([:command, 'a'], :backspace)
|
64
|
+
editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(instructions)
|
65
|
+
end
|
66
|
+
|
67
|
+
# Clicks the Preview button, next is
|
68
|
+
# the AssignmentsPreview page class.
|
69
|
+
action(:preview) { |b| b.frm.button(:value=>"Preview").click }
|
70
|
+
|
71
|
+
# This is the warning message that appears when you
|
72
|
+
# select to add an assignment to the gradebook.
|
73
|
+
element(:gradebook_warning) { |b| b.frm.div(:class, "portletBody").span(:id, "gradebookListWarnAssoc") }
|
74
|
+
|
75
|
+
# Clicks the Add Attachments button, then
|
76
|
+
# next is the AssignmentAttachments page class.
|
77
|
+
action(:add_attachments) { |b| b.frm.button(:value=>"Add Attachments").click }
|
78
|
+
|
79
|
+
element(:assignment_id) { |b| b.frm.hidden(:name=>"assignmentId") }
|
80
|
+
|
81
|
+
element(:title) { |b| b.frm.text_field(:id=>"new_assignment_title") }
|
82
|
+
element(:open_month) { |b| b.frm.select(:id=>"new_assignment_openmonth") }
|
83
|
+
element(:open_day) { |b| b.frm.select(:id=>"new_assignment_openday") }
|
84
|
+
element(:open_year) { |b| b.frm.select(:id=>"new_assignment_openyear") }
|
85
|
+
element(:open_hour) { |b| b.frm.select(:id=>"new_assignment_openhour") }
|
86
|
+
element(:open_minute) { |b| b.frm.select(:id=>"new_assignment_openmin") }
|
87
|
+
element(:open_meridian) { |b| b.frm.select(:id=>"new_assignment_openampm") }
|
88
|
+
element(:due_month) { |b| b.frm.select(:id=>"new_assignment_duemonth") }
|
89
|
+
element(:due_day) { |b| b.frm.select(:id=>"new_assignment_dueday") }
|
90
|
+
element(:due_year) { |b| b.frm.select(:id=>"new_assignment_dueyear") }
|
91
|
+
element(:due_hour) { |b| b.frm.select(:id=>"new_assignment_duehour") }
|
92
|
+
element(:due_minute) { |b| b.frm.select(:id=>"new_assignment_duemin") }
|
93
|
+
element(:due_meridian) { |b| b.frm.select(:id=>"new_assignment_dueampm") }
|
94
|
+
element(:accept_month) { |b| b.frm.select(:id=>"new_assignment_closemonth") }
|
95
|
+
element(:accept_day) { |b| b.frm.select(:id=>"new_assignment_closeday") }
|
96
|
+
element(:accept_year) { |b| b.frm.select(:id=>"new_assignment_closeyear") }
|
97
|
+
element(:accept_hour) { |b| b.frm.select(:id=>"new_assignment_closehour") }
|
98
|
+
element(:accept_minute) { |b| b.frm.select(:id=>"new_assignment_closemin") }
|
99
|
+
element(:accept_meridian) { |b| b.frm.select(:id=>"new_assignment_closeampm") }
|
100
|
+
element(:student_submissions) { |b| b.frm.select(:id=>"subType") }
|
101
|
+
element(:grade_scale) { |b| b.frm.select(:id=>"new_assignment_grade_type") }
|
102
|
+
element(:allow_resubmission) { |b| b.frm.checkbox(:id=>"allowResToggle") }
|
103
|
+
element(:num_resubmissions) { |b| b.frm.form(:name=>"newAssignmentForm").select(:id=>"allowResubmitNumber") }
|
104
|
+
element(:resub_until_month) { |b| b.frm.form(:name=>"newAssignmentForm").select(:id=>"allow_resubmit_closeMonth") }
|
105
|
+
element(:resub_until_day) { |b| b.frm.form(:name=>"newAssignmentForm").select(:id=>"allow_resubmit_closeDay") }
|
106
|
+
element(:resub_until_year) { |b| b.frm.form(:name=>"newAssignmentForm").select(:id=>"allow_resubmit_closeYear") }
|
107
|
+
element(:resub_until_hour) { |b| b.frm.form(:name=>"newAssignmentForm").select(:id=>"allow_resubmit_closeHour") }
|
108
|
+
element(:resub_until_minute) { |b| b.frm.form(:name=>"newAssignmentForm").select(:id=>"allow_resubmit_closeMin") }
|
109
|
+
element(:resub_until_meridian) { |b| b.frm.form(:name=>"newAssignmentForm").select(:id=>"allow_resubmit_closeAMPM") }
|
110
|
+
element(:max_points) { |b| b.frm.text_field(:name=>"new_assignment_grade_points") }
|
111
|
+
element(:add_due_date) { |b| b.frm.checkbox(:id=>"new_assignment_check_add_due_date") }
|
112
|
+
element(:add_open_announcement) { |b| b.frm.checkbox(:id=>"new_assignment_check_auto_announce") }
|
113
|
+
element(:add_honor_pledge) { |b| b.frm.checkbox(:id=>"new_assignment_check_add_honor_pledge") }
|
114
|
+
|
115
|
+
element(:use_turnitin) { |b| b.frm.checkbox(:id=>"new_assignment_use_review_service") }
|
116
|
+
element(:allow_students_to_view_report) { |b| b.frm.checkbox(:id=>"new_assignment_allow_student_view") }
|
117
|
+
|
118
|
+
element(:do_not_add_to_gradebook) { |b| b.frm.radio(:id=>"no",:name=>"new_assignment_add_to_gradebook") }
|
119
|
+
element(:add_to_gradebook) { |b| b.frm.radio(:id=>"add", :name=>"new_assignment_add_to_gradebook") }
|
120
|
+
element(:do_not_send_notifications) { |b| b.frm.radio(:id=>"notsendnotif") }
|
121
|
+
element(:send_notifications) { |b| b.frm.radio(:id=>"sendnotif") }
|
122
|
+
element(:send_summary_email) { |b| b.frm.radio(:id=>"sendnotifsummary") }
|
123
|
+
element(:do_not_send_grade_notif) { |b| b.frm.radio(:id=>"notsendreleasegradenotif") }
|
124
|
+
element(:send_grade_notif) { |b| b.frm.radio(:id=>"sendreleasegradenotif") }
|
125
|
+
action(:add_model_answer) { |b| b.frm.link(:id=>"modelanswer_add").click }
|
126
|
+
action(:add_private_note) { |b| b.frm.link(:id=>"note_add").click }
|
127
|
+
action(:add_all_purpose_item) { |b| b.frm.link(:id=>"allPurpose_add").click }
|
128
|
+
|
129
|
+
element(:model_answer) { |b| b.frm.text_field(:id=>"modelanswer_text") }
|
130
|
+
action(:model_answer_attach) { |b| b.frm.button(:name=>"modelAnswerAttach").click }
|
131
|
+
element(:show_model_answer) { |b| b.frm.select(:id=>"modelanswer_to") }
|
132
|
+
action(:save_model_answer) { |b| b.frm.button(:id=>"modelanswer_save").click }
|
133
|
+
action(:cancel_model_answer) { |b| b.frm.button(:id=>"modelanswer_cancel").click }
|
134
|
+
element(:private_note) { |b| b.frm.text_field(:id=>"note_text") }
|
135
|
+
element(:share_note_with) { |b| b.frm.select(:id=>"note_to") }
|
136
|
+
action(:save_note) { |b| b.frm.button(:id=>"note_save").click }
|
137
|
+
action(:cancel_note) { |b| b.frm.button(:id=>"note_cancel").click }
|
138
|
+
element(:all_purpose_title) { |b| b.frm.text_field(:id=>"allPurpose_title") }
|
139
|
+
element(:all_purpose_text) { |b| b.frm.text_field(:id=>"allPurpose_text") }
|
140
|
+
action(:add_all_purpose_attachments) { |b| b.frm.button(:id=>"allPurposeAttach").click }
|
141
|
+
element(:show_this_all_purpose_item) { |b| b.frm.radio(:id=>"allPurposeHide1") }
|
142
|
+
element(:hide_this_all_purpose_item) { |b| b.frm.radio(:id=>"allPurposeHide2") }
|
143
|
+
element(:show_from) { |b| b.frm.checkbox(:id=>"allPurposeShowFrom") }
|
144
|
+
element(:show_until) { |b| b.frm.checkbox(:id=>"allPurposeShowTo") }
|
145
|
+
element(:show_from_month) { |b| b.frm.select(:id=>"allPurpose_releaseMonth") }
|
146
|
+
element(:show_from_day) { |b| b.frm.select(:id=>"allPurpose_releaseDay") }
|
147
|
+
element(:show_from_year) { |b| b.frm.select(:id=>"allPurpose_releaseYear") }
|
148
|
+
element(:show_from_hour) { |b| b.frm.select(:id=>"allPurpose_releaseHour") }
|
149
|
+
element(:show_from_minute) { |b| b.frm.select(:id=>"allPurpose_releaseMin") }
|
150
|
+
element(:show_from_meridian) { |b| b.frm.select(:id=>"allPurpose_releaseAMPM") }
|
151
|
+
element(:show_until_month) { |b| b.frm.select(:id=>"allPurpose_retractMonth") }
|
152
|
+
element(:show_until_day) { |b| b.frm.select(:id=>"allPurpose_retractDay") }
|
153
|
+
element(:show_until_year) { |b| b.frm.select(:id=>"allPurpose_retractYear") }
|
154
|
+
element(:show_until_hour) { |b| b.frm.select(:id=>"allPurpose_retractHour") }
|
155
|
+
element(:show_until_minute) { |b| b.frm.select(:id=>"allPurpose_retractMin") }
|
156
|
+
element(:show_until_meridian) { |b| b.frm.select(:id=>"allPurpose_retractAMPM") }
|
157
|
+
action(:expand_guest_list) { |b| b.frm.link(:id=>"expand_1").click }
|
158
|
+
action(:collapse_guest_list) { |b| b.frm.link(:id=>"collapse_1").click }
|
159
|
+
action(:expand_TA_list) { |b| b.frm.link(:id=>"expand_2").click }
|
160
|
+
action(:collapse_TA_list) { |b| b.frm.link(:id=>"collapse_2").click }
|
161
|
+
action(:expand_instructor_list) { |b| b.frm.link(:id=>"expand_3").click }
|
162
|
+
action(:collapse_instructor_list) { |b| b.frm.link(:is=>"collapse_3").click }
|
163
|
+
|
164
|
+
# Note that only the "All" checkboxes are defined, since other items may or may not be there
|
165
|
+
element(:all_guests) { |b| b.frm.checkbox(:id=>"allPurpose_Guest") }
|
166
|
+
element(:all_TAs) { |b| b.frm.checkbox(:id=>"allPurpose_Teaching Assistant") }
|
167
|
+
element(:all_instructors) { |b| b.frm.checkbox(:id=>"allPurpose_Instructor") }
|
168
|
+
|
169
|
+
end
|
170
|
+
|
171
|
+
# Page that appears when you first click the Assignments link
|
172
|
+
class AssignmentsList < AssignmentsBase
|
173
|
+
|
174
|
+
menu_elements
|
175
|
+
listview_elements
|
176
|
+
alias :add :add_assignment
|
177
|
+
|
178
|
+
# Returns an array of the displayed assignment titles.
|
179
|
+
# Use for verification of test steps.
|
180
|
+
def assignments_titles
|
181
|
+
titles = []
|
182
|
+
a_table = frm.table(:class=>"listHier lines nolines")
|
183
|
+
1.upto(a_table.rows.size-1) do |x|
|
184
|
+
titles << a_table[x][1].h4(:index=>0).text
|
185
|
+
end
|
186
|
+
return titles
|
187
|
+
end
|
188
|
+
alias assignment_titles assignments_titles
|
189
|
+
alias assignment_list assignments_titles
|
190
|
+
alias assignments_list assignments_titles
|
191
|
+
|
192
|
+
# Clicks the Edit link for the assignment with the specified
|
193
|
+
# id, then instantiates the AssignmentAdd page class.
|
194
|
+
def edit_assignment_id(id)
|
195
|
+
frm.link(:href=>/#{Regexp.escape(id)}/).click
|
196
|
+
AssignmentAdd.new(@browser)
|
197
|
+
end
|
198
|
+
|
199
|
+
# Clicks the Edit link for the Assignment specified.
|
200
|
+
# next is the AssignmentAdd page class.
|
201
|
+
def edit_assignment(assignment_name)
|
202
|
+
index = assignments_titles.index(assignment_name)
|
203
|
+
frm.link(:text=>"Edit", :index=>index).click
|
204
|
+
end
|
205
|
+
|
206
|
+
# Checks the appropriate checkbox, based on the specified assignment_name
|
207
|
+
# Then clicks the Update button and confirms the deletion request.
|
208
|
+
# It then reinstantiates the AssignmentsList class because of the page
|
209
|
+
# update.
|
210
|
+
def delete_assignment(assignment_name)
|
211
|
+
frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(assignment_name)}/).checkbox(:name=>"selectedAssignments").set
|
212
|
+
frm.button(:value=>"Update").click
|
213
|
+
frm.button(:value=>"Delete").click
|
214
|
+
AssignmentsList.new(@browser)
|
215
|
+
end
|
216
|
+
|
217
|
+
# Clicks on the Duplicate link for the Assignment specified.
|
218
|
+
# Then instantiates the AssignmentsList page class.
|
219
|
+
def duplicate_assignment(assignment_name)
|
220
|
+
index = assignments_titles.index(assignment_name)
|
221
|
+
frm.link(:text=>"Duplicate", :index=>index).click
|
222
|
+
AssignmentsList.new(@browser)
|
223
|
+
end
|
224
|
+
|
225
|
+
# Gets the assignment id from the href of the specified
|
226
|
+
# Assignment link.
|
227
|
+
def get_assignment_id(assignment_name)
|
228
|
+
assignment_href(assignment_name) =~ /(?<=\/a\/\S{36}\/).+(?=&pan)/
|
229
|
+
return $~.to_s
|
230
|
+
end
|
231
|
+
|
232
|
+
def assignment_href(name)
|
233
|
+
frm.link(:text=>/#{Regexp.escape(name)}/).href
|
234
|
+
end
|
235
|
+
|
236
|
+
# Checks the checkbox for the specified Assignment,
|
237
|
+
# using the assignment id as the identifier.
|
238
|
+
def check_assignment(id) #FIXME to use name instead of id.
|
239
|
+
frm.checkbox(:value, /#{id}/).set
|
240
|
+
end
|
241
|
+
|
242
|
+
# Opens the specified assignment for viewing
|
243
|
+
def open_assignment(assignment_name)
|
244
|
+
frm.link(:text=>assignment_name).click
|
245
|
+
end
|
246
|
+
|
247
|
+
# Gets the contents of the status column
|
248
|
+
# for the specified assignment
|
249
|
+
def status_of(assignment_name)
|
250
|
+
frm.table(:class=>/listHier lines/).row(:text=>/#{Regexp.escape(assignment_name)}/).td(:headers=>"status").text
|
251
|
+
end
|
252
|
+
|
253
|
+
# Clicks the View Submissions link for the specified
|
254
|
+
# Assignment, then instantiates the AssignmentSubmissionList
|
255
|
+
# page class.
|
256
|
+
def view_submissions_for(assignment_name)
|
257
|
+
frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"View Submissions").click
|
258
|
+
AssignmentSubmissionList.new(@browser)
|
259
|
+
end
|
260
|
+
|
261
|
+
# Clicks the Grade link for the specified Assignment,
|
262
|
+
# then instantiates the AssignmentSubmissionList page class.
|
263
|
+
def grade(assignment_name)
|
264
|
+
frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"Grade").click
|
265
|
+
AssignmentSubmissionList.new(@browser)
|
266
|
+
end
|
267
|
+
|
268
|
+
action(:sort_assignment_title) { |b| b.frm.link(:text=>"Assignment title").click }
|
269
|
+
action(:sort_status) { |b| b.frm.link(:text=>"Status").click }
|
270
|
+
action(:sort_open) { |b| b.frm.link(:text=>"Open").click }
|
271
|
+
action(:sort_due) { |b| b.frm.link(:text=>"Due").click }
|
272
|
+
action(:sort_in) { |b| b.frm.link(:text=>"In").click }
|
273
|
+
action(:sort_new) { |b| b.frm.link(:text=>"New").click }
|
274
|
+
action(:sort_scale) { |b| b.frm.link(:text=>"Scale").click }
|
275
|
+
element(:view) { |b| b.frm.select(:id=>"view") }
|
276
|
+
action(:update) { |b| b.frm.button(:name=>"eventSubmit_doDelete_confirm_assignment").click }
|
277
|
+
|
278
|
+
end
|
279
|
+
|
280
|
+
# The Permissions Page in Assignments
|
281
|
+
class AssignmentsPermissions < AssignmentsBase
|
282
|
+
|
283
|
+
# Clicks the Save button, next is
|
284
|
+
# the AssignmentsList page class.
|
285
|
+
action(:save) {|b| b.frm.button(:value=>"Save").click }
|
286
|
+
|
287
|
+
element(:evaluators_share_drafts) { |b| b.frm.checkbox(:id=>"Evaluatorasn.share.drafts") }
|
288
|
+
element(:organizers_share_drafts) { |b| b.frm.checkbox(:id=>"Organizerasn.share.drafts") }
|
289
|
+
|
290
|
+
element(:guests_all_groups) { |b| b.frm.checkbox(:id=>"Guestasn.all.groups") }
|
291
|
+
element(:guests_create_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.new") }
|
292
|
+
element(:guests_submit_to_assigments) { |b| b.frm.checkbox(:id=>"Guestasn.submit") }
|
293
|
+
element(:guests_delete_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.delete") }
|
294
|
+
element(:guests_read_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.read") }
|
295
|
+
element(:guests_revise_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.revise") }
|
296
|
+
element(:guests_grade_assignments) { |b| b.frm.checkbox(:id=>"Guestasn.grade") }
|
297
|
+
element(:guests_receive_notifications) { |b| b.frm.checkbox(:id=>"Guestasn.receive.notifications") }
|
298
|
+
element(:guests_share_drafts) { |b| b.frm.checkbox(:id=>"Guestasn.share.drafts") }
|
299
|
+
element(:instructors_all_groups) { |b| b.frm.checkbox(:id=>"Instructorasn.all.groups") }
|
300
|
+
element(:instructors_create_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.new") }
|
301
|
+
element(:instructors_submit_to_assigments) { |b| b.frm.checkbox(:id=>"Instructorasn.submit") }
|
302
|
+
element(:instructors_delete_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.delete") }
|
303
|
+
element(:instructors_read_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.read") }
|
304
|
+
element(:instructors_revise_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.revise") }
|
305
|
+
element(:instructors_grade_assignments) { |b| b.frm.checkbox(:id=>"Instructorasn.grade") }
|
306
|
+
element(:instructors_receive_notifications) { |b| b.frm.checkbox(:id=>"Instructorasn.receive.notifications") }
|
307
|
+
element(:instructors_share_drafts) { |b| b.frm.checkbox(:id=>"Instructorasn.share.drafts") }
|
308
|
+
element(:students_all_groups) { |b| b.frm.checkbox(:id=>"Studentasn.all.groups") }
|
309
|
+
element(:students_create_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.new") }
|
310
|
+
element(:students_submit_to_assigments) { |b| b.frm.checkbox(:id=>"Studentasn.submit") }
|
311
|
+
element(:students_delete_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.delete") }
|
312
|
+
element(:students_read_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.read") }
|
313
|
+
element(:students_revise_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.revise") }
|
314
|
+
element(:students_grade_assignments) { |b| b.frm.checkbox(:id=>"Studentasn.grade") }
|
315
|
+
element(:students_receive_notifications) { |b| b.frm.checkbox(:id=>"Studentasn.receive.notifications") }
|
316
|
+
element(:students_share_drafts) { |b| b.frm.checkbox(:id=>"Studentasn.share.drafts") }
|
317
|
+
element(:tas_all_groups) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.all.groups") }
|
318
|
+
element(:tas_create_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.new") }
|
319
|
+
element(:tas_submit_to_assigments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.submit") }
|
320
|
+
element(:tas_delete_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.delete") }
|
321
|
+
element(:tas_read_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.read") }
|
322
|
+
element(:tas_revise_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.revise") }
|
323
|
+
element(:tas_grade_assignments) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.grade") }
|
324
|
+
element(:tas_receive_notifications) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.receive.notifications") }
|
325
|
+
element(:tas_share_drafts) { |b| b.frm.checkbox(:id=>"Teaching Assistantasn.share.drafts") }
|
326
|
+
action(:undo_changes) { |b| b.frm.link(:text=>"Undo changes").click }
|
327
|
+
action(:cancel) { |b| b.frm.button(:id=>"eventSubmit_doCancel").click }
|
328
|
+
action(:permission) { |b| b.frm.link(:text=>"Permission").click }
|
329
|
+
action(:guest) { |b| b.frm.link(:text=>"Guest").click }
|
330
|
+
action(:instructor) { |b| b.frm.link(:text=>"Instructor").click }
|
331
|
+
action(:student) { |b| b.frm.link(:text=>"Student").click }
|
332
|
+
action(:teaching_assistant) { |b| b.frm.link(:text=>"Teaching Assistant").click }
|
333
|
+
action(:same_permissions_for_all_groups) { |b| b.frm.link(:text=>"Same site level permissions for all groups inside the site").click }
|
334
|
+
action(:create_new_assignments) { |b| b.frm.link(:text=>"Create new assignment(s)").click }
|
335
|
+
action(:submit_to_assignments) { |b| b.frm.link(:text=>"Submit to assignment(s)").click }
|
336
|
+
action(:delete_assignments) { |b| b.frm.link(:text=>"Delete assignment(s)").click }
|
337
|
+
action(:read_assignments) { |b| b.frm.link(:text=>"Read Assignment(s)").click }
|
338
|
+
action(:revise_assignments) { |b| b.frm.link(:text=>"Revise assignment(s)").click }
|
339
|
+
action(:grade_submissions) { |b| b.frm.link(:text=>"Grade assignment submission(s)").click }
|
340
|
+
action(:receive_email_notifications) { |b| b.frm.link(:text=>"Receive email notifications").click }
|
341
|
+
action(:view_drafts_from_others) { |b| b.frm.link(:text=>"Able to view draft assignment(s) created by other users").click }
|
342
|
+
|
343
|
+
end
|
344
|
+
|
345
|
+
# Page that appears when you click to preview an Assignment
|
346
|
+
class AssignmentsPreview < AssignmentsBase
|
347
|
+
|
348
|
+
menu_elements
|
349
|
+
|
350
|
+
# Returns the text content of the page header
|
351
|
+
def header
|
352
|
+
frm.div(:class=>"portletBody").h3.text
|
353
|
+
end
|
354
|
+
|
355
|
+
# Returns a hash object containing the contents of the Item Summary table.
|
356
|
+
# The hash's Key is the header column and the value is the content column.
|
357
|
+
def item_summary
|
358
|
+
hash = {}
|
359
|
+
frm.table(:class=>"itemSummary").rows.each do |row|
|
360
|
+
hash.store(row.th.text, row.td.text)
|
361
|
+
end
|
362
|
+
return hash
|
363
|
+
end
|
364
|
+
|
365
|
+
# Grabs the Assignment Instructions text.
|
366
|
+
def assignment_instructions
|
367
|
+
frm.div(:class=>"textPanel").text
|
368
|
+
end
|
369
|
+
|
370
|
+
# Grabs the instructor comments text.
|
371
|
+
def instructor_comments
|
372
|
+
frm.div(:class=>"portletBody").div(:class=>"textPanel", :index=>2).text
|
373
|
+
end
|
374
|
+
|
375
|
+
#
|
376
|
+
def back_to_list
|
377
|
+
frm.button(:value=>"Back to list").click
|
378
|
+
AssignmentsList.new(@browser)
|
379
|
+
end
|
380
|
+
|
381
|
+
# Clicks the Post button, then instantiates
|
382
|
+
# the AssignmentsList page class.
|
383
|
+
def post
|
384
|
+
frm.button(:name=>"post").click
|
385
|
+
AssignmentsList.new(@browser)
|
386
|
+
end
|
387
|
+
|
388
|
+
# Clicks the Cancel button and instantiates the
|
389
|
+
# AssignmentsList Class.
|
390
|
+
def cancel
|
391
|
+
frm.button(:value=>"Cancel").click
|
392
|
+
AssignmentsList.new(@browser)
|
393
|
+
end
|
394
|
+
|
395
|
+
element(:assignment_id) { |b| b.frm.hidden(:name=>"assignmentId") }
|
396
|
+
action(:hide_assignment) { |b| b.frm.link(:href=>/doHide_preview_assignment_assignment/).click }
|
397
|
+
action(:show_assignment) { |b| b.frm.link(:href=>/doShow_preview_assignment_assignment/).click }
|
398
|
+
action(:hide_student_view) { |b| b.frm.link(:href=>/doHide_preview_assignment_student_view/).click }
|
399
|
+
action(:show_student_view) { |b| b.frm.link(:href=>/doShow_preview_assignment_student_view/).click }
|
400
|
+
action(:edit) { |b| b.frm.button(:name=>"revise").click }
|
401
|
+
action(:save_draft) { |b| b.frm.button(:name=>"save").click }
|
402
|
+
action(:done) { |b| b.frm.button(:name=>"done").click }
|
403
|
+
|
404
|
+
end
|
405
|
+
|
406
|
+
# The reorder page for Assignments
|
407
|
+
class AssignmentsReorder < AssignmentsBase
|
408
|
+
|
409
|
+
menu_elements
|
410
|
+
|
411
|
+
# Clicks the Save button, then instantiates
|
412
|
+
# the AssignmentsList page class.
|
413
|
+
def save
|
414
|
+
frm.button(:value=>"Save").click
|
415
|
+
AssignmentsList.new(@browser)
|
416
|
+
end
|
417
|
+
|
418
|
+
# Clicks the Cancel button, then instantiates
|
419
|
+
# the AssignmentsList Class.
|
420
|
+
def cancel
|
421
|
+
frm.button(:value=>"Cancel").click
|
422
|
+
AssignmentsList.new(@browser)
|
423
|
+
end
|
424
|
+
|
425
|
+
action(:sort_by_title) { |b| b.frm.link(:text=>"Sort by title").click }
|
426
|
+
action(:sort_by_open_date) { |b| b.frm.link(:text=>"Sort by open date").click }
|
427
|
+
action(:sort_by_due_date) { |b| b.frm.link(:text=>"Sort by due date").click }
|
428
|
+
action(:undo_last) { |b| b.frm.link(:text=>"Undo last").click }
|
429
|
+
action(:undo_all) { |b| b.frm.link(:text=>"Undo all").click }
|
430
|
+
|
431
|
+
end
|
432
|
+
|
433
|
+
# A Student user's page for editing/submitting/view an assignment.
|
434
|
+
class AssignmentStudent < BasePage
|
435
|
+
|
436
|
+
frame_element
|
437
|
+
|
438
|
+
# Returns the text content of the page header
|
439
|
+
def header
|
440
|
+
frm.div(:class=>"portletBody").h3.text
|
441
|
+
end
|
442
|
+
|
443
|
+
# Returns a hash object containing the contents of the Item Summary table.
|
444
|
+
# The hash's Key is the header column and the value is the content column.
|
445
|
+
def item_summary
|
446
|
+
hash = {}
|
447
|
+
frm.table(:class=>"itemSummary").rows.each do |row|
|
448
|
+
hash.store(row.th.text, row.td.text)
|
449
|
+
end
|
450
|
+
return hash
|
451
|
+
end
|
452
|
+
|
453
|
+
# Grabs the instructor comments text.
|
454
|
+
def instructor_comments
|
455
|
+
frm.div(:class=>"portletBody").div(:class=>"textPanel", :index=>2).text
|
456
|
+
end
|
457
|
+
|
458
|
+
# Enters the specified text into the Assignment Text FCKEditor.
|
459
|
+
def assignment_text=(text)
|
460
|
+
frm.frame(:id, "Assignment.view_submission_text___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
461
|
+
end
|
462
|
+
|
463
|
+
# Clears out any existing text from the Assignment Text FCKEditor.
|
464
|
+
def remove_assignment_text
|
465
|
+
frm.frame(:id, "Assignment.view_submission_text___Frame").div(:title=>"Select All").fire_event("onclick")
|
466
|
+
frm.frame(:id, "Assignment.view_submission_text___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys :backspace
|
467
|
+
end
|
468
|
+
|
469
|
+
# This class variable allows adding an arbitrary number of
|
470
|
+
# files to the page, as long as the adding steps alternate between
|
471
|
+
# selecting the file and clicking the add more files button
|
472
|
+
@@file_number = 0
|
473
|
+
|
474
|
+
# Enters the specified file name into the file field. Entering the path
|
475
|
+
# separately is optional.
|
476
|
+
# Once the filename is entered in the field, the
|
477
|
+
# @@file_number class variable is increased by one
|
478
|
+
# in case any more files need to be added to the upload
|
479
|
+
# list.
|
480
|
+
def select_file(file_name, file_path="")
|
481
|
+
frm.file_field(:id=>"clonableUpload", :name=>"upload#{@@file_number}").set(file_path + file_name)
|
482
|
+
@@file_number += 1
|
483
|
+
end
|
484
|
+
|
485
|
+
# Clicks the Submit button, then instantiates
|
486
|
+
# the appropriate page class, based on the
|
487
|
+
# page that gets loaded.
|
488
|
+
def submit
|
489
|
+
frm.button(:value=>"Submit").click
|
490
|
+
@@file_number=0
|
491
|
+
if frm.div(:class=>"portletBody").h3.text=~/Submission Confirmation/
|
492
|
+
SubmissionConfirmation.new(@browser)
|
493
|
+
elsif frm.button(:value=>"Back to list").exist?
|
494
|
+
SubmissionConfirmation.new(@browser)
|
495
|
+
else
|
496
|
+
AssessmentsList.new(@browser)
|
497
|
+
end
|
498
|
+
end
|
499
|
+
|
500
|
+
# Clicks the Resubmit button, then instantiates
|
501
|
+
# the appropriate page class, based on the
|
502
|
+
# page that gets loaded.
|
503
|
+
#
|
504
|
+
# Resets @@file_number to zero so that file
|
505
|
+
# uploads will work if this page is visited again
|
506
|
+
# in the same script.
|
507
|
+
def resubmit
|
508
|
+
frm.button(:value=>"Resubmit").click
|
509
|
+
@@file_number=0
|
510
|
+
if frm.link(:text=>"Assignment title").exist?
|
511
|
+
puts "list..."
|
512
|
+
AssessmentsList.new(@browser)
|
513
|
+
else
|
514
|
+
SubmissionConfirmation.new(@browser)
|
515
|
+
end
|
516
|
+
end
|
517
|
+
|
518
|
+
# Clicks the Preview button, then
|
519
|
+
# instantiates the AssignmentStudentPreview page class.
|
520
|
+
#
|
521
|
+
# Resets @@file_number to zero so that file
|
522
|
+
# uploads will work if this page is visited again
|
523
|
+
# in the same script.
|
524
|
+
def preview
|
525
|
+
frm.button(:value=>"Preview").click
|
526
|
+
@@file_number=0
|
527
|
+
AssignmentStudentPreview.new(@browser)
|
528
|
+
end
|
529
|
+
|
530
|
+
# Clicks the Save Draft button, then
|
531
|
+
# instantiates the SubmissionConfirmation
|
532
|
+
# page class.
|
533
|
+
def save_draft
|
534
|
+
frm.button(:value=>"Save Draft").click
|
535
|
+
SubmissionConfirmation.new(@browser)
|
536
|
+
end
|
537
|
+
|
538
|
+
# Clicks the link to select more files
|
539
|
+
# from the Workspace. Then instantiates
|
540
|
+
# the AssignmentAttachments page class.
|
541
|
+
def select_more_files_from_workspace
|
542
|
+
frm.link(:id=>"attach").click
|
543
|
+
AssignmentAttachments.new(@browser)
|
544
|
+
end
|
545
|
+
|
546
|
+
# Clicks the Back to list button, then
|
547
|
+
# instantiates the AssignmentList page class.
|
548
|
+
def back_to_list
|
549
|
+
frm.button(:value=>"Back to list").click
|
550
|
+
AssignmentsList.new(@browser)
|
551
|
+
end
|
552
|
+
|
553
|
+
# Clicks the Cancel button and instantiates the
|
554
|
+
# AssignmentsList Class.
|
555
|
+
def cancel
|
556
|
+
frm.button(:value=>"Cancel").click
|
557
|
+
AssignmentsList.new(@browser)
|
558
|
+
end
|
559
|
+
|
560
|
+
action(:add_another_file) { |b| b.frm.link(:id=>"addMoreAttachmentControls") }
|
561
|
+
|
562
|
+
end
|
563
|
+
|
564
|
+
# Page that appears when a Student User clicks to Preview an
|
565
|
+
# assignment that is in progress.
|
566
|
+
class AssignmentStudentPreview < BasePage
|
567
|
+
|
568
|
+
frame_element
|
569
|
+
|
570
|
+
# Clicks the Submit button, then
|
571
|
+
# instantiates the SubmissionConfirmation
|
572
|
+
# page class.
|
573
|
+
def submit
|
574
|
+
frm.button(:value=>"Submit").click
|
575
|
+
SubmissionConfirmation.new(@browser)
|
576
|
+
end
|
577
|
+
|
578
|
+
# Clicks the Save Draft button, then
|
579
|
+
# instantiates the SubmissionConfirmation
|
580
|
+
# page class.
|
581
|
+
def save_draft
|
582
|
+
frm.button(:value=>"Save Draft").click
|
583
|
+
SubmissionConfirmation.new(@browser)
|
584
|
+
end
|
585
|
+
|
586
|
+
# Returns the contents of the submission box.
|
587
|
+
def submission_text
|
588
|
+
frm.div(:class=>"portletBody").div(:class=>/textPanel/).text
|
589
|
+
end
|
590
|
+
|
591
|
+
# Returns an array of strings. Each element in the
|
592
|
+
# array is the name of attached files.
|
593
|
+
def attachments
|
594
|
+
names = []
|
595
|
+
frm.ul(:class=>"attachList indnt1").links.each { |link| names << link.text }
|
596
|
+
return names
|
597
|
+
end
|
598
|
+
|
599
|
+
end
|
600
|
+
|
601
|
+
# The page that appears when a Student user has fully submitted an assignment
|
602
|
+
# or saves it as a draft.
|
603
|
+
class SubmissionConfirmation < BasePage
|
604
|
+
|
605
|
+
frame_element
|
606
|
+
|
607
|
+
# Returns the text of the success message on the page.
|
608
|
+
def confirmation_text
|
609
|
+
frm.div(:class=>"portletBody").div(:class=>"success").text
|
610
|
+
end
|
611
|
+
|
612
|
+
# Returns the text of the assignment submission.
|
613
|
+
def submission_text
|
614
|
+
frm.div(:class=>"portletBody").div(:class=>"textPanel indnt2").text
|
615
|
+
end
|
616
|
+
|
617
|
+
# Clicks the Back to list button, then
|
618
|
+
# instantiates the AssignmentsList page class.
|
619
|
+
def back_to_list
|
620
|
+
frm.button(:value=>"Back to list").click
|
621
|
+
frm.link(:text=>"Assignment title").wait_until_present
|
622
|
+
AssignmentsList.new(@browser)
|
623
|
+
end
|
624
|
+
end
|
625
|
+
|
626
|
+
# The page that appears when you click on an assignment's "Grade" or "View Submission" link
|
627
|
+
# as an instructor. Shows the list of students and their
|
628
|
+
# assignment submission status.
|
629
|
+
class AssignmentSubmissionList < AssignmentsBase
|
630
|
+
|
631
|
+
menu_elements
|
632
|
+
listview_elements
|
633
|
+
|
634
|
+
# Clicks the Assignment List link and instantiates the AssignmentsList Class.
|
635
|
+
def assignment_list
|
636
|
+
frm.link(:text=>"Assignment List").click
|
637
|
+
AssignmentsList.new(@browser)
|
638
|
+
end
|
639
|
+
# Clicks the Show Resubmission Settings button
|
640
|
+
def show_resubmission_settings
|
641
|
+
frm.image(:src, "/library/image/sakai/expand.gif?panel=Main").click
|
642
|
+
end
|
643
|
+
|
644
|
+
# Clicks the Show Assignment Details button.
|
645
|
+
def show_assignment_details
|
646
|
+
frm.image(:src, "/library/image/sakai/expand.gif").click
|
647
|
+
end
|
648
|
+
|
649
|
+
# Gets the Student table text and returns it in an Array object.
|
650
|
+
def student_table
|
651
|
+
table = frm.table(:class=>"listHier lines nolines").to_a
|
652
|
+
end
|
653
|
+
|
654
|
+
# Clicks the Grade link for the specified student, then
|
655
|
+
# instantiates the AssignmentSubmission page class.
|
656
|
+
def grade(student_name)
|
657
|
+
frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/).link(:text=>"Grade").click
|
658
|
+
frm.frame(:id, "grade_submission_feedback_comment___Frame").td(:id, "xEditingArea").frame(:index=>0).wait_until_present
|
659
|
+
AssignmentSubmission.new(@browser)
|
660
|
+
end
|
661
|
+
|
662
|
+
# Gets the value of the status field for the specified
|
663
|
+
# Student. Note that the student's name needs to be entered
|
664
|
+
# so that it's unique for the row, but it does not have
|
665
|
+
# to match the entire name/id value--unless there are two
|
666
|
+
# students with the same name.
|
667
|
+
#
|
668
|
+
# Useful for verification purposes.
|
669
|
+
def submission_status_of(student_name)
|
670
|
+
frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/)[4].text
|
671
|
+
end
|
672
|
+
|
673
|
+
element(:search_input) { |b| b.frm.text_field(:id=>"search") }
|
674
|
+
action(:find) { |b| b.frm.button(:value=>"Find").click }
|
675
|
+
action(:clear) { |b| b.frm.button(:value=>"Clear").click }
|
676
|
+
action(:download_all) { |b| b.frm.link(:text=>"Download All").click }
|
677
|
+
action(:upload_all) { |b| b.frm.link(:text=>"Upload All").click }
|
678
|
+
action(:release_grades) { |b| b.frm.link(:text=>"Release Grades").click }
|
679
|
+
action(:sort_by_student) { |b| b.frm.link(:text=>"Student").click }
|
680
|
+
action(:sort_by_submitted) { |b| b.frm.link(:text=>"Submitted").click }
|
681
|
+
action(:sort_by_status) { |b| b.frm.link(:text=>"Status").click }
|
682
|
+
action(:sort_by_grade) { |b| b.frm.link(:text=>"Grade").click }
|
683
|
+
action(:sort_by_release) { |b| b.frm.link(:text=>"Release").click }
|
684
|
+
element(:default_grade) { |b| b.frm.select(:id=>"defaultGrade_1") }
|
685
|
+
action(:apply) { |b| b.frm.button(:name=>"apply").click }
|
686
|
+
element(:num_resubmissions) { |b| b.frm.select(:id=>"allowResubmitNumber") }
|
687
|
+
element(:accept_until_month) { |b| b.frm.select(:id=>"allow_resubmit_closeMonth") }
|
688
|
+
element(:accept_until_day) { |b| b.frm.select(:id=>"allow_resubmit_closeDay") }
|
689
|
+
element(:accept_until_year) { |b| b.frm.select(:id=>"allow_resubmit_closeYear") }
|
690
|
+
element(:accept_until_hour) { |b| b.frm.select(:id=>"allow_resubmit_closeHour") }
|
691
|
+
element(:accept_until_min) { |b| b.frm.select(:id=>"allow_resubmit_closeMin") }
|
692
|
+
element(:accept_until_meridian) { |b| b.frm.select(:id=>"allow_resubmit_closeAMPM") }
|
693
|
+
action(:update) { |b| b.frm.button(:id=>"eventSubmit_doSave_resubmission_option").click }
|
694
|
+
action(:delete) { |b| b.frm.button(:name=>"eventSubmit_doDelete_confirm_assignment").click }
|
695
|
+
|
696
|
+
end
|
697
|
+
|
698
|
+
# The page that shows a student's submitted assignment to an instructor user.
|
699
|
+
class AssignmentSubmission < BasePage
|
700
|
+
|
701
|
+
include FCKEditor
|
702
|
+
frame_element
|
703
|
+
|
704
|
+
expected_element :editor
|
705
|
+
|
706
|
+
element(:editor) { |b| b.frm.frame(:id, "grade_submission_feedback_text___Frame") }
|
707
|
+
|
708
|
+
# Enters the specified text string in the FCKEditor box for the assignment text.
|
709
|
+
def assignment_text=(text)
|
710
|
+
editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
711
|
+
end
|
712
|
+
|
713
|
+
# Removes all the contents of the FCKEditor Assignment Text box.
|
714
|
+
def remove_assignment_text
|
715
|
+
editor.div(:title=>"Select All").fire_event("onclick")
|
716
|
+
editor.td(:id, "xEditingArea").frame(:index=>0).send_keys :backspace
|
717
|
+
end
|
718
|
+
|
719
|
+
# Enters the specified string into the Instructor Comments FCKEditor box.
|
720
|
+
def instructor_comments=(text)
|
721
|
+
editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
722
|
+
end
|
723
|
+
|
724
|
+
# Clicks the Add Attachments button, then instantiates the AssignmentAttachments Class.
|
725
|
+
def add_attachments
|
726
|
+
frm.button(:name=>"attach").click
|
727
|
+
AssignmentAttachments.new(@browser)
|
728
|
+
end
|
729
|
+
|
730
|
+
# Clicks the Return to List button, then instantiates the
|
731
|
+
# AssignmentSubmissionList Class.
|
732
|
+
def return_to_list
|
733
|
+
frm.button(:value=>"Return to List").click
|
734
|
+
AssignmentSubmissionList.new(@browser)
|
735
|
+
end
|
736
|
+
|
737
|
+
element(:select_default_grade) { |b| b.frm.select(:name=>"grade_submission_grade") }
|
738
|
+
element(:allow_resubmission) { |b| b.frm.checkbox(:id=>"allowResToggle") }
|
739
|
+
element(:num_resubmissions) { |b| b.frm.select(:id=>"allowResubmitNumberSelect") }
|
740
|
+
element(:accept_until_month) { |b| b.frm.select(:id=>"allow_resubmit_closeMonth") }
|
741
|
+
element(:accept_until_day) { |b| b.frm.select(:id=>"allow_resubmit_closeDay") }
|
742
|
+
element(:accept_until_year) { |b| b.frm.select(:id=>"allow_resubmit_closeYear") }
|
743
|
+
element(:accept_until_hour) { |b| b.frm.select(:id=>"allow_resubmit_closeHour") }
|
744
|
+
element(:accept_until_min) { |b| b.frm.select(:id=>"allow_resubmit_closeMin") }
|
745
|
+
element(:accept_until_meridian) { |b| b.frm.select(:id=>"allow_resubmit_closeAMPM") }
|
746
|
+
action(:save_and_release) { |b| b.frm.button(:value=>"Save and Release to Student").click }
|
747
|
+
action(:save_and_dont_release) { |b| b.frm.button(:value=>"Save and Don't Release to Student").click }
|
748
|
+
|
749
|
+
end
|
750
|
+
|
751
|
+
# The Grade Report page accessed from the Assignments page
|
752
|
+
class GradeReport < BasePage
|
753
|
+
|
754
|
+
frame_element
|
755
|
+
|
756
|
+
end
|
757
|
+
|
758
|
+
# The Student View page accessed from the Assignments page
|
759
|
+
class StudentView < AssignmentsBase
|
760
|
+
|
761
|
+
menu_elements
|
762
|
+
listview_elements
|
763
|
+
|
764
|
+
action(:sort_assignment_title) { |b| b.frm.link(:text=>"Assignment title").click }
|
765
|
+
action(:sort_status) { |b| b.frm.link(:text=>"Status").click }
|
766
|
+
action(:sort_open) { |b| b.frm.link(:text=>"Open").click }
|
767
|
+
action(:sort_due) { |b| b.frm.link(:text=>"Due").click }
|
768
|
+
action(:sort_scale) { |b| b.frm.link(:text=>"Scale").click }
|
769
|
+
|
770
|
+
end
|