sakai-cle-test-api 0.0.7 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. data/lib/sakai-cle-test-api.rb +7 -2
  2. data/lib/sakai-cle-test-api/add_files.rb +198 -0
  3. data/lib/sakai-cle-test-api/admin_page_elements.rb +7 -3
  4. data/lib/sakai-cle-test-api/announcements.rb +274 -7
  5. data/lib/sakai-cle-test-api/assessments.rb +930 -27
  6. data/lib/sakai-cle-test-api/assignments.rb +769 -13
  7. data/lib/sakai-cle-test-api/basic_lti.rb +5 -1
  8. data/lib/sakai-cle-test-api/blogs.rb +54 -2
  9. data/lib/sakai-cle-test-api/calendar.rb +423 -8
  10. data/lib/sakai-cle-test-api/chat_room.rb +0 -0
  11. data/lib/sakai-cle-test-api/common_page_elements.rb +69 -172
  12. data/lib/sakai-cle-test-api/core-ext.rb +90 -0
  13. data/lib/sakai-cle-test-api/data_objects/announcement.rb +38 -0
  14. data/lib/sakai-cle-test-api/data_objects/assessment.rb +32 -0
  15. data/lib/sakai-cle-test-api/data_objects/assignment.rb +62 -0
  16. data/lib/sakai-cle-test-api/data_objects/event.rb +86 -0
  17. data/lib/sakai-cle-test-api/data_objects/lesson.rb +137 -0
  18. data/lib/sakai-cle-test-api/data_objects/resource.rb +174 -0
  19. data/lib/sakai-cle-test-api/data_objects/site.rb +213 -0
  20. data/lib/sakai-cle-test-api/data_objects/syllabus.rb +7 -0
  21. data/lib/sakai-cle-test-api/data_objects/topic.rb +0 -0
  22. data/lib/sakai-cle-test-api/data_objects/web_content_tool.rb +52 -0
  23. data/lib/sakai-cle-test-api/data_objects/wiki.rb +7 -0
  24. data/lib/sakai-cle-test-api/drop_box.rb +21 -0
  25. data/lib/sakai-cle-test-api/email_archive.rb +15 -1
  26. data/lib/sakai-cle-test-api/forums.rb +282 -8
  27. data/lib/sakai-cle-test-api/gem_ext.rb +45 -0
  28. data/lib/sakai-cle-test-api/gradebook.rb +19 -1
  29. data/lib/sakai-cle-test-api/gradebook2.rb +15 -1
  30. data/lib/sakai-cle-test-api/lessons.rb +440 -0
  31. data/lib/sakai-cle-test-api/messages.rb +551 -15
  32. data/lib/sakai-cle-test-api/news.rb +3 -1
  33. data/lib/sakai-cle-test-api/polls.rb +65 -3
  34. data/lib/sakai-cle-test-api/profile.rb +36 -2
  35. data/lib/sakai-cle-test-api/profile2.rb +315 -6
  36. data/lib/sakai-cle-test-api/resources.rb +138 -0
  37. data/lib/sakai-cle-test-api/rich_text.rb +13 -0
  38. data/lib/sakai-cle-test-api/sections.rb +198 -8
  39. data/lib/sakai-cle-test-api/site_page_elements.rb +4 -441
  40. data/lib/sakai-cle-test-api/syllabus.rb +149 -7
  41. data/lib/sakai-cle-test-api/tools_menu.rb +3 -20
  42. data/lib/sakai-cle-test-api/utilities.rb +260 -0
  43. data/sakai-cle-test-api.gemspec +2 -3
  44. metadata +21 -19
@@ -1,9 +1,15 @@
1
1
  require 'cgi'
2
- require 'kuali-sakai-common-lib'
2
+ require 'watir-webdriver'
3
+ require 'page-object'
4
+ require 'sakai-cle-test-api/gem_ext'
5
+ require 'sakai-cle-test-api/core-ext'
6
+ require 'sakai-cle-test-api/utilities'
7
+ require 'sakai-cle-test-api/rich_text'
3
8
  require 'sakai-cle-test-api/utilities'
4
9
  require 'sakai-cle-test-api/tools_menu'
5
10
  require 'sakai-cle-test-api/admin_page_elements'
6
11
  Dir["#{File.dirname(__FILE__)}/sakai-cle-test-api/*.rb"].each {|f| require f }
