sambal-cle 0.1.5 → 0.1.6

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 (58) hide show
  1. data/Gemfile +3 -5
  2. data/Gemfile.lock +6 -9
  3. data/lib/sambal-cle/base_page.rb +21 -3
  4. data/lib/sambal-cle/data_objects/announcement.rb +1 -1
  5. data/lib/sambal-cle/data_objects/assignment.rb +3 -2
  6. data/lib/sambal-cle/data_objects/course.rb +5 -4
  7. data/lib/sambal-cle/data_objects/event.rb +7 -7
  8. data/lib/sambal-cle/data_objects/forum.rb +3 -2
  9. data/lib/sambal-cle/data_objects/lesson.rb +3 -1
  10. data/lib/sambal-cle/data_objects/resource.rb +3 -1
  11. data/lib/sambal-cle/page_objects/account.rb +15 -66
  12. data/lib/sambal-cle/page_objects/aliases.rb +3 -2
  13. data/lib/sambal-cle/page_objects/announcements.rb +16 -31
  14. data/lib/sambal-cle/page_objects/assessments.rb +22 -55
  15. data/lib/sambal-cle/page_objects/assignments.rb +1 -1
  16. data/lib/sambal-cle/page_objects/blogger.rb +21 -77
  17. data/lib/sambal-cle/page_objects/blogs.rb +3 -5
  18. data/lib/sambal-cle/page_objects/calendar.rb +22 -40
  19. data/lib/sambal-cle/page_objects/chat_room.rb +2 -2
  20. data/lib/sambal-cle/page_objects/email_archive.rb +1 -2
  21. data/lib/sambal-cle/page_objects/evaluations.rb +78 -50
  22. data/lib/sambal-cle/page_objects/feedback.rb +1 -5
  23. data/lib/sambal-cle/page_objects/forms.rb +14 -55
  24. data/lib/sambal-cle/page_objects/forums.rb +11 -24
  25. data/lib/sambal-cle/page_objects/glossary.rb +6 -12
  26. data/lib/sambal-cle/page_objects/home.rb +7 -18
  27. data/lib/sambal-cle/page_objects/jforums.rb +60 -197
  28. data/lib/sambal-cle/page_objects/job_scheduler.rb +16 -49
  29. data/lib/sambal-cle/page_objects/lessons.rb +11 -34
  30. data/lib/sambal-cle/page_objects/matrix.rb +12 -14
  31. data/lib/sambal-cle/page_objects/messages.rb +71 -466
  32. data/lib/sambal-cle/page_objects/my_workspace.rb +3 -3
  33. data/lib/sambal-cle/page_objects/podcasts.rb +1 -6
  34. data/lib/sambal-cle/page_objects/polls.rb +5 -5
  35. data/lib/sambal-cle/page_objects/portfolio_templates.rb +16 -66
  36. data/lib/sambal-cle/page_objects/portfolios.rb +17 -67
  37. data/lib/sambal-cle/page_objects/profile.rb +5 -16
  38. data/lib/sambal-cle/page_objects/profile2.rb +51 -119
  39. data/lib/sambal-cle/page_objects/public_search.rb +6 -27
  40. data/lib/sambal-cle/page_objects/realms.rb +2 -2
  41. data/lib/sambal-cle/page_objects/resources.rb +89 -116
  42. data/lib/sambal-cle/page_objects/resources_roster.rb +1 -0
  43. data/lib/sambal-cle/page_objects/rosters.rb +3 -13
  44. data/lib/sambal-cle/page_objects/rwiki.rb +2 -6
  45. data/lib/sambal-cle/page_objects/search.rb +10 -10
  46. data/lib/sambal-cle/page_objects/sections.rb +40 -81
  47. data/lib/sambal-cle/page_objects/site_setup.rb +46 -74
  48. data/lib/sambal-cle/page_objects/sites.rb +24 -110
  49. data/lib/sambal-cle/page_objects/styles.rb +6 -51
  50. data/lib/sambal-cle/page_objects/syllabus.rb +12 -26
  51. data/lib/sambal-cle/page_objects/user_membership.rb +3 -15
  52. data/lib/sambal-cle/page_objects/users.rb +9 -25
  53. data/sambal-cle.gemspec +1 -1
  54. data/test/add_assignment_to_calendar_spec.rb +55 -1
  55. data/test/config.yml +1 -1
  56. data/test/duplicate_site_spec.rb +11 -10
  57. data/test/import_site_content_spec.rb +6 -5
  58. metadata +2 -2
