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.
Files changed (90) hide show
  1. data/README.md +4 -0
  2. data/lib/sambal-cle/base_page.rb +20 -0
  3. data/lib/sambal-cle/core-ext.rb +90 -0
  4. data/lib/sambal-cle/data_objects/announcement.rb +82 -0
  5. data/lib/sambal-cle/data_objects/assessment.rb +32 -0
  6. data/lib/sambal-cle/data_objects/assignment.rb +205 -0
  7. data/lib/sambal-cle/data_objects/blog.rb +46 -0
  8. data/lib/sambal-cle/data_objects/blogger.rb +49 -0
  9. data/lib/sambal-cle/data_objects/chat_room.rb +54 -0
  10. data/lib/sambal-cle/data_objects/event.rb +89 -0
  11. data/lib/sambal-cle/data_objects/forum.rb +212 -0
  12. data/lib/sambal-cle/data_objects/lesson.rb +185 -0
  13. data/lib/sambal-cle/data_objects/message.rb +57 -0
  14. data/lib/sambal-cle/data_objects/poll.rb +74 -0
  15. data/lib/sambal-cle/data_objects/resource.rb +209 -0
  16. data/lib/sambal-cle/data_objects/site.rb +295 -0
  17. data/lib/sambal-cle/data_objects/syllabus.rb +73 -0
  18. data/lib/sambal-cle/data_objects/web_content_tool.rb +51 -0
  19. data/lib/sambal-cle/data_objects/wiki.rb +63 -0
  20. data/lib/sambal-cle/date_makers.rb +118 -0
  21. data/lib/sambal-cle/gem_ext.rb +23 -0
  22. data/lib/sambal-cle/page_helper.rb +22 -0
  23. data/lib/sambal-cle/page_maker.rb +48 -0
  24. data/lib/sambal-cle/page_objects/account.rb +111 -0
  25. data/lib/sambal-cle/page_objects/aliases.rb +43 -0
  26. data/lib/sambal-cle/page_objects/announcements.rb +190 -0
  27. data/lib/sambal-cle/page_objects/assessments.rb +874 -0
  28. data/lib/sambal-cle/page_objects/assignments.rb +770 -0
  29. data/lib/sambal-cle/page_objects/basic_lti.rb +6 -0
  30. data/lib/sambal-cle/page_objects/blogger.rb +205 -0
  31. data/lib/sambal-cle/page_objects/blogs.rb +60 -0
  32. data/lib/sambal-cle/page_objects/calendar.rb +330 -0
  33. data/lib/sambal-cle/page_objects/calendar_summary.rb +1 -0
  34. data/lib/sambal-cle/page_objects/chat_room.rb +22 -0
  35. data/lib/sambal-cle/page_objects/drop_box.rb +9 -0
  36. data/lib/sambal-cle/page_objects/email_archive.rb +22 -0
  37. data/lib/sambal-cle/page_objects/entity_picker.rb +62 -0
  38. data/lib/sambal-cle/page_objects/evaluations.rb +158 -0
  39. data/lib/sambal-cle/page_objects/feedback.rb +36 -0
  40. data/lib/sambal-cle/page_objects/forms.rb +120 -0
  41. data/lib/sambal-cle/page_objects/forums.rb +254 -0
  42. data/lib/sambal-cle/page_objects/glossary.rb +117 -0
  43. data/lib/sambal-cle/page_objects/gradebook.rb +29 -0
  44. data/lib/sambal-cle/page_objects/gradebook2.rb +17 -0
  45. data/lib/sambal-cle/page_objects/home.rb +36 -0
  46. data/lib/sambal-cle/page_objects/jforums.rb +444 -0
  47. data/lib/sambal-cle/page_objects/job_scheduler.rb +121 -0
  48. data/lib/sambal-cle/page_objects/lessons.rb +361 -0
  49. data/lib/sambal-cle/page_objects/login.rb +28 -0
  50. data/lib/sambal-cle/page_objects/matrix.rb +241 -0
  51. data/lib/sambal-cle/page_objects/media_gallery.rb +13 -0
  52. data/lib/sambal-cle/page_objects/messages.rb +622 -0
  53. data/lib/sambal-cle/page_objects/my_workspace.rb +44 -0
  54. data/lib/sambal-cle/page_objects/news.rb +8 -0
  55. data/lib/sambal-cle/page_objects/podcasts.rb +27 -0
  56. data/lib/sambal-cle/page_objects/polls.rb +69 -0
  57. data/lib/sambal-cle/page_objects/portfolio_templates.rb +161 -0
  58. data/lib/sambal-cle/page_objects/portfolios.rb +162 -0
  59. data/lib/sambal-cle/page_objects/post_em.rb +1 -0
  60. data/lib/sambal-cle/page_objects/profile.rb +51 -0
  61. data/lib/sambal-cle/page_objects/profile2.rb +344 -0
  62. data/lib/sambal-cle/page_objects/public_search.rb +61 -0
  63. data/lib/sambal-cle/page_objects/realms.rb +19 -0
  64. data/lib/sambal-cle/page_objects/resources.rb +326 -0
  65. data/lib/sambal-cle/page_objects/resources_roster.rb +0 -0
  66. data/lib/sambal-cle/page_objects/rosters.rb +70 -0
  67. data/lib/sambal-cle/page_objects/rwiki.rb +34 -0
  68. data/lib/sambal-cle/page_objects/search.rb +34 -0
  69. data/lib/sambal-cle/page_objects/sections.rb +295 -0
  70. data/lib/sambal-cle/page_objects/single_user.rb +1 -0
  71. data/lib/sambal-cle/page_objects/site_setup.rb +621 -0
  72. data/lib/sambal-cle/page_objects/site_statistics.rb +1 -0
  73. data/lib/sambal-cle/page_objects/sites.rb +255 -0
  74. data/lib/sambal-cle/page_objects/styles.rb +74 -0
  75. data/lib/sambal-cle/page_objects/syllabus.rb +166 -0
  76. data/lib/sambal-cle/page_objects/user_membership.rb +57 -0
  77. data/lib/sambal-cle/page_objects/users.rb +88 -0
  78. data/lib/sambal-cle/randomizers.rb +117 -0
  79. data/lib/sambal-cle/rich_text.rb +38 -0
  80. data/lib/sambal-cle/utilities.rb +31 -0
  81. data/lib/sambal-cle/workflows.rb +223 -0
  82. data/lib/sambal-cle.rb +31 -0
  83. data/sambal-cle.gemspec +14 -0
  84. data/test/add_assignment_to_calendar_spec.rb +86 -0
  85. data/test/assignment_announcements_spec.rb +71 -0
  86. data/test/assignment_gradebook_spec.rb +98 -0
  87. data/test/config.yml.template +4 -0
  88. data/test/directory.yml.template +123 -0
  89. data/test/duplicate_site_spec.rb +244 -0
  90. metadata +167 -0
