sakai-cle-test-api 0.0.9 → 0.0.75
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sakai-cle-test-api.rb +2 -7
- data/lib/sakai-cle-test-api/admin_page_elements.rb +2 -6
- data/lib/sakai-cle-test-api/announcements.rb +7 -274
- data/lib/sakai-cle-test-api/assessments.rb +27 -930
- data/lib/sakai-cle-test-api/assignments.rb +13 -769
- data/lib/sakai-cle-test-api/basic_lti.rb +1 -5
- data/lib/sakai-cle-test-api/blogs.rb +2 -54
- data/lib/sakai-cle-test-api/calendar.rb +8 -423
- data/lib/sakai-cle-test-api/common_page_elements.rb +172 -69
- data/lib/sakai-cle-test-api/drop_box.rb +0 -21
- data/lib/sakai-cle-test-api/email_archive.rb +1 -15
- data/lib/sakai-cle-test-api/forums.rb +8 -282
- data/lib/sakai-cle-test-api/gradebook.rb +1 -19
- data/lib/sakai-cle-test-api/gradebook2.rb +1 -15
- data/lib/sakai-cle-test-api/messages.rb +15 -551
- data/lib/sakai-cle-test-api/news.rb +1 -3
- data/lib/sakai-cle-test-api/polls.rb +3 -65
- data/lib/sakai-cle-test-api/profile.rb +2 -36
- data/lib/sakai-cle-test-api/profile2.rb +6 -315
- data/lib/sakai-cle-test-api/sections.rb +8 -198
- data/lib/sakai-cle-test-api/site_page_elements.rb +441 -4
- data/lib/sakai-cle-test-api/syllabus.rb +7 -149
- data/lib/sakai-cle-test-api/tools_menu.rb +20 -3
- data/lib/sakai-cle-test-api/utilities.rb +0 -260
- data/sakai-cle-test-api.gemspec +3 -2
- metadata +19 -21
- data/lib/sakai-cle-test-api/add_files.rb +0 -198
- data/lib/sakai-cle-test-api/chat_room.rb +0 -0
- data/lib/sakai-cle-test-api/core-ext.rb +0 -90
- data/lib/sakai-cle-test-api/data_objects/announcement.rb +0 -38
- data/lib/sakai-cle-test-api/data_objects/assessment.rb +0 -32
- data/lib/sakai-cle-test-api/data_objects/assignment.rb +0 -62
- data/lib/sakai-cle-test-api/data_objects/event.rb +0 -86
- data/lib/sakai-cle-test-api/data_objects/lesson.rb +0 -137
- data/lib/sakai-cle-test-api/data_objects/resource.rb +0 -174
- data/lib/sakai-cle-test-api/data_objects/site.rb +0 -213
- data/lib/sakai-cle-test-api/data_objects/syllabus.rb +0 -7
- data/lib/sakai-cle-test-api/data_objects/topic.rb +0 -0
- data/lib/sakai-cle-test-api/data_objects/web_content_tool.rb +0 -52
- data/lib/sakai-cle-test-api/data_objects/wiki.rb +0 -7
- data/lib/sakai-cle-test-api/gem_ext.rb +0 -45
- data/lib/sakai-cle-test-api/lessons.rb +0 -440
- data/lib/sakai-cle-test-api/resources.rb +0 -138
- data/lib/sakai-cle-test-api/rich_text.rb +0 -13
@@ -1,57 +1,5 @@
|
|
1
|
-
|
2
|
-
include PageObject
|
3
|
-
|
4
|
-
def add_blog_entry
|
5
|
-
frm.link(:text=>"Add blog entry").click
|
6
|
-
AddBlogEntry.new @browser
|
7
|
-
end
|
8
|
-
|
9
|
-
end
|
10
|
-
|
1
|
+
#
|
11
2
|
class Blogs
|
12
3
|
include ToolsMenu
|
13
|
-
include
|
14
|
-
# Returns an array containing the list of Bloggers
|
15
|
-
# in the "All the blogs" table.
|
16
|
-
def blogger_list
|
17
|
-
bloggers = []
|
18
|
-
frm.table(:class=>"listHier lines").rows.each do |row|
|
19
|
-
bloggers << row[1].text
|
20
|
-
end
|
21
|
-
bloggers.delete_at(0)
|
22
|
-
return bloggers
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class AddBlogEntry
|
27
|
-
include ToolsMenu
|
28
|
-
include BlogsMenuButtons
|
29
|
-
include PageObject
|
30
|
-
def blog_text=(text)
|
31
|
-
frm.frame(:id, "blog-text-input:1:input___Frame").td(:id, "xEditingArea").frame(:index=>0).wait_until_present
|
32
|
-
frm.frame(:id, "blog-text-input:1:input___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
33
|
-
end
|
34
|
-
|
35
|
-
def publish_entry
|
36
|
-
frm.button(:value=>"Publish entry").click
|
37
|
-
BlogsList.new @browser
|
38
|
-
end
|
39
|
-
|
40
|
-
def save_draft
|
41
|
-
frm.button(:value=>"Save Draft").click
|
42
|
-
BlogsList.new @browser
|
43
|
-
end
|
44
|
-
|
45
|
-
in_frame(:class=>"PortletMainIframe") do |frame|
|
46
|
-
text_field(:title, :name=>"title-input", :frame=>frame)
|
47
|
-
radio_button(:only_site_admins, :id=>"instructors-only-radio", :frame=>frame)
|
48
|
-
radio_button(:all_members, :id=>"all-members-radio", :frame=>frame)
|
49
|
-
radio_button(:publicly_viewable, :id=>"public-viewable-radio", :frame=>frame)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
class BlogsList
|
54
|
-
include ToolsMenu
|
55
|
-
|
56
|
-
include BlogsMenuButtons
|
4
|
+
include BlogsMethods
|
57
5
|
end
|
@@ -1,26 +1,3 @@
|
|
1
|
-
module CalendarTools
|
2
|
-
|
3
|
-
#
|
4
|
-
def add_event
|
5
|
-
frm.link(:text=>"Add").click
|
6
|
-
frm.frame(:id, "description___Frame").td(:id, "xEditingArea").frame(:index=>0).wait_until_present
|
7
|
-
AddEditEvent.new(@browser)
|
8
|
-
end
|
9
|
-
|
10
|
-
#
|
11
|
-
def fields
|
12
|
-
frm.link(:text=>"Fields").click
|
13
|
-
AddEditFields.new(@browser)
|
14
|
-
end
|
15
|
-
|
16
|
-
#
|
17
|
-
def import
|
18
|
-
frm.link(:text=>"Import").click
|
19
|
-
ImportStepOne.new(@browser)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
1
|
# Top page of the Calendar
|
25
2
|
# For now it includes all views, though that probably
|
26
3
|
# means it will have to be re-instantiated every time
|
@@ -28,439 +5,47 @@ end
|
|
28
5
|
class Calendar
|
29
6
|
include ToolsMenu
|
30
7
|
include CalendarTools
|
31
|
-
|
32
|
-
# then reinstantiates the Class.
|
33
|
-
def select_view(item)
|
34
|
-
frm.select(:id=>"view").select(item)
|
35
|
-
Calendar.new(@browser)
|
36
|
-
end
|
37
|
-
|
38
|
-
# Selects the specified item in the View select list.
|
39
|
-
# This is the same method as the select_view method, except
|
40
|
-
# that it does not reinstantiate the class. Use this if you're
|
41
|
-
# not concerned about throwing obsolete element errors when
|
42
|
-
# the page updates.
|
43
|
-
def view=(item)
|
44
|
-
frm.select(:id=>"view").select(item)
|
45
|
-
end
|
46
|
-
|
47
|
-
# Selects the specified item in the Show select list.
|
48
|
-
def show=(item)
|
49
|
-
frm.select(:id=>"timeFilterOption").select(item)
|
50
|
-
end
|
51
|
-
|
52
|
-
# Returns the text of the Calendar's header.
|
53
|
-
def header
|
54
|
-
frm.div(:class=>"portletBody").h3.text
|
55
|
-
end
|
56
|
-
|
57
|
-
# This is the alert box object. If you want to
|
58
|
-
# get the text contents of the alert box, use
|
59
|
-
# alert_box.text. That will get you a string object
|
60
|
-
# that is the text contents.
|
61
|
-
def alert_box
|
62
|
-
frm.div(:class=>"alertMessage")
|
63
|
-
end
|
64
|
-
|
65
|
-
# Clicks the link to the specified event, then
|
66
|
-
# instantiates the EventDetail class.
|
67
|
-
def open_event(title)
|
68
|
-
truncated = title[0..5]
|
69
|
-
frm.link(:text=>/#{Regexp.escape(truncated)}/).click
|
70
|
-
EventDetail.new(@browser)
|
71
|
-
end
|
72
|
-
|
73
|
-
# Returns the href value of the target link
|
74
|
-
# use for validation when you are testing whether the link
|
75
|
-
# will appear again on another screen, since often times
|
76
|
-
# validation by title text alone will not work.
|
77
|
-
def event_href(title)
|
78
|
-
truncated = title[0..5]
|
79
|
-
return frm.link(:text=>/#{Regexp.escape(truncated)}/).href
|
80
|
-
end
|
81
|
-
|
82
|
-
def show_events=(item)
|
83
|
-
frm.select(:id=>"timeFilterOption").select(item)
|
84
|
-
end
|
85
|
-
|
86
|
-
# Selects the specified value in the start month select list.
|
87
|
-
def start_month=(item)
|
88
|
-
frm.select(:id=>"customStartMonth").select(item)
|
89
|
-
end
|
90
|
-
|
91
|
-
# Selects the specified value in the start day select list.
|
92
|
-
def start_day=(item)
|
93
|
-
frm.select(:id=>"customStartDay").select(item)
|
94
|
-
end
|
95
|
-
|
96
|
-
# Selects the specified value in the start year select list.
|
97
|
-
def start_year=(item)
|
98
|
-
frm.select(:id=>"customStartYear").select(item)
|
99
|
-
end
|
100
|
-
|
101
|
-
# Selects the specified value in the end month select list.
|
102
|
-
def end_month=(item)
|
103
|
-
frm.select(:id=>"customEndMonth").select(item)
|
104
|
-
end
|
105
|
-
|
106
|
-
# Selects the specified value in the End Day select list.
|
107
|
-
def end_day=(item)
|
108
|
-
frm.select(:id=>"customEndDay").select(item)
|
109
|
-
end
|
110
|
-
|
111
|
-
# Selects the specified value in the End Year select list.
|
112
|
-
def end_year=(item)
|
113
|
-
frm.select(:id=>"customEndYear").select(item)
|
114
|
-
end
|
115
|
-
|
116
|
-
# Clicks the Filter Events button, then re-instantiates
|
117
|
-
# the Calendar class to avoid the possibility of an
|
118
|
-
# ObsoleteElement error.
|
119
|
-
def filter_events
|
120
|
-
frm.button(:name=>"eventSubmit_doCustomdate").click
|
121
|
-
Calendar.new(@browser)
|
122
|
-
end
|
123
|
-
|
124
|
-
# Clicks the Go to Today button, then reinstantiates
|
125
|
-
# the Calendar class.
|
126
|
-
def go_to_today
|
127
|
-
frm.button(:value=>"Go to Today").click
|
128
|
-
Calendar.new(@browser)
|
129
|
-
end
|
130
|
-
|
131
|
-
# Returns an array of the titles of the displayed events.
|
132
|
-
def event_list
|
133
|
-
events_list
|
134
|
-
end
|
135
|
-
|
136
|
-
# Returns an array for the listed events.
|
137
|
-
# This array contains more than simply strings of the event titles, because
|
138
|
-
# often the titles are truncated to fit on the screen. In addition, getting the "title"
|
139
|
-
# tag of the link is often problematic because titles can contain double-quotes, which
|
140
|
-
# will mess up the HTML of the anchor tag (there is probably an XSS vulnerability to
|
141
|
-
# exploit, there. This should be extensively tested.).
|
142
|
-
#
|
143
|
-
# Because of these issues, the array contains the title tag, the anchor text, and
|
144
|
-
# the entire href string for every event listed on the page. Having all three items
|
145
|
-
# available should ensure that verification steps don't give false results--especially
|
146
|
-
# when you are doing a negative test (checking that an event is NOT present).
|
147
|
-
def events_list
|
148
|
-
list = []
|
149
|
-
if frm.table(:class=>"calendar").exist?
|
150
|
-
events_table = frm.table(:class=>"calendar")
|
151
|
-
else
|
152
|
-
events_table = frm.table(:class=>"listHier lines nolines")
|
153
|
-
end
|
154
|
-
events_table.links.each do |link|
|
155
|
-
list << link.title
|
156
|
-
list << link.text
|
157
|
-
list << link.href
|
158
|
-
list << link.html[/(?<="location=").+doDescription/]
|
159
|
-
end
|
160
|
-
list.compact!
|
161
|
-
list.uniq!
|
162
|
-
return list
|
163
|
-
end
|
164
|
-
|
165
|
-
# Clicks the "Previous X" button, where X might be Day, Week, or Month,
|
166
|
-
# then reinstantiates the Calendar class to ensure against any obsolete element
|
167
|
-
# errors.
|
168
|
-
def previous
|
169
|
-
frm.button(:name=>"eventSubmit_doPrev").click
|
170
|
-
Calendar.new(@browser)
|
171
|
-
end
|
172
|
-
|
173
|
-
# Clicks the "Next X" button, where X might be Day, Week, or Month,
|
174
|
-
# then reinstantiates the Calendar class to ensure against any obsolete element
|
175
|
-
# errors.
|
176
|
-
def next
|
177
|
-
frm.button(:name=>"eventSubmit_doNext").click
|
178
|
-
Calendar.new(@browser)
|
179
|
-
end
|
180
|
-
|
181
|
-
# Clicks the "Today" button and reinstantiates the class.
|
182
|
-
def today
|
183
|
-
frm.button(:value=>"Today").click
|
184
|
-
Calendar.new(@browser)
|
185
|
-
end
|
186
|
-
|
187
|
-
def earlier
|
188
|
-
frm().link(:text=>"Earlier").click
|
189
|
-
Calendar.new(@browser)
|
190
|
-
end
|
191
|
-
|
192
|
-
def later
|
193
|
-
frm().link(:text=>"Later").click
|
194
|
-
Calendar.new(@browser)
|
195
|
-
end
|
196
|
-
|
197
|
-
# Clicks the "Set as Default View" button
|
198
|
-
def set_as_default_view
|
199
|
-
frm.link(:text=>"Set as Default View").click
|
200
|
-
end
|
8
|
+
include CalendarMethods
|
201
9
|
end
|
202
10
|
|
203
11
|
# The page that appears when you click on an event in the Calendar
|
204
12
|
class EventDetail
|
205
13
|
include ToolsMenu
|
206
14
|
include CalendarTools
|
207
|
-
|
208
|
-
# the Calendar class.
|
209
|
-
def go_to_today
|
210
|
-
frm.button(:value=>"Go to Today").click
|
211
|
-
Calendar.new(@browser)
|
212
|
-
end
|
213
|
-
|
214
|
-
def back_to_calendar
|
215
|
-
frm.button(:value=>"Back to Calendar").click
|
216
|
-
Calendar.new(@browser)
|
217
|
-
end
|
218
|
-
|
219
|
-
def last_event
|
220
|
-
frm().button(:value=>"< Last Event").click
|
221
|
-
EventDetail.new(@browser)
|
222
|
-
end
|
223
|
-
|
224
|
-
def next_event
|
225
|
-
frm().button(:value=>"Next Event >").click
|
226
|
-
EventDetail.new(@browser)
|
227
|
-
end
|
228
|
-
|
229
|
-
def event_title
|
230
|
-
frm.div(:class=>"portletBody").h3.text
|
231
|
-
end
|
232
|
-
|
233
|
-
def edit
|
234
|
-
frm.button(:value=>"Edit").click
|
235
|
-
AddEditEvent.new(@browser)
|
236
|
-
end
|
237
|
-
|
238
|
-
def remove_event
|
239
|
-
frm.button(:value=>"Remove event").click
|
240
|
-
DeleteConfirm.new(@browser)
|
241
|
-
end
|
242
|
-
|
243
|
-
# Returns a hash object containing the contents of the event details
|
244
|
-
# table on the page, with each of the header column items as a Key
|
245
|
-
# and the associated data column as the corresponding Value.
|
246
|
-
def details
|
247
|
-
details = {}
|
248
|
-
frm.table(:class=>"itemSummary").rows.each do |row|
|
249
|
-
details.store(row.th.text, row.td.text)
|
250
|
-
end
|
251
|
-
return details
|
252
|
-
end
|
253
|
-
|
15
|
+
include EventDetailMethods
|
254
16
|
end
|
255
17
|
|
256
18
|
#
|
257
19
|
class AddEditEvent
|
258
20
|
include ToolsMenu
|
259
|
-
include
|
260
|
-
#
|
261
|
-
def save_event
|
262
|
-
frm.button(:value=>"Save Event").click
|
263
|
-
Calendar.new(@browser)
|
264
|
-
end
|
265
|
-
#
|
266
|
-
def message=(text)
|
267
|
-
frm.frame(:id, "description___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
268
|
-
end
|
269
|
-
|
270
|
-
# The FCKEditor object. Use this method to set up a "wait_until_present"
|
271
|
-
# step, since sometimes it takes a long time for this object to load.
|
272
|
-
def message_editor
|
273
|
-
frm.frame(:id, "description___Frame").td(:id, "xEditingArea").frame(:index=>0)
|
274
|
-
end
|
275
|
-
|
276
|
-
def frequency
|
277
|
-
frm.button(:name=>"eventSubmit_doEditfrequency").click
|
278
|
-
EventFrequency.new(@browser)
|
279
|
-
end
|
280
|
-
|
281
|
-
def add_attachments
|
282
|
-
frm.button(:value=>"Add Attachments").click
|
283
|
-
EventAttach.new(@browser)
|
284
|
-
end
|
285
|
-
|
286
|
-
def add_remove_attachments
|
287
|
-
frm.button(:value=>"Add/remove attachments").click
|
288
|
-
EventAttach.new(@browser)
|
289
|
-
end
|
290
|
-
|
291
|
-
# Returns true if the page has a link with the
|
292
|
-
# specified file name. Use for test case asserts.
|
293
|
-
def attachment?(file_name)
|
294
|
-
frm.link(:text=>file_name).exist?
|
295
|
-
end
|
296
|
-
|
297
|
-
# Use this method to enter text into custom fields
|
298
|
-
# on the page. The "field" variable is the name of the
|
299
|
-
# field, while the "text" is the string you want to put into
|
300
|
-
# it.
|
301
|
-
def custom_field_text(field, text)
|
302
|
-
frm.text_field(:name=>field).set(text)
|
303
|
-
end
|
304
|
-
|
305
|
-
in_frame(:class=>"portletMainIframe") do |frame|
|
306
|
-
text_field(:title, :id=>"activitytitle", :frame=>frame)
|
307
|
-
select_list(:month, :id=>"month", :frame=>frame)
|
308
|
-
select_list(:day, :id=>"day", :frame=>frame)
|
309
|
-
select_list(:year, :id=>"yearSelect", :frame=>frame)
|
310
|
-
select_list(:start_hour, :id=>"startHour", :frame=>frame)
|
311
|
-
select_list(:start_minute, :id=>"startMinute", :frame=>frame)
|
312
|
-
select_list(:start_meridian, :id=>"startAmpm", :frame=>frame)
|
313
|
-
select_list(:hours, :id=>"duHour", :frame=>frame)
|
314
|
-
select_list(:minutes, :id=>"duMinute", :frame=>frame)
|
315
|
-
select_list(:end_hour, :id=>"endHour", :frame=>frame)
|
316
|
-
select_list(:end_minute, :id=>"endMinute", :frame=>frame)
|
317
|
-
select_list(:end_meridian, :id=>"endAmpm", :frame=>frame)
|
318
|
-
radio_button(:display_to_site, :id=>"site", :frame=>frame)
|
319
|
-
select_list(:event_type, :id=>"eventType", :frame=>frame)
|
320
|
-
text_area(:location, :name=>"location", :frame=>frame)
|
321
|
-
|
322
|
-
end
|
21
|
+
include AddEditEventMethods
|
323
22
|
end
|
324
23
|
|
325
24
|
# The page that appears when the Frequency button is clicked on the Add/Edit
|
326
25
|
# Event page.
|
327
26
|
class EventFrequency
|
328
27
|
include ToolsMenu
|
329
|
-
include
|
330
|
-
def save_frequency
|
331
|
-
frm.button(:value=>"Save Frequency").click
|
332
|
-
AddEditEvent.new(@browser)
|
333
|
-
end
|
334
|
-
|
335
|
-
def cancel
|
336
|
-
frm.button(:value=>"Cancel").click
|
337
|
-
AddEditEvent.new(@browser)
|
338
|
-
end
|
339
|
-
|
340
|
-
in_frame(:class=>"portletMainIframe") do |frame|
|
341
|
-
select_list(:event_frequency, :id=>"frequencySelect", :frame=>frame)
|
342
|
-
select_list(:interval, :id=>"interval", :frame=>frame)
|
343
|
-
select_list(:ends_after, :name=>"count", :frame=>frame)
|
344
|
-
select_list(:ends_month, :id=>"endMonth", :frame=>frame)
|
345
|
-
select_list(:ends_day, :id=>"endDay", :frame=>frame)
|
346
|
-
select_list(:ends_year, :id=>"endYear", :frame=>frame)
|
347
|
-
radio_button(:after, :id=>"count", :frame=>frame)
|
348
|
-
radio_button(:on, :id=>"till", :frame=>frame)
|
349
|
-
radio_button(:never, :id=>"never", :frame=>frame)
|
350
|
-
|
351
|
-
end
|
28
|
+
include EventFrequencyMethods
|
352
29
|
end
|
353
30
|
|
354
31
|
class AddEditFields
|
355
32
|
include ToolsMenu
|
356
|
-
include
|
357
|
-
# Clicks the Save Field Changes buton and instantiates
|
358
|
-
# The Calendar or EventDetail class--unless the Alert Message box appears,
|
359
|
-
# in which case it re-instantiates the class.
|
360
|
-
def save_field_changes
|
361
|
-
frm.button(:value=>"Save Field Changes").click
|
362
|
-
if frm.div(:class=>"alertMessage").exist?
|
363
|
-
AddEditFields.new(@browser)
|
364
|
-
elsif frm.button(:value=>"Back to Calendar").exist?
|
365
|
-
EventDetail.new(@browser)
|
366
|
-
else
|
367
|
-
Calendar.new(@browser)
|
368
|
-
end
|
369
|
-
end
|
370
|
-
|
371
|
-
# Returns a string of the contents of the Alert box.
|
372
|
-
def alert_box
|
373
|
-
frm.div(:class=>"alertMessage").text
|
374
|
-
end
|
375
|
-
|
376
|
-
def create_field
|
377
|
-
frm.button(:value=>"Create Field").click
|
378
|
-
AddEditFields.new(@browser)
|
379
|
-
end
|
380
|
-
|
381
|
-
# Checks the checkbox for the specified field
|
382
|
-
def check_remove(field_name)
|
383
|
-
frm.table(:class=>/listHier lines/).row(:text=>/#{Regexp.escape(field_name)}/).checkbox.set
|
384
|
-
end
|
385
|
-
|
386
|
-
in_frame(:class=>"portletMainIframe") do |frame|
|
387
|
-
text_field(:field_name, :id=>"textfield", :frame=>frame)
|
388
|
-
|
389
|
-
end
|
33
|
+
include AddEditFieldsMethods
|
390
34
|
end
|
391
35
|
|
392
36
|
class ImportStepOne
|
393
37
|
include ToolsMenu
|
394
|
-
include
|
395
|
-
def continue
|
396
|
-
frm.button(:value=>"Continue").click
|
397
|
-
ImportStepTwo.new(@browser)
|
398
|
-
end
|
399
|
-
|
400
|
-
in_frame(:class=>"portletMainIframe") do |frame|
|
401
|
-
radio_button(:microsoft_outlook, :id=>"importType_Outlook", :frame=>frame)
|
402
|
-
radio_button(:meeting_maker, :id=>"importType_MeetingMaker", :frame=>frame)
|
403
|
-
radio_button(:generic_calendar_import, :id=>"importType_Generic", :frame=>frame)
|
404
|
-
|
405
|
-
end
|
38
|
+
include ImportStepOneMethods
|
406
39
|
end
|
407
40
|
|
408
41
|
class ImportStepTwo
|
409
42
|
include ToolsMenu
|
410
|
-
|
411
|
-
frm.button(:value=>"Continue").click
|
412
|
-
ImportStepThree.new(@browser)
|
413
|
-
end
|
414
|
-
|
415
|
-
# Enters the specified filename in the file field.
|
416
|
-
#
|
417
|
-
# Note that the file path is an optional second parameter, if you do not want to
|
418
|
-
# include the full path in the filename.
|
419
|
-
def import_file(filename, filepath="")
|
420
|
-
frm.file_field(:name=>"importFile").set(filepath + filename)
|
421
|
-
end
|
43
|
+
include ImportStepTwoMethods
|
422
44
|
end
|
423
45
|
|
424
46
|
class ImportStepThree
|
425
47
|
include ToolsMenu
|
426
|
-
include
|
427
|
-
def import_events
|
428
|
-
frm.button(:value=>"Import Events").click
|
429
|
-
Calendar.new(@browser)
|
430
|
-
end
|
431
|
-
|
432
|
-
# Returns an array containing the list of Activity names on the page.
|
433
|
-
def events
|
434
|
-
list = []
|
435
|
-
frm.table(:class=>/listHier lines/).rows.each do |row|
|
436
|
-
if row.label(:for=>/eventSelected/).exist?
|
437
|
-
list << row.label.text
|
438
|
-
end
|
439
|
-
end
|
440
|
-
names = []
|
441
|
-
list.uniq!
|
442
|
-
list.each do | item |
|
443
|
-
name = item[/(?<=\s).+(?=\s\s\()/]
|
444
|
-
names << name
|
445
|
-
end
|
446
|
-
return names
|
447
|
-
end
|
448
|
-
|
449
|
-
# Returns the date of the specified event
|
450
|
-
def event_date(event_name)
|
451
|
-
frm.table(:class=>/listHier lines/).row(:text=>/#{Regexp.escape(event_name)}/)[0].text
|
452
|
-
end
|
453
|
-
|
454
|
-
# Unchecks the checkbox for the specified event
|
455
|
-
def uncheck_event(event_name)
|
456
|
-
frm.table(:class=>/listHier lines/).row(:text=>/#{Regexp.escape(event_name)}/)
|
457
|
-
end
|
458
|
-
|
459
|
-
in_frame(:class=>"portletMainIframe") do |frame|
|
460
|
-
radio_button(:import_events_for_site, :id=>"site", :frame=>frame)
|
461
|
-
radio_button(:import_events_for_selected_groups, :id=>"groups", :frame=>frame)
|
462
|
-
|
463
|
-
end
|
48
|
+
include ImportStepThreeMethods
|
464
49
|
end
|
465
50
|
|
466
51
|
# TODO: Rethink this!!!
|