@@ -1,22 +1,11 @@
1
-
2
1
  # The page where you search for public courses and projects.
3
2
  class SearchPublic < BasePage
4
3
 
5
4
  frame_element
6
5
 
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
6
+ action(:home) { |b| b.frame(:index=>0).link(:text=>"Home").click }
7
+ element(:search_for) { |b| b.frame(:index=>0).text_field(:id=>"searchbox") }
8
+ action(:search_for_sites) { |b| b.frame(:index=>0).button(:value=>"Search for Sites").click }
20
9
 
21
10
  end
22
11
 
@@ -25,15 +14,8 @@ class SearchPublicResults < BasePage
25
14
 
26
15
  frame_element
27
16
 
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
17
+ action(:click_site) { |site_name, b| b.frame(:index=>0).link(:text=>site_name).click }
18
+ action(:home) { |b| b.frame(:id=>"ifrm").link(:text=>"Home").click }
37
19
 
38
20
  end
39
21
 
@@ -43,10 +25,7 @@ class SiteSummaryPage < BasePage
43
25
 
44
26
  frame_element
45
27
 
46
- def return_to_list
47
- @browser.frame(:index=>0).button(:value=>"Return to List").click
48
- SearchPublicResults.new(@browser)
49
- end
28
+ action(:return_to_list) { |b| b.frame(:index=>0).button(:value=>"Return to List").click }
50
29
 
51
30
  def syllabus_attachments
52
31
  links = []
@@ -7,8 +7,8 @@ class Realms < BasePage
7
7
 
8
8
  frame_element
9
9
 
10
- action(:new_realm) { |b| b.frm.link(:text=>"New Realm").click }
11
- action(:search) { |b| b.frm.link(:text=>"Search").click }
10
+ link("New Realm")
11
+ link("Search")
12
12
  element(:select_page_size) { |b| b.frm.select_list(:name=>"selectPageSize") }
13
13
  action(:next) { |b| b.frm.button(:name=>"eventSubmit_doList_next").click }
14
14
  action(:last) { |b| b.frm.button(:name=>"eventSubmit_doList_last").click }
@@ -10,7 +10,61 @@ class ResourcesBase < BasePage
10
10
 
11
11
  frame_element
12
12
 