12
+ Dir["#{File.dirname(__FILE__)}/sakai-cle-test-api/data_objects/*.rb"].each {|f| require f }
7
13
 
8
14
  # Initialize this class at the start of your test cases to
9
15
  # open the specified test browser at the specified Sakai welcome page URL.
@@ -21,7 +27,6 @@ class SakaiCLE
21
27
  @browser = Watir::Browser.new web_browser
22
28
  @browser.window.resize_to(1400,900)
23
29
  @browser.goto url
24
- $frame_index = 0 # TODO - Need to remove this and all dependent code.
25
30
  end
26
31
 
27
32
  # Returns the class containing the welcome page's page elements.
@@ -0,0 +1,198 @@
1
+ # This class consolidates the code that can be shared among all the
2
+ # File Upload and Attachment pages.
3
+ #
4
+ # Not every method in this class will be appropriate for every attachment page.
5
+ class AddFiles
6
+
7
+ include PageObject
8
+
9
+ thing(:files_table) { |b| b.frm.table(:class=>/listHier lines/) }
10
+
11
+ # Returns an array of the displayed folder names.
12
+ def folder_names
13
+ names = []
14
+ files_table.rows.each do |row|
15
+ next if row.td(:class=>"specialLink").exist? == false
16
+ next if row.td(:class=>"specialLink").link(:title=>"Folder").exist? == false
17
+ names << row.td(:class=>"specialLink").link(:title=>"Folder").text
18
+ end
19
+ names
20
+ end
21
+
22
+ # Returns an array of the file names currently listed
23
+ # on the page.
24
+ #
25
+ # It excludes folder names.
26
+ def file_names
27
+ names = []
28
+ files_table.rows.each do |row|
29
+ next if row.td(:class=>"specialLink").exist? == false
30
+ next if row.td(:class=>"specialLink").link(:title=>"Folder").exist?
31
+ names << row.td(:class=>"specialLink").link(:href=>/access.content/, :index=>1).text
32
+ end
33
+ names
34
+ end
35
+
36
+ # Clicks the Select button next to the specified file.
37
+ def select_file(filename)
38
+ files_table.row(:text, /#{Regexp.escape(filename)}/).link(:text=>"Select").click
39
+ end
40
+
41
+ # Clicks the Remove button.
42
+ action(:remove) { |b| b.frm.button(:value=>"Remove").click }
43
+
44
+ # Clicks the remove link for the specified item in the attachment list.
45
+ def remove_item(file_name)
46
+ files_table.row(:text=>/#{Regexp.escape(file_name)}/).link(:href=>/doRemoveitem/).click
47
+ end
48
+
49
+ # Clicks the Move button.
50
+ action(:move) { |b| b.frm.button(:value=>"Move").click }
51
+
52
+ # Clicks the Show Other Sites link.
53
+ action(:show_other_sites) { |b| b.frm.link(:text=>"Show other sites").click }
54
+
55
+ def href(item)
56
+ frm.link(:text=>item).href
57
+ end
58
+
59
+ # Clicks on the specified folder image, which
60
+ # will open the folder tree and remain on the page.
61
+ def open_folder(foldername)
62
+ files_table.row(:text=>/#{Regexp.escape(foldername)}/).link(:title=>"Open this folder").click
63
+ end
64
+
65
+ # Clicks on the specified folder name, which should open
66
+ # the folder contents on a refreshed page.
67
+ def go_to_folder(foldername)
68
+ frm.link(:text=>foldername).click
69
+ end
70
+
71
+ # Sets the URL field to the specified value.
72
+ def url=(url_string)
73
+ frm.text_field(:id=>"url").set(url_string)
74
+ end
75
+
76
+ # Clicks the Add button next to the URL field.
77
+ def add
78
+ frm.button(:value=>"Add").click
79
+ end
80
+
81
+ # Gets the value of the access level cell for the specified
82
+ # file.
83
+ def access_level(filename)
84
+ files_table.row(:text=>/#{Regexp.escape(filename)}/)[6].text
85
+ end
86
+
87
+ def edit_details(name)
88
+ files_table.row(:text=>/#{Regexp.escape(name)}/).li(:text=>/Action/, :class=>"menuOpen").fire_event("onclick")
89
+ files_table.row(:text=>/#{Regexp.escape(name)}/).link(:text=>"Edit Details").click
90
+ end
91
+
92
+ # Clicks the Create Folders menu item in the
93
+ # Add menu of the specified folder.
94
+ def create_subfolders_in(folder_name)
95
+ open_add_menu(folder_name)
96
+ files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Create Folders").click
97
+ end
98
+
99
+ def create_html_page_in(folder_name)
100
+ open_add_menu(folder_name)
101
+ files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Create HTML Page").click
102
+ end
103
+
104
+ # Enters the specified file into the file field name (assuming it's in the
105
+ # data/sakai-cle-test-api folder or a subfolder therein)
106
+ #
107
+ def upload_file(filename, filepath="")
108
+ frm.file_field(:id=>"upload").set(filepath + filename)
109
+ if frm.div(:class=>"alertMessage").exist?
110
+ sleep 2
111
+ upload_file(filename)
112
+ end
113
+ end
114
+
115
+ # Enters the specified file into the file field name (assuming it's in the
116
+ # data/sakai-cle-test-api folder or a subfolder therein)
117
+ #
118
+ # Use this method ONLY for instances where there's a file field on the page
119
+ # with an "upload" id.
120
+ def upload_local_file(filename, filepath="")
121
+ frm.file_field(:id=>"upload").set(filepath + filename)
122
+ if frm.div(:class=>"alertMessage").exist?
123
+ sleep 2
124
+ upload_local_file(filename)
125
+ end
126
+ end
127
+
128
+ # Clicks the Add Menu for the specified
129
+ # folder, then selects the Upload Files
130
+ # command in the menu that appears.
131
+ def upload_file_to_folder(folder_name)
132
+ upload_files_to_folder(folder_name)
133
+ end
134
+
135
+ # Clicks the Add Menu for the specified
136
+ # folder, then selects the Upload Files
137
+ # command in the menu that appears.
138
+ def upload_files_to_folder(folder_name)
139
+ if frm.li(:text=>/A/, :class=>"menuOpen").exist?
140
+ files_table.row(:text=>/#{Regexp.escape(folder_name)}/).li(:text=>/A/, :class=>"menuOpen").fire_event("onclick")
141
+ else
142
+ files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Start Add Menu").fire_event("onfocus")
143
+ end
144
+ files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Upload Files").click
145
+ end
146
+
147
+ # Clicks the "Attach a copy" link for the specified
148
+ # file, then reinstantiates the Class.
149
+ # If an alert box appears, the method will call itself again.
150
+ # Note that this can lead to an infinite loop. Will need to fix later.
151
+ def attach_a_copy(file_name)
152
+ files_table.row(:text=>/#{Regexp.escape(file_name)}/).link(:href=>/doAttachitem/).click
153
+ if frm.div(:class=>"alertMessage").exist?
154
+ sleep 1
155
+ attach_a_copy(file_name) # TODO - This can loop infinitely
156
+ end
157
+ end
158
+
159
+ # Takes the specified array object containing pointers
160
+ # to local file resources, then uploads those files to
161
+ # the folder specified, checks if they all uploaded properly and
162
+ # if not, re-tries the ones that failed the first time.
163
+ #
164
+ # Finally, it re-instantiates the appropriate page class.
165
+ # Note that it expects all files to be located in the same folder (can be in subfolders of that folder).
166
+ def upload_multiple_files_to_folder(folder, file_array, file_path="")
167
+
168
+ upload = upload_files_to_folder folder
169
+
170
+ file_array.each do |file|
171
+ upload.file_to_upload(file, file_path)
172
+ upload.add_another_file
173
+ end
174
+
175
+ resources = upload.upload_files_now
176
+
177
+ file_array.each do |file|
178
+ file =~ /(?<=\/).+/
179
+ # puts $~.to_s # For debugging purposes
180
+ unless resources.file_names.include?($~.to_s)
181
+ upload_files = resources.upload_files_to_folder(folder)
182
+ upload_files.file_to_upload(file, file_path)
183
+ upload_files.upload_files_now
184
+ end
185
+ end
186
+ end
187
+
188
+ # Clicks the Continue button
189
+ def continue
190
+ frm.div(:class=>"highlightPanel").span(:id=>"submitnotifxxx").wait_while_present
191
+ frm.button(:value=>"Continue").click
192
+ end
193
+
194
+ def open_add_menu(folder_name)
195
+ files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Start Add Menu").fire_event("onfocus")
196
+ end
197
+
198
+ end
@@ -104,7 +104,7 @@ class Login
104
104
  frame.text_field(:id, "eid").set username
105
105
  frame.text_field(:id, "pw").set password
106
106
  frame.form(:method, "post").submit
107
- MyWorkspace.new(@browser)
107
+ return MyWorkspace.new(@browser)
108
108
  end
109
109
  alias log_in login
110
110
  alias sign_in login
@@ -744,7 +744,12 @@ class EditUser
744
744
 
745
745
  include PageObject
746
746
  include ToolsMenu
747
-
747
+
748
+ def update_details
749
+ frm.button(:name=>"eventSubmit_doSave").click
750
+ sleep 1
751
+ end
752
+
748
753
  in_frame(:class=>"portletMainIframe") do |frame|
749
754
  link(:remove_user, :text=>"Remove User", :frame=>frame)
750
755
  text_field(:first_name, :id=>"first-name", :frame=>frame)
@@ -752,7 +757,6 @@ class EditUser
752
757
  text_field(:email, :id=>"email", :frame=>frame)
753
758
  text_field(:create_new_password, :id=>"pw", :frame=>frame)
754
759
  text_field(:verify_new_password, :id=>"pw0", :frame=>frame)
755
- button(:update_details, :name=>"eventSubmit_doSave", :frame=>frame)
756
760
  button(:cancel_changes, :name=>"eventSubmit_doCancel", :frame=>frame)
757
761
  end
758
762
 
@@ -1,27 +1,294 @@
1
1
  # The Announcements list page for a Site.
2
2
  class Announcements
3
3
  include ToolsMenu
4
- include AnnouncementsMethods
4
+
5
+ # Clicks the add button, instantiates the AddEditAnnouncements class.
6
+ def add
7
+ frm.div(:class=>"portletBody").link(:title=>"Add").click
8
+ frm.frame(:id, "body___Frame").td(:id, "xEditingArea").frame(:index=>0).wait_until_present(60)
9
+ AddEditAnnouncements.new(@browser)
10
+ end
11
+
12
+ # Edits the specified announcement in the list.
13
+ # @param subject [String] the text of the announcement listing link.
14
+ def edit(subject)
15
+ frm.table(:class=>"listHier").row(:text=>/#{Regexp.escape(subject)}/).link(:text=>"Edit").click
16
+ AddEditAnnouncements.new(@browser)
17
+ end
18
+
19
+ # Returns an array of the subject strings of the announcements
20
+ # listed on the page.
21
+ def subjects
22
+ links = frm.table(:class=>"listHier").links.find_all { |link| link.title=~/View announcement/ }
23
+ subjects = []
24
+ links.each { |link| subjects << link.text }
25
+ return subjects
26
+ end
27
+
28
+ def href(subject)
29
+ frm.link(:text=>subject).href
30
+ end
31
+
32
+ # Returns true or false depending on whether the specified announcement has an attachment.
33
+ # @param subject [String] the text of the announcement listing link.
34
+ def has_attachment?(subject)
35
+ if frm.table(:class=>"listHier").row(:text=>/#{Regexp.escape(subject)}/).exist?
36
+ return frm.table(:class=>"listHier").row(:text=>/#{Regexp.escape(subject)}/).image(:alt=>"attachment").exist?
37
+ else
38
+ puts "Can't find your target row. Your test is faulty."
39
+ return false
40
+ end
41
+ end
42
+
43
+ # Returns the text of the "For" column for
44
+ # the specified announcement.
45
+ # @param subject [String] the text of the announcement listing link.
46
+ def for_column(subject)
47
+ frm.table(:class=>"listHier").row(:text=>/#{Regexp.escape(subject)}/)[4].text
48
+ end
49
+
50
+ # Clicks the specified announcement link and instantiates the PreviewAnnouncements class.
51
+ # @param subject [String] the text of the announcement listing link.
52
+ def preview_announcement(subject)
53
+ frm.link(:text=>subject).click
54
+ PreviewAnnouncements.new(@browser)
55
+ end
56
+
57
+ # Selects the specified list item from the View selection list.
58
+ # @param list_item [String] the text of the option in the selection list.
59
+ def view=(list_item)
60
+ frm.select(:id=>"view").set(list_item)
61
+ end
62
+
63
+ # Clicks the Merge link and instantiates the AnnouncementsMerge class.
64
+ def merge
65
+ frm.link(:text=>"Merge").click
66
+ AnnouncementsMerge.new(@browser)
67
+ end
68
+
5
69
  end
6
70
 
7
71
  # Show Announcements from Another Site. On this page you select what announcements
8
72
  # you want to merge into the current Site.
9
73
  class AnnouncementsMerge
10
74
  include ToolsMenu
11
- include AnnouncementsMergeMethods
75
+
76
+ # Checks the checkbox for the specified site name
77
+ # @param site_name [String] the name of the relevant site displayed in the table
78
+ def check(site_name)
79
+ frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(site_name)}/).checkbox(:id=>/site/).set
80
+ end
81
+
82
+ # Clicks the Save button and returns the Announcements class.
83
+ def save
84
+ frm.button(:value=>"Save").click
85
+ Announcements.new(@browser)
86
+ end
87
+
12
88
  end
13
89
 
14
90
  # This Class does double-duty. It's for the Preview page when editing an
15
91
  # Announcement, plus for when you just click an Announcement to view it.
16
92
  class PreviewAnnouncements
17
93
  include ToolsMenu
18
- include PreviewAnnouncementsMethods
94
+
95
+ # Clicks the Return to list button and returns the Announcements class.
96
+ def return_to_list
97
+ frm.button(:value=>"Return to List").click
98
+ Announcements.new(@browser)
99
+ end
100
+
101
+ # Clicks the Save changes button and returns the Announcements class.
102
+ def save_changes
103
+ frm.button(:value=>"Save Changes").click
104
+ Announcements.new(@browser)
105
+ end
106
+
107
+ # Clicks the Edit button and returns the AddEditAnnouncements class.
108
+ def edit
109
+ frm.button(:value=>"Edit").click
110
+ AddEditAnnouncements.new(@browser)
111
+ end
112
+
19
113
  end
20
114
 
21
115
  # The page where an announcement is created or edited.
22
116
  class AddEditAnnouncements
23
117
  include ToolsMenu
24
- include AddEditAnnouncementsMethods
118
+
119
+ # Clicks the Add Announcement button and then determines whether to return
120
+ # AddEditAnnouncements or Announcements class.
121
+ def add_announcement
122
+ frm.button(:value=>"Add Announcement").click
123
+ if frm.div(:class=>"portletBody").h3.text=~/Add Announcement/
124
+ AddEditAnnouncements.new(@browser)
125
+ else
126
+ Announcements.new(@browser)
127
+ end
128
+ end
129
+
130
+ # Clicks the Save changes button and returns the Announcements class.
131
+ def save_changes
132
+ frm.button(:value=>"Save Changes").click
133
+ Announcements.new(@browser)
134
+ end
135
+
136
+ # Clicks the Preview button and returns the PreviewAnnouncements class.
137
+ def preview
138
+ frm.button(:value=>"Preview").click
139
+ PreviewAnnouncements.new(@browser)
140
+ end
141
+
142
+ # Sends the specified text block to the rich text editor
143
+ # @param text [String] the text that you want to add to the editor.
144
+ def body=(text)
145
+ frm.frame(:id, "body___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
146
+ end
147
+
148
+ # Clicks the Add attachments button and returns the Announcments Attach class.
149
+ def add_attachments
150
+ frm.button(:value=>"Add Attachments").click
151
+ AnnouncementsAttach.new(@browser)
152
+ end
153
+
154
+ # Clicks the checkbox for the specified group name
155
+ # when you've set the announcement access to display
156
+ # to groups.
157
+ # @param group_name [String] the name of the group in the table that you intend to select.
158
+ def check_group(group_name)
159
+ frm.table(:id=>"groupTable").row(:text=>/#{Regexp.escape(group_name)}/).checkbox(:name=>"selectedGroups").set
160
+ end
161
+
162
+ # Sets the Announcement Title field to the specified
163
+ # string value.
164
+ # @param string [String] the text you want to put in the title field.
165
+ def title=(string)
166
+ frm.text_field(:id=>"subject").set(string)
167
+ end
168
+
169
+ # Clicks the radio button for "Only members of this site can see this announcement"
170
+ def select_site_members
171
+ frm.radio(:id=>"site").set
172
+ end
173
+
174
+ # Clicks the radio button for "This announcement is publicly viewable"
175
+ def select_publicly_viewable
176
+ frm.radio(:id=>"pubview").set
177
+ end
178
+
179
+ # Clicks the radio button for "Displays this announcement to selected groups only."
180
+ def select_groups
181
+ frm.radio(:id=>"groups").set
182
+ end
183
+
184
+ # Clicks the radio button for "Show - (Post and display this announcement immediately)"
185
+ def select_show
186
+ frm.radio(:id=>"hidden_false").set
187
+ end
188
+
189
+ # Clicks the radio button for "Hide - (Draft mode - Do not display this announcement at this time)"
190
+ def select_hide
191
+ frm.radio(:id=>"hidden_true").set
192
+ end
193
+
194
+ # Clicks the radio button for "Specify Dates - (Choose when this announcement will be displayed)"
195
+ def select_specify_dates
196
+ frm.radio(:id=>"hidden_specify").set
197
+ end
198
+
199
+ # Checks the checkbox for "Beginning"
200
+ def check_beginning
201
+ frm.checkbox(:id=>"use_start_date").set
202
+ end
203
+
204
+ # Checks the checkbox for "Ending"
205
+ def check_ending
206
+ frm.checkbox(:id=>"use_end_date").set
207
+ end
208
+
209
+ # Checks the checkbox for selecting all Groups
210
+ def check_all
211
+ frm.checkbox(:id=>"selectall").set
212
+ end
213
+
214
+ # Sets the Beginning Month selection to the
215
+ # specified string.
216
+ def beginning_month=(string)
217
+ frm.select(:id=>"release_month").select(string)
218
+ end
219
+
220
+ # Sets the Beginning Day selection to the
221
+ # specified string.
222
+ def beginning_day=(string)
223
+ frm.select(:id=>"release_day").select(string)
224
+ end
225
+
226
+ # Sets the Beginning Year selection to the
227
+ # specified string.
228
+ def beginning_year=(string)
229
+ frm.select(:id=>"release_year").select(string)
230
+ end
231
+
232
+ # Sets the Beginning Hour selection to the
233
+ # specified string
234
+ def beginning_hour=(string)
235
+ frm.select(:id=>"release_hour").select(string)
236
+ end
237
+
238
+ # Sets the Beginning Minute selection to the
239
+ # specified string
240
+ def beginning_minute=(string)
241
+ frm.select(:id=>"release_minute").select(string)
242
+ end
243
+
244
+ # Sets the AM or PM value to the specified string.
245
+ # Obviously the string should be either "AM" or "PM".
246
+ def beginning_meridian=(string)
247
+ frm.select(:id=>"release_ampm").select(string)
248
+ end
249
+
250
+ # Sets the Ending Month selection to the specified
251
+ # string.
252
+ def ending_month=(string)
253
+ frm.select(:id=>"retract_month").select(string)
254
+ end
255
+
256
+ # Sets the Ending Day selection to the specified
257
+ # string.
258
+ def ending_day=(string)
259
+ frm.select(:id=>"retract_day").select(string)
260
+ end
261
+
262
+ # Sets the Ending Year selection to the specified
263
+ # string.
264
+ def ending_year=(string)
265
+ frm.select(:id=>"retract_year").select(string)
266
+ end
267
+
268
+ # Sets the Ending Hour selection to the specified
269
+ # string.
270
+ def ending_hour=(string)
271
+ frm.select(:id=>"retract_hour").select(string)
272
+ end
273
+
274
+ # Sets the Ending Minute selection to the specified
275
+ # string.
276
+ def ending_minute=(string)
277
+ frm.select(:id=>"retract_minute").select(string)
278
+ end
279
+
280
+ # Sets the Ending AM/PM selection to the specified
281
+ # value.
282
+ def ending_meridian=(string)
283
+ frm.select(:id=>"retract_ampm").select(string)
284
+ end
285
+
286
+ # Gets the text of the alert message when it appears on
287
+ # the page
288
+ def alert_message
289
+ frm.div(:class=>"alertMessage").text
290
+ end
291
+
25
292
  end
26
293
 
27
294
  # The page for attaching files and links to Announcements.
@@ -43,17 +310,17 @@ end
43
310
  # Page for merging announcements from other sites
44
311
  class AnnouncementsMerge
45
312
  include ToolsMenu
46
- include AnnouncementsMergeMethods
313
+
47
314
  end
48
315
 
49
316
  # Page for setting up options for announcements
50
317
  class AnnouncementsOptions
51
318
  include ToolsMenu
52
- include AnnouncementsOptionsMethods
319
+
53
320
  end
54
321
 
55
322
  # Page containing permissions options for announcements
56
323
  class AnnouncementsPermissions
57
324
  include ToolsMenu
58
- include AnnouncementsPermissionsMethods
325
+
59
326
  end