sambal-cle 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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,344 @@
1
+ module Profile2Nav
2
+
3
+ def preferences
4
+ frm.link(:class=>"icon preferences").click
5
+ Profile2Preferences.new @browser
6
+ end
7
+
8
+ def privacy
9
+ frm.link(:text=>"Privacy").click
10
+ Profile2Privacy.new @browser
11
+ end
12
+
13
+ def my_profile
14
+ frm.link(:text=>"My profile").click
15
+ Profile2.new(@browser)
16
+ end
17
+
18
+ def connections
19
+ frm.link(:class=>"icon connections").click
20
+ Profile2Connections.new @browser
21
+ end
22
+
23
+ def pictures
24
+ frm.link(:text=>"Pictures").click
25
+ Profile2Pictures.new @browser
26
+ end
27
+
28
+ def messages
29
+ frm.link(:text=>"Messages").click
30
+ Profile2Messages.new @browser
31
+ end
32
+
33
+ def search_for_connections
34
+ frm.link(:class=>"icon search").click
35
+ Profile2Search.new @browser
36
+ end
37
+
38
+ end
39
+ #
40
+ class Profile2 < BasePage
41
+
42
+ frame_element
43
+ include Profile2Nav
44
+ def edit_basic_info
45
+ frm.div(:id=>"mainPanel").span(:text=>"Basic Information").fire_event("onmouseover")
46
+ frm.div(:id=>"mainPanel").link(:href=>/myInfo:editButton/).click
47
+ sleep 0.5
48
+ Profile2.new @browser
49
+ end
50
+
51
+ def edit_contact_info
52
+ frm.div(:id=>"mainPanel").span(:text=>"Contact Information").fire_event("onmouseover")
53
+ frm.div(:id=>"mainPanel").link(:href=>/myContact:editButton/).click
54
+ sleep 0.5
55
+ Profile2.new @browser
56
+ end
57
+
58
+ def edit_staff_info
59
+ frm.div(:id=>"mainPanel").span(:text=>"Staff Information").fire_event("onmouseover")
60
+ frm.div(:id=>"mainPanel").link(:href=>/myStaff:editButton/).click
61
+ sleep 0.5
62
+ Profile2.new @browser
63
+ end
64
+
65
+ def edit_student_info
66
+ frm.div(:id=>"mainPanel").span(:text=>"Student Information").fire_event("onmouseover")
67
+ frm.div(:id=>"mainPanel").link(:href=>/myStudent:editButton/).click
68
+ sleep 0.5
69
+ Profile2.new @browser
70
+ end
71
+
72
+ def edit_social_networking
73
+ frm.div(:id=>"mainPanel").span(:text=>"Social Networking").fire_event("onmouseover")
74
+ frm.div(:id=>"mainPanel").link(:href=>/mySocialNetworking:editButton/).click
75
+ sleep 0.5
76
+ Profile2.new @browser
77
+ end
78
+
79
+ def edit_personal_info
80
+ frm.div(:id=>"mainPanel").span(:text=>"Personal Information").fire_event("onmouseover")
81
+ frm.div(:id=>"mainPanel").link(:href=>/myInterests:editButton/).click
82
+ sleep 0.5
83
+ Profile2.new @browser
84
+ end
85
+
86
+ def change_picture
87
+ frm.div(:id=>"myPhoto").fire_event("onmouseover")
88
+ frm.div(:id=>"myPhoto").link(:class=>"edit-image-button").click
89
+ sleep 0.5
90
+ Profile2.new @browser
91
+ end
92
+
93
+ # Enters the specified filename in the file field.
94
+ #
95
+ # Note that the file should be inside the data/sakai-cle-test-api folder.
96
+ # The file or folder name used for the filename variable
97
+ # should not include a preceding slash ("/") character.
98
+ def image_file=(filename)
99
+ frm.file_field(:name=>"picture").set(File.expand_path(File.dirname(__FILE__)) + "/../../data/sakai-cle-test-api/" + filename)
100
+ end
101
+
102
+ def upload
103
+ frm.button(:value=>"Upload").click
104
+ sleep 0.5
105
+ Profile2.new @browser
106
+ end
107
+
108
+ def personal_summary=(text)
109
+ frm.frame(:id=>"id1a_ifr").send_keys([:command, 'a'], :backspace)
110
+ frm.frame(:id=>"id1a_ifr").send_keys(text)
111
+ end
112
+
113
+ def birthday(day, month, year)
114
+ frm.text_field(:name=>"birthdayContainer:birthday").click
115
+ frm.select(:class=>"ui-datepicker-new-year").wait_until_present
116
+ frm.select(:class=>"ui-datepicker-new-year").select(year.to_i)
117
+ frm.select(:class=>"ui-datepicker-new-month").select(month)
118
+ frm.link(:text=>day.to_s).click
119
+ end
120
+
121
+ def save_changes
122
+ frm.button(:value=>"Save changes").click
123
+ Profile2.new @browser
124
+ end
125
+
126
+ # Returns the number (as a string) displayed next to
127
+ # the "Connections" link in the menu. If there are no
128
+ # connections then returns zero as a string object.
129
+ def connection_requests
130
+ begin
131
+ frm.link(:class=>/icon connections/).span(:class=>"new-items-count").text
132
+ rescue
133
+ return "0"
134
+ end
135
+ end
136
+
137
+ element(:say_something) { |b| b.frm.text_field(:id=>"id1") }
138
+ action(:say_it) { |b| b.frm.button(:value=>"Say it").click }
139
+ # Basic Information
140
+ element(:nickname) { |b| b.frm.text_field(:name=>"nicknameContainer:nickname") }
141
+ # Contact Information
142
+ element(:email) { |b| b.frm.text_field(:name=>"emailContainer:email") }
143
+ element(:home_page) { |b| b.frm.text_field(:name=>"homepageContainer:homepage") }
144
+ element(:work_phone) { |b| b.frm.text_field(:name=>"workphoneContainer:workphone") }
145
+ element(:home_phone) { |b| b.frm.text_field(:name=>"homephoneContainer:homephone") }
146
+ element(:mobile_phone) { |b| b.frm.text_field(:name=>"mobilephoneContainer:mobilephone") }
147
+ element(:facsimile) { |b| b.frm.text_field(:name=>"facsimileContainer:facsimile") }
148
+ # Someday Staff Info fields should go here...
149
+
150
+ # Student Information
151
+ element(:degree_course) { |b| b.frm.text_field(:name=>"courseContainer:course") }
152
+ element(:subjects) { |b| b.frm.text_field(:name=>"subjectsContainer:subjects") }
153
+ # Social Networking
154
+
155
+ # Personal Information
156
+ element(:favorite_books) { |b| b.frm.text_field(:name=>"booksContainer:favouriteBooks") }
157
+ element(:favorite_tv_shows) { |b| b.frm.text_field(:name=>"tvContainer:favouriteTvShows") }
158
+ element(:favorite_movies) { |b| b.frm.text_field(:name=>"moviesContainer:favouriteMovies") }
159
+ element(:favorite_quotes) { |b| b.frm.text_field(:name=>"quotesContainer:favouriteQuotes") }
160
+
161
+ end
162
+
163
+ #
164
+ class Profile2Preferences < BasePage
165
+
166
+ frame_element
167
+ include Profile2Nav
168
+
169
+ end
170
+
171
+ class Profile2Privacy < BasePage
172
+
173
+ frame_element
174
+ include Profile2Nav
175
+
176
+ element(:profile_image) { |b| b.frm.select(:name=>"profileImageContainer:profileImage") }
177
+ element(:basic_info) { |b| b.frm.select(:name=>"basicInfoContainer:basicInfo") }
178
+ element(:contact_info) { |b| b.frm.select(:name=>"contactInfoContainer:contactInfo") }
179
+ element(:staff_info) { |b| b.frm.select(:name=>"staffInfoContainer:staffInfo") }
180
+ element(:student_info) { |b| b.frm.select(:name=>"studentInfoContainer:studentInfo") }
181
+ element(:social_info) { |b| b.frm.select(:name=>"socialNetworkingInfoContainer:socialNetworkingInfo") }
182
+ element(:personal_info) { |b| b.frm.select(:name=>"personalInfoContainer:personalInfo") }
183
+ element(:view_connections) { |b| b.frm.select(:name=>"myFriendsContainer:myFriends") }
184
+ element(:see_status) { |b| b.frm.select(:name=>"myStatusContainer:myStatus") }
185
+ element(:view_pictures) { |b| b.frm.select(:name=>"myPicturesContainer:myPictures") }
186
+ element(:send_messages) { |b| b.frm.select(:name=>"messagesContainer:messages") }
187
+ element(:see_kudos_rating) { |b| b.frm.select(:name=>"myKudosContainer:myKudos") }
188
+ element(:show_birth_year) { |b| b.frm.checkbox(:name=>"birthYearContainer:birthYear") }
189
+ action(:save_settings) { |b| b.frm.button(:value=>"Save settings").click }
190
+
191
+ end
192
+
193
+ class Profile2Search < BasePage
194
+
195
+ frame_element
196
+ include Profile2Nav
197
+ def search_by_name_or_email
198
+ frm.button(:value=>"Search by name or email").click
199
+ sleep 0.5
200
+ Profile2Search.new(@browser)
201
+ end
202
+
203
+ def search_by_common_interest
204
+ frm.button(:value=>"Search by common interest").click
205
+ sleep 0.5
206
+ Profile2Search.new(@browser)
207
+ end
208
+
209
+ def add_as_connection(name)
210
+ frm.div(:class=>"search-result", :text=>/#{Regexp.escape(name)}/).link(:class=>"icon connection-add").click
211
+ frm.div(:class=>"modalWindowButtons").wait_until_present
212
+ frm.div(:class=>"modalWindowButtons").button(:value=>"Add connection").click
213
+ frm.div(:class=>"modalWindowButtons").wait_while_present
214
+ sleep 0.5
215
+ Profile2Search.new @browser
216
+ end
217
+
218
+ def view(name)
219
+ frm.link(:text=>name).click
220
+ Profile2View.new(@browser)
221
+ end
222
+
223
+ # Returns an array containing strings of the names of the users returned
224
+ # in the search.
225
+ def results
226
+ results = []
227
+ frm.div(:class=>"portletBody").spans.each do |span|
228
+ if span.class_name == "search-result-info-name"
229
+ results << span.text
230
+ end
231
+ end
232
+ return results
233
+ end
234
+
235
+ def clear_results
236
+ frm.button(:value=>"Clear results").click
237
+ Profile2Search.new(@browser)
238
+ end
239
+
240
+ element(:persons_name_or_email) { |b| b.frm.text_field(:name=>"searchName") }
241
+ element(:common_interest) { |b| b.frm.text_field(:name=>"searchInterest") }
242
+
243
+ end
244
+
245
+ class Profile2Connections < BasePage
246
+
247
+ frame_element
248
+ include Profile2Nav
249
+ def confirm_request(name)
250
+ frm.div(:class=>"connection", :text=>name).link(:title=>"Confirm connection request").click
251
+ frm.div(:class=>"modalWindowButtons").wait_until_present
252
+ frm.div(:class=>"modalWindowButtons").button(:value=>"Confirm connection request").click
253
+ frm.div(:class=>"modalWindowButtons").wait_while_present
254
+ sleep 0.5
255
+ Profile2Connections.new @browser
256
+ end
257
+
258
+ # Returns an array containing the names of the connected users.
259
+ def connections
260
+ results = []
261
+ frm.div(:class=>"portletBody").spans.each do |span|
262
+ if span.class_name == "connection-info-name"
263
+ results << span.text
264
+ end
265
+ end
266
+ return results
267
+ end
268
+
269
+ end
270
+
271
+ class Profile2View < BasePage
272
+
273
+ frame_element
274
+ include Profile2Nav
275
+ #
276
+ def connection
277
+ frm.div(:class=>"leftPanel").span(:class=>/instruction icon/).text
278
+ end
279
+
280
+ #
281
+ def basic_information
282
+ hash = {}
283
+ begin
284
+ frm.div(:class=>"mainSection", :text=>/Basic Information/).table(:class=>"profileContent").rows.each do |row|
285
+ hash.store(row[0].text, row[1].text)
286
+ end
287
+ rescue Watir::Exception::UnknownObjectException
288
+
289
+ end
290
+ return hash
291
+ end
292
+
293
+ #
294
+ def contact_information
295
+ hash = {}
296
+ begin
297
+ frm.div(:class=>"mainSection", :text=>/Contact Information/).table(:class=>"profileContent").rows.each do |row|
298
+ hash.store(row[0].text, row[1].text)
299
+ end
300
+ rescue Watir::Exception::UnknownObjectException
301
+
302
+ end
303
+ return hash
304
+ end
305
+
306
+ #
307
+ def staff_information
308
+ hash = {}
309
+ begin
310
+ frm.div(:class=>"mainSection", :text=>/Staff Information/).table(:class=>"profileContent").rows.each do |row|
311
+ hash.store(row[0].text, row[1].text)
312
+ end
313
+ rescue Watir::Exception::UnknownObjectException
314
+
315
+ end
316
+ return hash
317
+ end
318
+
319
+ #
320
+ def student_information
321
+ hash = {}
322
+ begin
323
+ frm.div(:class=>"mainSection", :text=>/Student Information/).table(:class=>"profileContent").rows.each do |row|
324
+ hash.store(row[0].text, row[1].text)
325
+ end
326
+ rescue Watir::Exception::UnknownObjectException
327
+
328
+ end
329
+ return hash
330
+ end
331
+
332
+ #
333
+ def personal_information
334
+ hash = {}
335
+ begin
336
+ frm.div(:class=>"mainSection", :text=>/Personal Information/).table(:class=>"profileContent").rows.each do |row|
337
+ hash.store(row[0].text, row[1].text)
338
+ end
339
+ rescue Watir::Exception::UnknownObjectException
340
+
341
+ end
342
+ return hash
343
+ end
344
+ end
@@ -0,0 +1,61 @@
1
+
2
+ # The page where you search for public courses and projects.
3
+ class SearchPublic < BasePage
4
+
5
+ frame_element
6
+
7
+ def home
8
+ @browser.frame(:index=>0).link(:text=>"Home").click
9
+ Login.new(@browser)
10
+ end
11
+
12
+ def search_for=(string)
13
+ @browser.frame(:index=>0).text_field(:id=>"searchbox").set(Regexp.escape(string))
14
+ end
15
+
16
+ def search_for_sites
17
+ @browser.frame(:index=>0).button(:value=>"Search for Sites").click
18
+ SearchPublicResults.new(@browser)
19
+ end
20
+
21
+ end
22
+
23
+ # The page showing the results list of Site matches to a search of public sites/projects.
24
+ class SearchPublicResults < BasePage
25
+
26
+ frame_element
27
+
28
+ def click_site(site_name)
29
+ @browser.frame(:index=>0).link(:text=>site_name).click
30
+ SiteSummaryPage.new(@browser)
31
+ end
32
+
33
+ def home
34
+ @browser.frame(:id=>"ifrm").link(:text=>"Home").click
35
+ Login.new(@browser)
36
+ end
37
+
38
+ end
39
+
40
+ # The page that appears when you click a Site in the Site Search Results page, when not logged
41
+ # in to Sakai.
42
+ class SiteSummaryPage < BasePage
43
+
44
+ frame_element
45
+
46
+ def return_to_list
47
+ @browser.frame(:index=>0).button(:value=>"Return to List").click
48
+ SearchPublicResults.new(@browser)
49
+ end
50
+
51
+ def syllabus_attachments
52
+ links = []
53
+ @browser.frame(:id=>"ifrm").links.each do |link|
54
+ if link.href=~/Syllabus/
55
+ links << link.text
56
+ end
57
+ end
58
+ return links
59
+ end
60
+
61
+ end
@@ -0,0 +1,19 @@
1
+ #================
2
+ # Realms Pages
3
+ #================
4
+
5
+ # Realms page
6
+ class Realms < BasePage
7
+
8
+ frame_element
9
+
10
+ action(:new_realm) { |b| b.frm.link(:text=>"New Realm").click }
11
+ action(:search) { |b| b.frm.link(:text=>"Search").click }
12
+ element(:select_page_size) { |b| b.frm.select_list(:name=>"selectPageSize") }
13
+ action(:next) { |b| b.frm.button(:name=>"eventSubmit_doList_next").click }
14
+ action(:last) { |b| b.frm.button(:name=>"eventSubmit_doList_last").click }
15
+ action(:previous) { |b| b.frm.button(:name=>"eventSubmit_doList_prev").click }
16
+ action(:first) { |b| b.frm.button(:name=>"eventSubmit_doList_first").click }
17
+
18
+
19
+ end