13
- element(:files_table) { |b| b.frm.table(:class=>/listHier lines/) }
13
+ class << self
14
+
15
+ def resources_elements
16
+ element(:files_table) { |b| b.frm.table(:class=>/listHier lines/) }
17
+
18
+ # Use this as a means of checking if the file is visible or not
19
+ action(:item) { |name, b| b.frm.link(:text=>name) }
20
+
21
+ # Clicks the Select button next to the specified file.
22
+ action(:select_file) { |filename, b| b.files_table.row(:text, /#{Regexp.escape(filename)}/).link(:text=>"Select").click }
23
+
24
+ # Clicks the Remove button.
25
+ action(:remove) { |b| b.frm.button(:value=>"Remove").click }
26
+
27
+ # Clicks the remove link for the specified item in the attachment list.
28
+ action(:remove_item) { |file_name, b| b.files_table.row(:text=>/#{Regexp.escape(file_name)}/).link(:href=>/doRemoveitem/).click }
29
+
30
+ # Clicks the Move button.
31
+ action(:move) { |b| b.frm.button(:value=>"Move").click }
32
+
33
+ # Clicks the Show Other Sites link.
34
+ action(:show_other_sites) { |b| b.frm.link(:text=>"Show other sites").click }
35
+
36
+ action(:href) { |item, b| b.frm.link(:text=>item).href }
37
+
38
+ # Clicks on the specified folder image, which
39
+ # will open the folder tree and remain on the page.
40
+ action(:open_folder) { |foldername, b| b.files_table.row(:text=>/#{Regexp.escape(foldername)}/).link(:title=>"Open this folder").click }
41
+
42
+ # Clicks on the specified folder name, which should open
43
+ # the folder contents on a refreshed page.
44
+ action(:go_to_folder) { |foldername, b| b.frm.link(:text=>foldername).click }
45
+
46
+ # Sets the URL field to the specified value.
47
+ action(:url=) { |url_string, b| b.frm.text_field(:id=>"url").set(url_string) }
48
+
49
+ # Clicks the Add button next to the URL field.
50
+ action(:add) { |b| b.frm.button(:value=>"Add").click }
51
+
52
+ # Gets the value of the access level cell for the specified
53
+ # file.
54
+ action(:access_level) { |filename, b| b.files_table.row(:text=>/#{Regexp.escape(filename)}/)[6].text }
55
+
56
+ element(:upload_file_field) { |b| b.frm.file_field(:id=>"upload") }
57
+
58
+ end
59
+
60
+ end
61
+
62
+ end
63
+
64
+ # Resources page for a given Site, in the Course Tools menu
65
+ class Resources < ResourcesBase
66
+
67
+ resources_elements
14
68
 
15
69
  # Returns an array of the displayed folder names.
16
70
  def folder_names
@@ -37,84 +91,6 @@ class ResourcesBase < BasePage
37
91
  names
38
92
  end
39
93
 
40
- # Use this as a means of checking if the file is visible or not
41
- def item(name)
42
- frm.link(:text=>name)
43
- end
44
-
45
- # Clicks the Select button next to the specified file.
46
- def select_file(filename)
47
- files_table.row(:text, /#{Regexp.escape(filename)}/).link(:text=>"Select").click
48
- end
49
-
50
- # Clicks the Remove button.
51
- action(:remove) { |b| b.frm.button(:value=>"Remove").click }
52
-
53
- # Clicks the remove link for the specified item in the attachment list.
54
- def remove_item(file_name)
55
- files_table.row(:text=>/#{Regexp.escape(file_name)}/).link(:href=>/doRemoveitem/).click
56
- end
57
-
58
- # Clicks the Move button.
59
- action(:move) { |b| b.frm.button(:value=>"Move").click }
60
-
61
- # Clicks the Show Other Sites link.
62
- action(:show_other_sites) { |b| b.frm.link(:text=>"Show other sites").click }
63
-
64
- def href(item)
65
- frm.link(:text=>item).href
66
- end
67
-
68
- # Clicks on the specified folder image, which
69
- # will open the folder tree and remain on the page.
70
- def open_folder(foldername)
71
- files_table.row(:text=>/#{Regexp.escape(foldername)}/).link(:title=>"Open this folder").click
72
- end
73
-
74
- # Clicks on the specified folder name, which should open
75
- # the folder contents on a refreshed page.
76
- def go_to_folder(foldername)
77
- frm.link(:text=>foldername).click
78
- end
79
-
80
- # Sets the URL field to the specified value.
81
- def url=(url_string)
82
- frm.text_field(:id=>"url").set(url_string)
83
- end
84
-
85
- # Clicks the Add button next to the URL field.
86
- action(:add) { |b| b.frm.button(:value=>"Add").click }
87
-
88
- # Gets the value of the access level cell for the specified
89
- # file.
90
- def access_level(filename)
91
- files_table.row(:text=>/#{Regexp.escape(filename)}/)[6].text
92
- end
93
-
94
- def edit_details(name)
95
- open_actions_menu(name)
96
- files_table.row(:text=>/#{Regexp.escape(name)}/).link(:text=>"Edit Details").click
97
- end
98
-
99
- def edit_content(html_page_name)
100
- open_actions_menu(html_page_name)
101
- files_table.row(:text=>/#{Regexp.escape(html_page_name)}/).link(:text=>"Edit Content").click
102
- end
103
-
104
- # Clicks the Create Folders menu item in the
105
- # Add menu of the specified folder.
106
- def create_subfolders_in(folder_name)
107
- open_add_menu(folder_name)
108
- files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Create Folders").click
109
- end
110
-
111
- def create_html_page_in(folder_name)
112
- open_add_menu(folder_name)
113
- files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Create HTML Page").click
114
- end
115
-
116
- element(:upload_file_field) { |b| b.frm.file_field(:id=>"upload") }
117
-
118
94
  # Enters the specified file into the file field name (assuming it's in the
119
95
  # data/sakai-cle-test-api folder or a subfolder therein)
120
96
  #
@@ -150,10 +126,9 @@ class ResourcesBase < BasePage
150
126
  end
151
127
  files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Upload Files").click
152
128
  end
153
- alias upload_file_to_folder upload_files_to_folder
154
129
 
155
130
  # Clicks the "Attach a copy" link for the specified
156
- # file, then reinstantiates the Class.
131
+ # file.
157
132
  # If an alert box appears, the method will call itself again.
158
133
  # Note that this can lead to an infinite loop. Will need to fix later.
159
134
  def attach_a_copy(file_name)
@@ -193,6 +168,28 @@ class ResourcesBase < BasePage
193
168
  end
194
169
  end
195
170
 
171
+ def edit_details(name)
172
+ open_actions_menu(name)
173
+ files_table.row(:text=>/#{Regexp.escape(name)}/).link(:text=>"Edit Details").click
174
+ end
175
+
176
+ def edit_content(html_page_name)
177
+ open_actions_menu(html_page_name)
178
+ files_table.row(:text=>/#{Regexp.escape(html_page_name)}/).link(:text=>"Edit Content").click
179
+ end
180
+
181
+ # Clicks the Create Folders menu item in the
182
+ # Add menu of the specified folder.
183
+ def create_subfolders_in(folder_name)
184
+ open_add_menu(folder_name)
185
+ files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Create Folders").click
186
+ end
187
+
188
+ def create_html_page_in(folder_name)
189
+ open_add_menu(folder_name)
190
+ files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Create HTML Page").click
191
+ end
192
+
196
193
  # Clicks the Continue button
197
194
  def continue
198
195
  frm.div(:class=>"highlightPanel").span(:id=>"submitnotifxxx").wait_while_present
@@ -207,17 +204,12 @@ class ResourcesBase < BasePage
207
204
  files_table.row(:text=>/#{Regexp.escape(name)}/).li(:text=>/Action/, :class=>"menuOpen").fire_event("onclick")
208
205
  end
209
206
 
210
- end
211
-
212
- # Resources page for a given Site, in the Course Tools menu
213
- class Resources < ResourcesBase
214
-
215
-
216
-
217
207
  end
218
208
 
219
209
  class ResourcesUploadFiles < ResourcesBase
220
210
 
211
+ resources_elements
212
+
221
213
  @@filex=0 # TODO: This is almost certainly not going to work right.
222
214
 
223
215
  # Enters the specified folder/filename value into
@@ -254,48 +246,29 @@ class EditFileDetails < ResourcesBase
254
246
 
255
247
  # Clicks the Update button, then instantiates
256
248
  # the Resources page class.
257
- def update
258
- frm.button(:value=>"Update").click
259
- Resources.new(@browser)
260
- end
249
+ action(:update) { |b| b.frm.button(:value=>"Update").click }
261
250
 
262
251
  # Enters the specified string into the title field.
263
- def title=(title)
264
- frm.text_field(:id=>"displayName_0").set(title)
265
- end
252
+ element(:title) { b.frm.text_field(:id=>"displayName_0") }
266
253
 
267
254
  # Enters the specified string into the description field.
268
- def description=(description)
269
- frm.text_field(:id=>"description_0").set(description)
270
- end
255
+ element(:description) { |b| b.frm.text_field(:id=>"description_0") }
271
256
 
272
- # Sets the radio button for publically viewable.
273
- def select_publicly_viewable
274
- frm.radio(:id=>"access_mode_public_0").set
275
- end
257
+ element(:publicly_viewable) { |b| b.frm.radio(:id=>"access_mode_public_0") }
276
258
 
277
- # Checks the checkbox for showing only on the specifed
278
- # condition.
279
- def check_show_only_if_condition
280
- frm.checkbox(:id=>"cbCondition_0")
281
- end
259
+ element(:show_only_if_condition) { |b| b.frm.checkbox(:id=>"cbCondition_0") }
282
260
 
283
261
  # Selects the specified Gradebook item value in the
284
262
  # select list.
285
- def gradebook_item=(item)
286
- frm.select(:id=>"selectResource_0").select(item)
287
- end
263
+ element(:gradebook_item) { |b| b.frm.select(:id=>"selectResource_0") }
288
264
 
289
265
  # Selects the specified value in the item condition
290
266
  # field.
291
- def item_condition=(condition)
292
- frm.select(:id=>"selectCondition_0").select(condition)
293
- end
267
+ element(:item_condition) { |b| b.frm.select(:id=>"selectCondition_0") }
294
268
 
295
269
  # Sets the Grade field to the specified value.
296
- def assignment_grade=(grade)
297
- frm.text_field(:id=>"assignment_grade_0").set(grade)
298
- end
270
+ element(:assignment_grade) { |b| b.frm.text_field(:id=>"assignment_grade_0") }
271
+
299
272
  end
300
273
 
301
274
  class CreateFolders < ResourcesBase
@@ -0,0 +1 @@
1
+ # Work to be done here.
@@ -7,10 +7,7 @@ class Roster < BasePage
7
7
 
8
8
  frame_element
9
9
 
10
- def find
11
- frm.button(:value=>"Find").click
12
- Roster.new @browser
13
- end
10
+ button("Find")
14
11
 
15
12
  def names
16
13
  list = []
@@ -25,11 +22,7 @@ class Roster < BasePage
25
22
  # Then instantiates the RosterProfileView class.
26
23
  # Note that it expects an exact match for the name string, otherwise
27
24
  # the script will error out.
28
- def view(name)
29
- frm.link(:text=>name).click
30
- RosterProfileView.new @browser
31
- end
32
-
25
+ action(:view) { |name, b| b.frm.link(:text=>name).click }
33
26
 
34
27
  element(:name_or_id) { |b| b.frm.text_field(:id=>"roster_form:search") }
35
28
 
@@ -40,10 +33,7 @@ class RosterProfileView < BasePage
40
33
 
41
34
  frame_element
42
35
 
43
- def back
44
- frm.button(:value=>"Back").click
45
- Roster.new(@browser)
46
- end
36
+ button("Back")
47
37
 
48
38
  # Returns a hash containing the contents of the Public Information
49
39
  # table on the page, with the keys being the row headers and the values
@@ -23,12 +23,8 @@ class Rwiki < RwikiBase
23
23
  action(:save) { |b| b.frm.button(text: "Save").click }
24
24
  action(:cancel) { |b| b.frm.button(text: "Cancel").click }
25
25
 
26
- def open_wiki(title)
27
- frm.link(:text=>title).click
28
- end
26
+ action(:open_wiki) { |title, b| b.frm.link(:text=>title).click }
29
27
 
30
- def wiki_href(title)
31
- frm.link(:text=>title).href
32
- end
28
+ action(:wiki_href) { |title, b| b.frm.link(:text=>title).href }
33
29
 
34
30
  end
@@ -7,7 +7,7 @@ class Search < BasePage
7
7
 
8
8
  frame_element
9
9
 
10
- action(:admin) { |b| b.frm.link(:text=>"Admin").click }
10
+ link "Admin"
11
11
  element(:search_field) { |b| b.frm.text_field(:id=>"search") }
12
12
  action(:search_button) { |b| b.frm.button(:name=>"sb").click }
13
13
  element(:this_site) { |b| b.frm.radio(:id=>"searchSite") }
@@ -21,14 +21,14 @@ class SearchAdmin < BasePage
21
21
 
22
22
  frame_element
23
23
 
24
- action(:search) { |b| b.frm.link(:text=>"Search").click }
25
- action(:rebuild_site_index) { |b| b.frm.link(:text=>"Rebuild Site Index").click }
26
- action(:refresh_site_index) { |b| b.frm.link(:text=>"Refresh Site Index").click }
27
- action(:rebuild_whole_index) { |b| b.frm.link(:text=>"Rebuild Whole Index").click }
28
- action(:refresh_whole_index) { |b| b.frm.link(:text=>"Refresh Whole Index").click }
29
- action(:remove_lock) { |b| b.frm.link(:text=>"Remove Lock").click }
30
- action(:reload_index) { |b| b.frm.link(:text=>"Reload Index").click }
31
- action(:enable_diagnostics) { |b| b.frm.link(:text=>"Enable Diagnostics").click }
32
- action(:disable_diagnostics) { |b| b.frm.link(:text=>"Disable Diagnostics").click }
24
+ link "Search"
25
+ link "Rebuild Site Index"
26
+ link "Refresh Site Index"
27
+ link "Rebuild Whole Index"
28
+ link "Refresh Whole Index"
29
+ link "Remove Lock"
30
+ link "Reload Index"
31
+ link "Enable Diagnostics"
32
+ link "Disable Diagnostics"
33
33
 
34
34
  end
@@ -9,12 +9,10 @@ class SectionsBase < BasePage
9
9
 
10
10
  class << self
11
11
  def menu_elements
12
- # Clicks the Add Sections button/link and instantiates
13
- # the AddEditSections Class.
14
- action(:add_sections) { |b| b.frm.link(:text=>"Add Sections").click }
15
- action(:overview) { |b| b.frm.link(:text=>"Overview").click }
16
- action(:student_memberships) { |b| b.frm.link(:text=>"Student Memberships").click }
17
- action(:options) { |b| b.frm.link(:text=>"Options").click }
12
+ link("Add Sections")
13
+ link("Overview")
14
+ link("Student Memberships")
15
+ link("Options")
18
16
  end
19
17
  end
20
18
  end
@@ -26,24 +24,13 @@ class Sections < SectionsBase
26
24
 
27
25
  # Clicks the Edit link for the specified section.
28
26
  # Then instantiates the AddEditSections class.
29
- def edit(title)
30
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Edit/).click
31
- AddEditSections.new(@browser)
32
- end
27
+ action(:edit) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Edit/).click }
33
28
 
34
- def assign_tas(title)
35
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Assign TAs/).click
36
- AssignTeachingAssistants.new(@browser)
37
- end
29
+ action(:assign_tas) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Assign TAs/).click }
38
30
 
39
- def assign_students(title)
40
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Assign Students/).click
41
- AssignStudents.new(@browser)
42
- end
31
+ action(:assign_students) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).link(:text=>/Assign Students/).click }
43
32
 
44
- def check(title)
45
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).checkbox(:name=>/remove/).set
46
- end
33
+ action(:check) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/).checkbox(:name=>/remove/).set }
47
34
 
48
35
  def section_names
49
36
  names = []
@@ -55,49 +42,30 @@ class Sections < SectionsBase
55
42
  return names
56
43
  end
57
44
 
58
- def remove_sections
59
- frm.button(:value=>"Remove Sections").click
60
- Sections.new(@browser)
61
- end
45
+ button("Remove Sections")
62
46
 
63
47
  # Returns the text of the Teach Assistant cell for the specified
64
48
  # Section.
65
- def tas_for(title)
66
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[1].text
67
- end
49
+ action(:tas_for) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[1].text }
68
50
 
69
51
  #
70
- def days_for(title)
71
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[2].text
72
- end
52
+ action(:days_for) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[2].text }
73
53
 
74
54
  #
75
- def time_for(title)
76
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[3].text
77
- end
55
+ action(:time_for) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[3].text }
78
56
 
79
57
  #
80
- def location_for(title)
81
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[4].text
82
- end
58
+ action(:location_for) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[4].text }
83
59
 
84
60
  #
85
- def current_size_for(title)
86
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[5].text
87
- end
61
+ action(:current_size_for) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[5].text }
88
62
 