@@ -0,0 +1,621 @@
1
+ #================
2
+ # Site Setup/Site Editor Pages
3
+ #================
4
+
5
+ # This module contains the methods referring to the menu items
6
+ # across the top of all the Site Editor pages.
7
+ class SiteSetupBase < BasePage
8
+
9
+ frame_element
10
+ basic_page_elements
11
+
12
+ class << self
13
+ def menu_elements
14
+ # Clicks the Edit Tools link, then
15
+ # instantiates the EditSiteTools class.
16
+ action(:edit_tools) {|b| b.frm.link(:text=>"Edit Tools").click }
17
+
18
+ # Clicks the Manage Groups link and
19
+ # instantiates the Groups Class.
20
+ action(:manage_groups) {|b| b.frm.link(:text=>"Manage Groups").click }
21
+
22
+ # Clicks the Duplicate Site link and instantiates
23
+ # the DuplicateSite class.
24
+ action(:duplicate_site) {|b| b.frm.link(:text=>"Duplicate Site").click }
25
+
26
+ action(:add_participants) {|b| b.frm.link(:text=>"Add Participants").click }
27
+
28
+ end
29
+ end
30
+ end
31
+
32
+ # The Site Setup page - a.k.a., link class=>"icon-sakai-sitesetup"
33
+ class SiteSetup < SiteSetupBase
34
+
35
+ menu_elements
36
+
37
+ expected_element :search_field
38
+
39
+ element(:search_field) { |b| b.frm.text_field(:id, "search") }
40
+
41
+ # Clicks the "New" link on the Site Setup page.
42
+ # next is the SiteType class.
43
+ action(:new) { |b| b.frm.div(:class=>"portletBody").link(:text=>"New").click }
44
+
45
+ # Searches for the specified site, then
46
+ # selects the specified Site's checkbox.
47
+ # Then clicks the Edit button
48
+ def edit(site_name)
49
+ search_field.value=Regexp.escape(site_name)
50
+ frm.button(:value=>"Search").click
51
+ frm.div(:class=>"portletBody").checkbox(:name=>"selectedMembers").set
52
+ frm.div(:class=>"portletBody").link(:text, "Edit").click
53
+ end
54
+
55
+ # Enters the specified site name string in the search
56
+ # field, clicks the Search button, then reinstantiates
57
+ # the Class due to the page refresh.
58
+ def search(site_name)
59
+ search_field.set site_name
60
+ frm.button(:value, "Search").click
61
+ end
62
+
63
+ # Searches for the specified site, then
64
+ # checks the site, clicks the delete button,
65
+ # and instantiates the DeleteSite class.
66
+ def delete(site_name)
67
+ search_field.value=site_name
68
+ frm.button(:value=>"Search").click
69
+ frm.checkbox(:name=>"selectedMembers").set
70
+ frm.div(:class=>"portletBody").link(:text, "Delete").click
71
+ end
72
+
73
+ # Returns an Array object containing strings of
74
+ # all Site titles displayed on the web page.
75
+ def site_titles
76
+ titles = []
77
+ sites_table = frm.table(:id=>"siteList")
78
+ 1.upto(sites_table.rows.size-1) do |x|
79
+ titles << sites_table[x][1].text
80
+ end
81
+ return titles
82
+ end
83
+
84
+ element(:view) { |b| b.frm.select(:id=>"view").click }
85
+ action(:clear_search) { |b| b.frm.button(:value=>"Clear Search").click }
86
+ element(:select_page_size) { |b| b.frm.select(:id=>"selectPageSize").click }
87
+ action(:sort_by_title) { |b| b.frm.link(:text=>"Worksite Title").click }
88
+ action(:sort_by_type) { |b| b.frm.link(:text=>"Type").click }
89
+ action(:sort_by_creator) { |b| b.frm.link(:text=>"Creator").click }
90
+ action(:sort_by_status) { |b| b.frm.link(:text=>"Status").click }
91
+ action(:sort_by_creation_date) { |b| b.frm.link(:text=>"Creation Date").click }
92
+
93
+ end
94
+
95
+
96
+ # The topmost "Site Editor" page,
97
+ # found in SITE MANAGEMENT
98
+ # or else Site Setup after you have
99
+ # selected to Edit a particular site.
100
+ class SiteEditor < SiteSetupBase
101
+
102
+ menu_elements
103
+
104
+ # Sets the specified role for the specified participant.
105
+ #
106
+ # Because the participant is selected using a regular expression,
107
+ # the "participant" string can be anything that will suffice as a
108
+ # unique match--i.e., last name, first name, or user id, or any combination,
109
+ # as long as it will match a part of the string that appears in the
110
+ # desired row.
111
+ def set_role(participant, role)
112
+ frm.table(:class=>/listHier lines/).row(:text=>/#{Regexp.escape(participant)}/).select(:id=>/role/).select(role)
113
+ end
114
+
115
+ action(:update_participants) { |b| b.frm.button(:value=>"Update Participants").click }
116
+
117
+ element(:return_button) { |b| b.frm.button(:name=>"back") }
118
+
119
+ action(:return_to_sites_list) { |p| p.return_button.click }
120
+
121
+ action(:previous) { |b| b.frm.button(:name=>"previous").click }
122
+ action(:printable_version) { |b| b.frm.link(:text=>"Printable Version").click }
123
+
124
+ end
125
+
126
+
127
+ # Groups page inside the Site Editor
128
+ class Groups < SiteSetupBase
129
+
130
+ menu_elements
131
+
132
+ expected_element :create_new_group_link
133
+
134
+ element(:create_new_group_link) { |b| b.frm.link(:text=>"Create New Group") }
135
+
136
+ action(:create_new_group) { |p| p.create_new_group_link.click }
137
+ action(:auto_groups) { |b| b.frm.link(:text=>"Auto Groups").click }
138
+ action(:remove_checked) { |b| b.frm.button(:id=>"delete-groups").click }
139
+ action(:cancel) { |b| b.frm.button(:id=>"cancel").click }
140
+
141
+ end
142
+
143
+ # The Create New Group page inside the Site Editor
144
+ class CreateNewGroup < SiteSetupBase
145
+
146
+ menu_elements
147
+
148
+ # Clicks the Add button and instantiates the Groups Class.
149
+ action(:add) { |b| b.frm.button(:id=>"save").click }
150
+
151
+ element(:title) { |b| b.frm.text_field(:id=>"group_title") }
152
+ element(:description) { |b| b.frm.text_field(:id=>"group_description") }
153
+ element(:site_member_list) { |b| b.frm.select(:name=>"siteMembers-selection").click }
154
+ element(:group_member_list) { |b| b.frm.select(:name=>"groupMembers-selection").click }
155
+ action(:right) { |b| b.frm.button(:name=>"right", :index=>0,).click }
156
+ action(:left) { |b| b.frm.button(:name=>"left", :index=>0).click }
157
+ action(:all_right) { |b| b.frm.button(:name=>"right", :index=>1).click }
158
+ action(:all_left) { |b| b.frm.button(:name=>"left",:index=>1).click }
159
+ action(:cancel) { |b| b.frm.button(:id=>"cancel").click }
160
+
161
+ end
162
+
163
+ # The first page of the Duplicate Site pages in the Site Editor.
164
+ class DuplicateSite < SiteSetupBase
165
+
166
+ menu_elements
167
+
168
+ def duplicate
169
+ frm.button(:value=>"Duplicate").click
170
+ frm.span(:class=>"submitnotif").wait_while_present(300)
171
+ end
172
+
173
+ # Returns the site name in the header, for verification.
174
+ def site_name
175
+ frm.div(:class=>"portletBody").h3.span(:class=>"highlight").text
176
+ end
177
+
178
+ element(:site_title) { |b| b.frm.text_field(:id=>"title") }
179
+ element(:academic_term) { |b| b.frm.select(:id=>"selectTerm") }
180
+ end
181
+
182
+ # Page for Adding Participants to a Site in Site Setup
183
+ class SiteSetupAddParticipants < SiteSetupBase
184
+
185
+ menu_elements
186
+
187
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
188
+
189
+ element(:official_participants) { |b| b.frm.text_field(:id=>"content::officialAccountParticipant") }
190
+ element(:non_official_participants) { |b| b.frm.text_field(:id=>"content::nonOfficialAccountParticipant") }
191
+ element(:assign_all_to_same_role) { |b| b.frm.radio(:id=>"content::role-row:0:role-select") }
192
+ element(:assign_each_individually) { |b| b.frm.radio(:id=>"content::role-row:1:role-select") }
193
+ element(:active_status) { |b| b.frm.radio(:id=>"content::status-row:0:status-select") }
194
+ element(:inactive_status) { |b| b.frm.radio(:id=>"content::status-row:1:status-select") }
195
+ action(:cancel) { |b| b.frm.button(:id=>"content::cancel").click }
196
+
197
+ end
198
+
199
+
200
+ # Page for selecting Participant roles individually
201
+ class SiteSetupChooseRolesIndiv < SiteSetupBase
202
+
203
+ menu_elements
204
+
205
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
206
+
207
+ action(:back) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Aback&Fast%20track%20action=siteAddParticipantHandler.processDifferentRoleBack").click }
208
+ action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acancel&Fast%20track%20action=siteAddParticipantHandler.processCancel").click }
209
+ element(:user_role) { |b| b.frm.select(:id=>"content::user-row:0:role-select-selection") }
210
+
211
+ end
212
+
213
+
214
+ # Page for selecting the same role for All. This class is used for
215
+ # both Course and Portfolio sites.
216
+ class SiteSetupChooseRole < BasePage
217
+
218
+ frame_element
219
+
220
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
221
+
222
+ # Use this method for radio buttons that aren't
223
+ # included in the default list below. Enter the
224
+ # radio button's label in the UI.
225
+ def radio_button(label)
226
+ frm.radio(:value=>label)
227
+ end
228
+
229
+ action(:back) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Aback&Fast%20track%20action=siteAddParticipantHandler.processSameRoleBack").click }
230
+ action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acancel&Fast%20track%20action=siteAddParticipantHandler.processCancel").click }
231
+ element(:guest) { |b| b.frm.radio(:value=>"Guest") }
232
+ element(:instructor) { |b| b.frm.radio(:value=>"Instructor") }
233
+ element(:student) { |b| b.frm.radio(:value=>"Student") }
234
+ element(:evaluator) { |b| b.frm.radio(:value=>"Evaluator") }
235
+ element(:organizer) { |b| b.frm.radio(:value=>"Organizer") }
236
+ element(:participant) { |b| b.frm.radio(:value=>"Participant") }
237
+ element(:reviewer) { |b| b.frm.radio(:value=>"Reviewer") }
238
+ element(:teaching_assistant) { |b| b.frm.radio(:id=>"content::role-row:3:role-select") }
239
+
240
+ end
241
+
242
+
243
+ # Page for specifying whether to send an email
244
+ # notification to the newly added Site participants
245
+ class SiteSetupParticipantEmail < SiteSetupBase
246
+
247
+ menu_elements
248
+
249
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
250
+ action(:back) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acontinue&Fast%20track%20action=siteAddParticipantHandler.processEmailNotiBack").click }
251
+ action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Acontinue&Fast%20track%20action=siteAddParticipantHandler.processEmailNotiCancel").click }
252
+ element(:send_now) { |b| b.frm.radio(:id=>"content::noti-row:0:noti-select") }
253
+ element(:dont_send) { |b| b.frm.radio(:id=>"content::noti-row:1:noti-select") }
254
+
255
+ end
256
+
257
+
258
+ # The confirmation page showing site participants and their set roles
259
+ class SiteSetupParticipantConfirm < SiteSetupBase
260
+
261
+ menu_elements
262
+
263
+ action(:finish) { |b| b.frm.button(:value=>"Finish").click }
264
+
265
+ # Returns the value of the id field for the specified name.
266
+ def id(name)
267
+ frm.table(:class=>"listHier").row(:text=>/#{Regexp.escape(name)}/)[1].text
268
+ end
269
+
270
+ # Returns the value of the Role field for the specified name.
271
+ def role(name)
272
+ frm.table(:class=>"listHier").row(:text=>/#{Regexp.escape(name)}/)[2].text
273
+ end
274
+
275
+ action(:back) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Aback&Fast%20track%20action=siteAddParticipantHandler.processConfirmBack").click }
276
+ action(:cancel) { |b| b.frm.button(:name=>"command link parameters&Submitting%20control=content%3A%3Aback&Fast%20track%20action=siteAddParticipantHandler.processConfirmCancel").click }
277
+
278
+ end
279
+
280
+ # The Edit Tools page (click on "Edit Tools" when editing a site
281
+ # in Site Setup in the Admin Workspace)
282
+ class EditSiteTools < SiteSetupBase
283
+
284
+ menu_elements
285
+
286
+ expected_element :all_tools
287
+
288
+ # Clicks the Continue button.
289
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
290
+
291
+ # This is a comprehensive list of all checkboxes and
292
+ # radio buttons for this page,
293
+ # though not all will appear at one time.
294
+ # The list will depend on the type of site being
295
+ # created/edited.
296
+ element(:all_tools) { |b| b.frm.checkbox(:id=>"all") }
297
+ element(:home) { |b| b.frm.checkbox(:id=>"home") }
298
+ element(:announcements) { |b| b.frm.checkbox(:id=>"sakai.announcements") }
299
+ element(:assignments,) { |b| b.frm.checkbox(:id=>"sakai.assignment.grades") }
300
+ element(:basic_lti) { |b| b.frm.checkbox(:id=>"sakai.basiclti") }
301
+ element(:calendar) { |b| b.frm.checkbox(:id=>"sakai.schedule") }
302
+ element(:email_archive) { |b| b.frm.checkbox(:id=>"sakai.mailbox") }
303
+ element(:evaluations) { |b| b.frm.checkbox(:id=>"osp.evaluation") }
304
+ element(:forms) { |b| b.frm.checkbox(:id=>"sakai.metaobj") }
305
+ element(:glossary) { |b| b.frm.checkbox(:id=>"osp.glossary") }
306
+ element(:matrices) { |b| b.frm.checkbox(:id=>"osp.matrix") }
307
+ element(:news) { |b| b.frm.checkbox(:id=>"sakai.news") }
308
+ element(:portfolio_layouts) { |b| b.frm.checkbox(:id=>"osp.presLayout") }
309
+ element(:portfolio_showcase) { |b| b.frm.checkbox(:id=>"sakai.rsn.osp.iframe") }
310
+ element(:portfolio_templates) { |b| b.frm.checkbox(:id=>"osp.presTemplate") }
311
+ element(:portfolios) { |b| b.frm.checkbox(:id=>"osp.presentation") }
312
+ element(:resources) { |b| b.frm.checkbox(:id=>"sakai.resources") }
313
+ element(:roster) { |b| b.frm.checkbox(:id=>"sakai.site.roster") }
314
+ element(:search) { |b| b.frm.checkbox(:id=>"sakai.search") }
315
+ element(:styles) { |b| b.frm.checkbox(:id=>"osp.style") }
316
+ element(:web_content) { |b| b.frm.checkbox(:id=>"sakai.iframe") }
317
+ element(:wizards) { |b| b.frm.checkbox(:id=>"osp.wizard") }
318
+ element(:blogger) { |b| b.frm.checkbox(:id=>"blogger") }
319
+ element(:blogs) { |b| b.frm.checkbox(:id=>"sakai.blogwow") }
320
+ element(:chat_room) { |b| b.frm.checkbox(:id=>"sakai.chat") }
321
+ element(:discussion_forums) { |b| b.frm.checkbox(:id=>"sakai.jforum.tool") }
322
+ element(:drop_box) { |b| b.frm.checkbox(:id=>"sakai.dropbox") }
323
+ element(:email) { |b| b.frm.checkbox(:id=>"sakai.mailtool") }
324
+ element(:forums) { |b| b.frm.checkbox(:id=>"sakai.forums") }
325
+ element(:certification) { |b| b.frm.checkbox(:id=>"com.rsmart.certification") }
326
+ element(:feedback) { |b| b.frm.checkbox(:id=>"sakai.postem") }
327
+ element(:gradebook) { |b| b.frm.checkbox(:id=>"sakai.gradebook.tool") }
328
+ element(:gradebook2) { |b| b.frm.checkbox(:id=>"sakai.gradebook.gwt.rpc") }
329
+ element(:lesson_builder) { |b| b.frm.checkbox(:id=>"sakai.lessonbuildertool") }
330
+ element(:lessons) { |b| b.frm.checkbox(:id=>"sakai.melete") }
331
+ element(:live_virtual_classroom) { |b| b.frm.checkbox(:id=>"rsmart.virtual_classroom.tool") }
332
+ element(:media_gallery) { |b| b.frm.checkbox(:id=>"sakai.kaltura") }
333
+ element(:messages) { |b| b.frm.checkbox(:id=>"sakai.messages") }
334
+ element(:opensyllabus) { |b| b.frm.checkbox(:id=>"sakai.opensyllabus.tool") }
335
+ element(:podcasts) { |b| b.frm.checkbox(:id=>"sakai.podcasts") }
336
+ element(:polls) { |b| b.frm.checkbox(:id=>"sakai.poll") }
337
+ element(:sections) { |b| b.frm.checkbox(:id=>"sakai.sections") }
338
+ element(:site_editor) { |b| b.frm.checkbox(:id=>"sakai.siteinfo") }
339
+ element(:site_statistics) { |b| b.frm.checkbox(:id=>"sakai.sitestats") }
340
+ element(:syllabus) { |b| b.frm.checkbox(:id=>"sakai.syllabus") }
341
+ element(:tests_and_quizzes_cb) { |b| b.frm.checkbox(:id=>"sakai.samigo") }
342
+ element(:wiki) { |b| b.frm.checkbox(:id=>"sakai.rwiki") }
343
+ element(:no_thanks) { |b| b.frm.radio(:id=>"import_no") }
344
+ element(:yes) { |b| b.frm.radio(:id=>"import_yes") }
345
+ element(:import_sites) { |b| b.frm.select(:id=>"importSites") }
346
+ action(:back) { |b| b.frm.button(:name=>"Back").click }
347
+ action(:cancel) { |b| b.frm.button(:name=>"Cancel").click }
348
+
349
+ end
350
+
351
+ class ReUseMaterial < SiteSetupBase
352
+
353
+ menu_elements
354
+
355
+ thing(:announcements_checkbox) { |b| b.frm.checkbox(name: "sakai.announcements") }
356
+ thing(:calendar_checkbox) { |b| b.frm.checkbox(name: "sakai.schedule") }
357
+ thing(:discussion_forums_checkbox) { |b| b.frm.checkbox(name: "sakai.jforum.tool") }
358
+ thing(:forums_checkbox) { |b| b.frm.checkbox(name: "sakai.forums") }
359
+ thing(:chat_room_checkbox) { |b| b.frm.checkbox(name: "sakai.chat") }
360
+ thing(:polls_checkbox) { |b| b.frm.checkbox(name: "sakai.poll") }
361
+ thing(:syllabus_checkbox) { |b| b.frm.checkbox(name: "sakai.syllabus") }
362
+ thing(:lessons_checkbox) { |b| b.frm.checkbox(name: "sakai.melete") }
363
+ thing(:resources_checkbox) { |b| b.frm.checkbox(name: "sakai.resources") }
364
+ thing(:assignments_checkbox) { |b| b.frm.checkbox(name: "sakai.assignment.grades") }
365
+ thing(:tests_and_quizzes_checkbox) { |b| b.frm.checkbox(name: "sakai.samigo") }
366
+ thing(:gradebook_checkbox) { |b| b.frm.checkbox(name: "sakai.gradebook.tool") }
367
+ thing(:gradebook2_checkbox) { |b| b.frm.checkbox(name: "sakai.gradebook.gwt.rpc") }
368
+ thing(:wiki_checkbox) { |b| b.frm.checkbox(name: "sakai.rwiki") }
369
+ thing(:news_checkbox) { |b| b.frm.checkbox(name: "sakai.news") }
370
+ thing(:web_content_checkbox) { |b| b.frm.checkbox(name: "sakai.iframe") }
371
+ thing(:site_statistics_checkbox) { |b| b.frm.checkbox(name: "sakai.sitestats") }
372
+ action(:continue) { |b| b.frm.button(name: "eventSubmit_doContinue").click }
373
+
374
+ end
375
+
376
+ # Confirmation page when editing site tools in Site Setup
377
+ class ConfirmSiteToolsEdits < SiteSetupBase
378
+
379
+ menu_elements
380
+
381
+ expected_element :finish_button
382
+
383
+ element(:finish_button) { |b| b.frm.button(value: "Finish") }
384
+
385
+ # Clicks the Finish button, next is
386
+ # the SiteSetupEdit class.
387
+ action(:finish) { |b| b.finish_button.click }
388
+
389
+ end
390
+
391
+
392
+ # The Delete Confirmation Page for deleting a Site
393
+ class DeleteSite < SiteSetupBase
394
+
395
+ menu_elements
396
+
397
+ # Clicks the Remove button, then instantiates
398
+ # the SiteSetup class.
399
+ action(:remove) { |b| b.frm.button(:value=>"Remove").click }
400
+
401
+ # Clicks the Cancel button, then instantiates
402
+ # the SiteSetup class.
403
+ action(:cancel) { |b| b.frm.button(:value=>"Cancel").click }
404
+
405
+ end
406
+
407
+ #The Site Type page that appears when creating a new site
408
+ class SiteType < SiteSetupBase
409
+
410
+ menu_elements
411
+
412
+ def continue #FIXME
413
+ if frm.button(:id, "submitBuildOwn").enabled?
414
+ frm.button(:id, "submitBuildOwn").click
415
+ elsif frm.button(:id, "submitFromTemplateCourse").enabled?
416
+ frm.button(:id, "submitFromTemplateCourse").click
417
+ elsif frm.button(:id, "submitFromTemplate").enabled?
418
+ frm.button(:id, "submitFromTemplate").click
419
+ end
420
+
421
+ end
422
+
423
+ element(:course_site) { |b| b.frm.radio(:id=>"course") }
424
+ element(:project_site) { |b| b.frm.radio(:id=>"project") }
425
+ element(:portfolio_site) { |b| b.frm.radio(:id=>"portfolio") }
426
+ element(:create_site_from_template) { |b| b.frm.radio(:id=>"copy") }
427
+ element(:academic_term) { |b| b.frm.select(:id=>"selectTerm") }
428
+ element(:select_template) { |b| b.frm.select(:id=>"templateSiteId") }
429
+ element(:select_term) { |b| b.frm.select(:id=>"selectTermTemplate") }
430
+ action(:cancel) { |b| b.frm.button(:id=>"cancelCreate").click }
431
+ element(:copy_users) { |b| b.frm.checkbox(:id=>"copyUsers") }
432
+ element(:copy_content) { |b| b.frm.checkbox(:id=>"copyContent") }
433
+ end
434
+
435
+
436
+ # The Add Multiple Tool Instances page that appears during Site creation
437
+ # after the Course Site Tools page
438
+ class AddMultipleTools < SiteSetupBase
439
+
440
+ menu_elements
441
+
442
+ # Clicks the Continue button.
443
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
444
+
445
+ # Note that the text field definitions included here
446
+ # for the Tools definitions are ONLY for the first
447
+ # instances of each. Since the UI allows for
448
+ # an arbitrary number, if you are writing tests
449
+ # that add more then you're going to have to explicitly
450
+ # reference them or define them in the test case script
451
+ # itself--for now, anyway.
452
+ element(:site_email_address) { |b| b.frm.text_field(:id=>"emailId") }
453
+ element(:basic_lti_title) { |b| b.frm.text_field(:id=>"title_sakai.basiclti") }
454
+ element(:more_basic_lti_tools) { |b| b.frm.select(:id=>"num_sakai.basiclti") }
455
+ element(:lesson_builder_title) { |b| b.frm.text_field(:id=>"title_sakai.lessonbuildertool") }
456
+ element(:more_lesson_builder_tools) { |b| b.frm.select(:id=>"num_sakai.lessonbuildertool") }
457
+ element(:news_title) { |b| b.frm.text_field(:id=>"title_sakai.news") }
458
+ element(:news_url_channel) { |b| b.frm.text_field(:name=>"channel-url_sakai.news") }
459
+ element(:more_news_tools) { |b| b.frm.select(:id=>"num_sakai.news") }
460
+ element(:web_content_title) { |b| b.frm.text_field(:id=>"title_sakai.iframe") }
461
+ element(:web_content_source) { |b| b.frm.text_field(:id=>"source_sakai.iframe") }
462
+ element(:more_web_content_tools) { |b| b.frm.select(:id=>"num_sakai.iframe") }
463
+ action(:back) { |b| b.frm.button(:name=>"Back").click }
464
+ action(:cancel) { |b| b.frm.button(:name=>"Cancel").click }
465
+
466
+ end
467
+
468
+
469
+ # The Course/Section Information page that appears when creating a new Site
470
+ class CourseSectionInfo < SiteSetupBase
471
+
472
+ menu_elements
473
+
474
+ # Clicks the Continue button, then instantiates
475
+ # the CourseSiteInfo Class.
476
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
477
+
478
+ # Clicks the Done button (or the
479
+ # "Done - go to Site" button if it
480
+ # happens to be there), then instantiates
481
+ # the SiteSetup Class.
482
+ action(:done) { |b| b. frm.button(:value=>/Done/).click }
483
+
484
+ # Note that ONLY THE FIRST instances of the
485
+ # subject, course, and section fields
486
+ # are included in the page elements definitions here,
487
+ # because their identifiers are dependent on how
488
+ # many instances exist on the page.
489
+ # This means that if you need to access the second
490
+ # or subsequent of these elements, you'll need to
491
+ # explicitly identify/define them in the test case
492
+ # itself.
493
+ element(:subject) { |b| b.frm.text_field(:name=>/Subject:/) }
494
+ element(:course) { |b| b.frm.text_field(:name=>/Course:/) }
495
+ element(:section) { |b| b.frm.text_field(:name=>/Section:/) }
496
+ element(:authorizers_username) { |b| b.frm.text_field(:id=>"uniqname") }
497
+ element(:special_instructions) { |b| b.frm.text_field(:id=>"additional") }
498
+ element(:add_more_rosters) { |b| b.frm.select(:id=>"number") }
499
+ action(:back) { |b| b.frm.button(:name=>"Back").click }
500
+ action(:cancel) { |b| b.frm.button(:name=>"Cancel").click }
501
+
502
+ end
503
+
504
+
505
+ # The Site Access Page that appears during Site creation
506
+ # immediately following the Add Multiple Tools Options page.
507
+ class SiteAccess < SiteSetupBase
508
+
509
+ menu_elements
510
+
511
+ # The page element that displays the joiner role
512
+ # select list. Use this method to validate whether the
513
+ # select list is visible or not.
514
+ #
515
+ # Example: page.joiner_role_div.visible?
516
+ element(:joiner_role_div) { |b| b.frm.div(:id=>"joinerrole") }
517
+
518
+ # Clicks the Continue button, then
519
+ # instantiates the ConfirmCourseSiteSetup class.
520
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
521
+
522
+ element(:publish_site) { |b| b.frm.radio(:id=>"publish") }
523
+ element(:leave_as_draft) { |b| b.frm.radio(:id=>"unpublish") }
524
+ element(:limited) { |b| b.frm.radio(:id=>"unjoinable") }
525
+ element(:allow) { |b| b.frm.radio(:id=>"joinable") }
526
+ action(:back) { |b| b.frm.button(:name=>"eventSubmit_doBack").click }
527
+ action(:cancel) { |b| b.frm.button(:name=>"eventSubmit_doCancel_create").click }
528
+ element(:joiner_role) { |b| b.frm.select(:id=>"joinerRole") }
529
+
530
+ end
531
+
532
+
533
+ # The Confirmation page at the end of a Course Site Setup
534
+ class ConfirmSiteSetup < BasePage
535
+
536
+ frame_element
537
+
538
+ # Clicks the Request Site button, then
539
+ # instantiates the SiteSetup Class.
540
+ action(:request_site){ |b| b.frm.button(:value=>"Request Site").click }
541
+
542
+ # For portfolio sites...
543
+ # Clicks the "Create Site" button and
544
+ # instantiates the SiteSetup class.
545
+ action(:create_site) { |b| b.frm.button(:value=>"Create Site").click }
546
+
547
+ end
548
+
549
+ # The Course Site Information page that appears when creating a new Site
550
+ # immediately after the Course/Section Information page
551
+ class CourseSiteInfo < BasePage
552
+
553
+ frame_element
554
+ basic_page_elements
555
+ include FCKEditor
556
+
557
+ expected_element :editor
558
+
559
+ element(:editor) { |b| b.frm.frame(:id=>"description___Frame") }
560
+
561
+ def description=(text)
562
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys text
563
+ end
564
+
565
+ # Clicks the Continue button, next is the
566
+ # EditSiteTools Class.
567
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
568
+
569
+ element(:short_description) { |b| b.frm.text_field(:id=>"short_description") }
570
+ element(:special_instructions) { |b| b.frm.text_field(:id=>"additional") }
571
+ element(:site_contact_name) { |b| b.frm.text_field(:id=>"siteContactName") }
572
+ element(:site_contact_email) { |b| b.frm.text_field(:id=>"siteContactEmail") }
573
+ action(:back) { |b| b.frm.button(:name=>"Back").click }
574
+ action(:cancel) { |b| b.frm.button(:name=>"Cancel").click }
575
+
576
+ end
577
+
578
+
579
+ #
580
+ class PortfolioSiteInfo < BasePage
581
+
582
+ frame_element
583
+
584
+ def description=(text)
585
+ frm.frame(:id, "description___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
586
+ end
587
+
588
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
589
+
590
+ element(:title) { |b| b.frm.text_field(:id=>"title") }
591
+ element(:url_alias) { |b| b.frm.text_field(:id=>"alias_0") }
592
+ element(:short_description) { |b| b.frm.text_area(:id=>"short_description") }
593
+ element(:icon_url) { |b| b.frm.text_field(:id=>"iconUrl") }
594
+ element(:site_contact_name) { |b| b.frm.text_field(:id=>"siteContactName") }
595
+ element(:site_contact_email) { |b| b.frm.text_field(:id=>"siteContactEmail") }
596
+
597
+ end
598
+
599
+ #
600
+ class PortfolioSiteTools < BasePage
601
+
602
+ frame_element
603
+
604
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
605
+
606
+ element(:all_tools) { |b| b.frm.checkbox(:id=>"all") }
607
+
608
+ end
609
+
610
+ #
611
+ class PortfolioConfigureToolOptions < BasePage
612
+
613
+ frame_element
614
+
615
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
616
+
617
+ element(:email) { |b| b.frm.text_field(:id=>"emailId") }
618
+
619
+ end
620
+
621
+
@@ -0,0 +1 @@
1
+ # Uh oh. We have work to do. :-)