89
63
  #
90
- def availability_for(title)
91
- frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[6].text
92
- end
64
+ action(:availability_for) { |title, b| b.frm.table(:class=>/listHier/).row(:text=>/#{Regexp.escape(title)}/)[6].text }
93
65
 
94
- def alert_text
95
- frm.div(:class=>"validation").text
96
- end
66
+ value(:alert_text) { |b| b.frm.div(:class=>"validation").text }
97
67
 
98
- def success_text
99
- frm.div(:class=>"success").text
100
- end
68
+ value(:success_text) { |b| b.frm.div(:class=>"success").text }
101
69
 
102
70
  end
103
71
 
@@ -111,14 +79,7 @@ class AddEditSections < SectionsBase
111
79
  menu_elements
112
80
 
113
81
  # The Update button is only available when editing an existing Sections record.
114
- def update
115
- frm.button(:value=>"Update").click
116
- if frm.div(:class=>"validation").exist?
117
- AddEditSections.new(@browser)
118
- else
119
- Sections.new(@browser)
120
- end
121
- end
82
+ button("Update")
122
83
 
123
84
  # This method takes an array object containing strings of the
124
85
  # days of the week and then clicks the appropriate checkboxes, based
@@ -155,41 +116,39 @@ class AddEditSections < SectionsBase
155
116
 
156
117
  end
157
118
 
158
- #
159
- class AssignTeachingAssistants < SectionsBase
119
+ class AssignBase < SectionsBase
160
120
 
161
121
  menu_elements
162
122
 
163
- def assign_TAs
164
- frm.button(:value=>"Assign TAs").click
165
- Sections.new(@browser)
166
- end
123
+ class << self
124
+ def assign_elements
125
+ element(:available_tas) { |b| b.frm.select(:id=>"memberForm:availableUsers") }
126
+ element(:assigned_tas) { |b| b.frm.select(:id=>"memberForm:selectedUsers") }
127
+ action(:assign) { |b| b.frm.button(:value=>">").click }
128
+ action(:unassign) { |b| b.frm.button(:value=>"<").click }
129
+ action(:assign_all) { |b| b.frm.button(:value=>">>").click }
130
+ action(:unassign_all) { |b| b.frm.button(:value=>"<<").click }
131
+ end
167
132
 
168
- element(:available_tas) { |b| b.frm.select(:id=>"memberForm:availableUsers") }
169
- element(:assigned_tas) { |b| b.frm.select(:id=>"memberForm:selectedUsers") }
170
- action(:assign) { |b| b.frm.button(:value=>">").click }
171
- action(:unassign) { |b| b.frm.button(:value=>"<").click }
172
- action(:assign_all) { |b| b.frm.button(:value=>">>").click }
173
- action(:unassign_all) { |b| b.frm.button(:value=>"<<").click }
133
+ end
174
134
 
175
135
  end
176
136
 
177
137
  #
178
- class AssignStudents < SectionsBase
138
+ class AssignTeachingAssistants < AssignBase
179
139
 
180
- menu_elements
140
+ assign_elements
181
141
 
182
- def assign_students
183
- frm.button(:value=>"Assign students").click
184
- Sections.new(@browser)
185
- end
142
+ button "Assign TAs"
143
+
144
+ end
145
+
146
+ #
147
+ class AssignStudents < AssignBase
148
+
149
+ assign_elements
186
150
 
187
- element(:available_students) { |b| b.frm.select(:id=>"memberForm:availableUsers") }
188
- element(:assigned_students) { |b| b.frm.select(:id=>"memberForm:selectedUsers") }
189
- action(:assign) { |b| b.frm.button(:value=>">").click }
190
- action(:unassign) { |b| b.frm.button(:value=>"<").click }
191
- action(:assign_all) { |b| b.frm.button(:value=>">>").click }
192
- action(:unassign_all) { |b| b.frm.button(:value=>"<<").click }
151
+ button "Assign students"
193
152
 
194
153
  end
195
154