sambal-cle 0.1.4 → 0.1.5

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 (52) hide show
  1. data/Gemfile +7 -0
  2. data/Gemfile.lock +44 -0
  3. data/lib/sambal-cle/data_objects/announcement.rb +7 -7
  4. data/lib/sambal-cle/data_objects/assessment.rb +26 -77
  5. data/lib/sambal-cle/data_objects/assessment_submission.rb +26 -0
  6. data/lib/sambal-cle/data_objects/assignment.rb +40 -40
  7. data/lib/sambal-cle/data_objects/assignment_permissions.rb +4 -4
  8. data/lib/sambal-cle/data_objects/assignment_submission.rb +4 -4
  9. data/lib/sambal-cle/data_objects/blog.rb +2 -2
  10. data/lib/sambal-cle/data_objects/blogger.rb +3 -3
  11. data/lib/sambal-cle/data_objects/chat_room.rb +2 -2
  12. data/lib/sambal-cle/data_objects/{site.rb → course.rb} +24 -20
  13. data/lib/sambal-cle/data_objects/event.rb +4 -4
  14. data/lib/sambal-cle/data_objects/forum.rb +21 -22
  15. data/lib/sambal-cle/data_objects/glossary_term.rb +71 -0
  16. data/lib/sambal-cle/data_objects/lesson.rb +10 -9
  17. data/lib/sambal-cle/data_objects/matrix.rb +142 -0
  18. data/lib/sambal-cle/data_objects/message.rb +2 -2
  19. data/lib/sambal-cle/data_objects/poll.rb +2 -2
  20. data/lib/sambal-cle/data_objects/portfolio.rb +120 -0
  21. data/lib/sambal-cle/data_objects/questions.rb +690 -0
  22. data/lib/sambal-cle/data_objects/resource.rb +12 -12
  23. data/lib/sambal-cle/data_objects/syllabus.rb +7 -7
  24. data/lib/sambal-cle/data_objects/web_content_tool.rb +2 -2
  25. data/lib/sambal-cle/data_objects/wiki.rb +6 -6
  26. data/lib/sambal-cle/page_objects/assessments.rb +165 -157
  27. data/lib/sambal-cle/page_objects/assignments.rb +17 -17
  28. data/lib/sambal-cle/page_objects/glossary.rb +14 -64
  29. data/lib/sambal-cle/page_objects/matrix.rb +77 -113
  30. data/lib/sambal-cle/page_objects/portfolios.rb +0 -2
  31. data/lib/sambal-cle/page_objects/resources.rb +4 -4
  32. data/lib/sambal-cle/page_objects/site_setup.rb +31 -23
  33. data/lib/sambal-cle/page_objects/sites.rb +2 -12
  34. data/lib/sambal-cle/utilities.rb +0 -6
  35. data/lib/sambal-cle/workflows.rb +77 -76
  36. data/lib/sambal-cle.rb +2 -2
  37. data/sambal-cle.gemspec +2 -2
  38. data/test/add_assignment_to_calendar_spec.rb +4 -4
  39. data/test/assessment_create_spec.rb +1 -1
  40. data/test/assessment_feedback_spec.rb +78 -0
  41. data/test/assessment_publish_spec.rb +102 -0
  42. data/test/assignment_announcements_spec.rb +4 -4
  43. data/test/assignment_duplicate_spec.rb +4 -4
  44. data/test/assignment_gradebook_spec.rb +4 -4
  45. data/test/assignment_permissions_spec.rb +5 -5
  46. data/test/assignments_grading_spec.rb +4 -4
  47. data/test/assignments_submission_spec.rb +4 -4
  48. data/test/duplicate_site_spec.rb +2 -2
  49. data/test/glossary_term_create_spec.rb +71 -0
  50. data/test/import_site_content_spec.rb +3 -3
  51. data/test/test_spec.rb +51 -0
  52. metadata +16 -5
@@ -192,18 +192,18 @@ class AssignmentsList < AssignmentsBase
192
192
 
193
193
  # Clicks the Edit link for the assignment with the specified
194
194
  # id, then instantiates the AssignmentAdd page class.
195
- page_method(:edit_assignment_id) { |id, b| b.frm.link(:href=>/#{Regexp.escape(id)}/).click }
195
+ action(:edit_assignment_id) { |id, b| b.frm.link(:href=>/#{Regexp.escape(id)}/).click }
196
196
 
197
197
  # Clicks the Edit link for the Assignment specified.
198
198
  # next is the AssignmentAdd page class.
199
- page_method(:edit_assignment) { |assignment_name, b|
199
+ action(:edit_assignment) { |assignment_name, b|
200
200
  index = b.assignments_titles.index(assignment_name)
201
201
  b.frm.link(:text=>"Edit", :index=>index).click
202
202
  }
203
203
 
204
204
  # Checks the appropriate checkbox, based on the specified assignment_name
205
205
  # Then clicks the Update button and confirms the deletion request.
206
- page_method(:delete) { |assignment_name, b|
206
+ action(:delete) { |assignment_name, b|
207
207
  b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).checkbox(:name=>"selectedAssignments").set
208
208
  b.frm.button(:value=>"Update").click
209
209
  b.frm.button(:value=>"Delete").click
@@ -211,33 +211,33 @@ class AssignmentsList < AssignmentsBase
211
211
 
212
212
  # Clicks on the Duplicate link for the Assignment specified.
213
213
  # Then instantiates the AssignmentsList page class.
214
- page_method(:duplicate) { |assignment_name, b|
214
+ action(:duplicate) { |assignment_name, b|
215
215
  index = b.assignments_titles.index(assignment_name)
216
216
  b.frm.link(:text=>"Duplicate", :index=>index).click
217
217
  }
218
218
 
219
219
  # Gets the assignment id from the href of the specified
220
220
  # Assignment link.
221
- page_method(:get_assignment_id) { |assignment_name, b| b.assignment_href(assignment_name) =~ /(?<=\/a\/\S{36}\/).+(?=&pan)/; $~.to_s }
222
- page_method(:assignment_href) { |name, b| b.frm.link(:text=>/#{Regexp.escape(name)}/).href }
221
+ action(:get_assignment_id) { |assignment_name, b| b.assignment_href(assignment_name) =~ /(?<=\/a\/\S{36}\/).+(?=&pan)/; $~.to_s }
222
+ action(:assignment_href) { |name, b| b.frm.link(:text=>/#{Regexp.escape(name)}/).href }
223
223
 
224
224
  # Checks the checkbox for the specified Assignment,
225
225
  # using the assignment id as the identifier.
226
- page_method(:check_assignment) { |id,b| b.frm.checkbox(:value, /#{id}/).set } #FIXME to use name instead of id.
227
- page_method(:open_assignment) { |assignment_name, b| b.frm.link(:text=>assignment_name).click }
226
+ action(:check_assignment) { |id,b| b.frm.checkbox(:value, /#{id}/).set } #FIXME to use name instead of id.
227
+ action(:open_assignment) { |assignment_name, b| b.frm.link(:text=>assignment_name).click }
228
228
 
229
229
  # Gets the contents of the status column
230
230
  # for the specified assignment
231
- page_method(:status_of) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).td(:headers=>"status").text }
231
+ action(:status_of) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).td(:headers=>"status").text }
232
232
 
233
233
  # Clicks the View Submissions link for the specified
234
234
  # Assignment, then instantiates the AssignmentSubmissionList
235
235
  # page class.
236
- page_method(:view_submissions_for) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"View Submissions").click }
236
+ action(:view_submissions_for) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"View Submissions").click }
237
237
 
238
238
  # Clicks the Grade link for the specified Assignment,
239
239
  # then instantiates the AssignmentSubmissionList page class.
240
- page_method(:grade) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"Grade").click }
240
+ action(:grade) { |assignment_name, b| b.assignments_table.row(:text=>/#{Regexp.escape(assignment_name)}/).link(:text=>"Grade").click }
241
241
 
242
242
  action(:sort_assignment_title) { |b| b.frm.link(:text=>"Assignment title").click }
243
243
  action(:sort_status) { |b| b.frm.link(:text=>"Status").click }
@@ -312,7 +312,7 @@ class AssignmentsPreview < AssignmentsBase
312
312
  end
313
313
 
314
314
  # Grabs the Assignment Instructions text.
315
- value(:instructions) { |b| b.frm.div(:class=>"textPanel").text }
315
+ value(:instructions) { |b| b.frm.div(:id=>"instructions").text }
316
316
 
317
317
  # Grabs the instructor comments text.
318
318
  value(:instructor_comments) { |b| b.frm.div(:class=>"portletBody").div(:class=>"textPanel", :index=>2).text }
@@ -396,10 +396,10 @@ class AssignmentStudentView < BasePage
396
396
  action(:back_to_list) { |b| b.frm.button(:value=>"Back to list").click }
397
397
  action(:preview) { |p| p.preview_button.click }
398
398
 
399
- element(:instructor_comment_field) { |b| b.frm.form(:name=>"addSubmissionForm").div(:class=>"textPanel", :index=>1) }
399
+ element(:instructor_comment_field) { |b| b.frm.div(:id=>"instructor_comment") }
400
400
 
401
- value(:instructions) { |b| b.frm.div(:class=>"portletBody").div(:class=>"textPanel").text }
402
- value(:submission_text) { |b| b.frm.form(:name=>"addSubmissionForm").div(:class=>"textPanel").text }
401
+ value(:instructions) { |b| b.frm.div(:id=>"instructions").text }
402
+ value(:submission_text) { |b| b.frm.div(:id=>"submission").text }
403
403
  value(:instructor_comments) { |p| p.instructor_comment_field.text }
404
404
 
405
405
  # Returns an array of strings. Each element in the
@@ -458,7 +458,7 @@ class AssignmentSubmissionList < AssignmentsBase
458
458
 
459
459
  # Clicks the Grade link for the specified student, then
460
460
  # instantiates the AssignmentSubmission page class.
461
- pgmd(:grade) { |student_name, b| b.frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/).link(:text=>"Grade").click }
461
+ action(:grade) { |student_name, b| b.frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/).link(:text=>"Grade").click }
462
462
 
463
463
  # Gets the value of the status field for the specified
464
464
  # Student. Note that the student's name needs to be entered
@@ -467,7 +467,7 @@ class AssignmentSubmissionList < AssignmentsBase
467
467
  # students with the same name.
468
468
  #
469
469
  # Useful for verification purposes.
470
- pgmd(:submission_status_of) { |student_name, b| b.frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/)[4].text }
470
+ action(:submission_status_of) { |student_name, b| b.frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(student_name)}/)[4].text }
471
471
 
472
472
  element(:search_input) { |b| b.frm.text_field(:id=>"search") }
473
473
  action(:find) { |b| b.frm.button(:value=>"Find").click }
@@ -6,31 +6,15 @@ class Glossary < BasePage
6
6
 
7
7
  frame_element
8
8
 
9
- def add
10
- frm.link(:text=>"Add").click
11
- frm.frame(:id, "longDescription___Frame").td(:id, "xEditingArea").wait_until_present
12
- AddEditTerm.new(@browser)
13
- end
14
-
15
- def import
16
- frm.link(:text=>"Import").click
17
- GlossaryImport.new(@browser)
18
- end
9
+ action(:add) { |b| b.frm.link(:text=>"Add").click }
10
+ action(:import) { |b| b.frm.link(:text=>"Import").click }
19
11
 
20
- def edit(term)
21
- frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(term)}/).link(:text=>"Edit").click
22
- AddEditTerm.new(@browser)
23
- end
24
-
25
- def delete(term)
26
- frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(term)}/).link(:text=>"Delete").click
27
- AddEditTerm.new(@browser)
28
- end
12
+ action(:edit) { |term, b| b.frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(term)}/).link(:text=>"Edit").click }
13
+ action(:delete) { |term, b| b.frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(term)}/).link(:text=>"Delete").click }
29
14
 
30
- def open(term)
31
- frm.link(:text=>term).click
32
- #FIXME!
33
- # Need to do special handling here because of the new window.
15
+ action(:open) do |term, b|
16
+ b.frm.link(:text=>term).click
17
+ b.window(:title=>term).use
34
18
  end
35
19
 
36
20
  # Returns an array containing the string values of the terms
@@ -48,23 +32,24 @@ end
48
32
 
49
33
  class AddEditTerm < BasePage
50
34
 
35
+ include FCKEditor
51
36
  frame_element
52
37
 
38
+ expected_element :editor
39
+
53
40
  def add_term
54
41
  frm.button(:value=>"Add Term").click
55
- Glossary.new(@browser)
56
42
  end
57
43
 
58
44
  def save_changes
59
45
  frm.button(:value=>"Save Changes").click
60
- Glossary.new(@browser)
61
46
  end
62
47
 
63
48
  def long_description=(text)
64
- frm.frame(:id, "longDescription___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
49
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
65
50
  end
66
51
 
67
-
52
+ element(:editor) { |b| b.frm.frame(:id, "longDescription___Frame") }
68
53
  element(:term) { |b| b.frm.text_field(:id=>"term-id") }
69
54
  element(:short_description) { |b| b.frm.text_field(:id=>"description-id") }
70
55
 
@@ -75,43 +60,8 @@ class GlossaryImport < BasePage
75
60
 
76
61
  frame_element
77
62
 
78
- def select_file
79
- frm.link(:text=>"Select file...").click
80
- GlossaryAttach.new(@browser)
81
- end
82
-
83
- def import
84
- frm.button(:value=>"Import").click
85
- Glossary.new(@browser)
86
- end
87
-
88
- end
89
-
90
- # The file upload page for Glossary importing
91
- class GlossaryFileUpload < BasePage
92
-
93
- frame_element
94
-
95
- @@filex=0
63
+ action(:select_file) { |b| b.frm.link(:text=>"Select file...").click }
96
64
 
97
- # Note that the file_to_upload method can be used
98
- # multiple times, but it assumes
99
- # that the add_another_file method is used
100
- # before it, every time except before the first time.
101
- def file_to_upload(file_name, file_path="")
102
- frm.file_field(:id, "content_#{@@filex}").set(file_path + file_name)
103
- @@filex+=1
104
- end
105
-
106
- def upload_files_now
107
- frm.button(:value=>"Upload Files Now").click
108
- sleep 0.5
109
- @@filex=0
110
- GlossaryAttach.new(@browser)
111
- end
112
-
113
- def add_another_file
114
- frm.link(:text=>"Add Another File").click
115
- end
65
+ action(:import) { |b| b.frm.button(:value=>"Import").click }
116
66
 
117
67
  end
@@ -9,74 +9,68 @@ class Matrices < BasePage
9
9
 
10
10
  # Clicks the Add link and instantiates
11
11
  # the AddEditMatrix Class.
12
- def add
13
- frm.link(:text=>"Add").click
14
- AddEditMatrix.new(@browser)
15
- end
12
+ action(:add) { |b| b.frm.link(:text=>"Add").click }
13
+ action(:import) { |b| b.frm.link(:text=>"Import").click }
14
+ action(:manage_site_associations) { |b| b.frm.link(:text=>"Manage Site Associations").click }
15
+ action(:permissions) { |b| b.frm.link(:text=>"Permissions").click }
16
+ action(:my_preferences) { |b| b.frm.link(:text=>"My Preferences").click }
16
17
 
17
18
  # Clicks the "Edit" link for the specified
18
19
  # Matrix item, then instantiates the EditMatrixCells.
19
- def edit(matrixname)
20
- frm.table(:class=>"listHier lines nolines").tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Edit").click
21
- EditMatrixCells.new(@browser)
22
- end
20
+ action(:edit) { |matrixname, b| b.matrix_table.tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Edit").click }
23
21
 
24
22
  # Clicks the "Preview" link for the specified
25
23
  # Matrix item.
26
- def preview(matrixname)
27
- frm.table(:class=>"listHier lines nolines").tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Preview").click
28
- end
24
+ action(:preview) { |matrixname, b| b.matrix_table.tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Preview").click }
29
25
 
30
26
  # Clicks the "Publish" link for the specified
31
27
  # Matrix item, then instantiates the ConfirmPublishMatrix Class.
32
- def publish(matrixname)
33
- frm.table(:class=>"listHier lines nolines").tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Publish").click
34
- ConfirmPublishMatrix.new(@browser)
35
- end
28
+ action(:publish) { |matrixname, b| b.matrix_table.tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Publish").click }
29
+
30
+ action(:delete) { |matrixname, b| b.matrix_table.tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Delete").click }
31
+
32
+ action(:export) { |matrixname, b| b.matrix_table.tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Export").click }
36
33
 
34
+ action(:permissions) { |matrixname, b| b.matrix_table.tr(:text=>/#{Regexp.escape(matrixname)}/).link(:text=>"Permissions").click }
35
+
36
+ element(:matrix_table) { |b| b.frm.table(:class=>"listHier lines nolines") }
37
+
38
+ def matrices_list
39
+ text_array = matrix_table.to_a
40
+ text_array.delete_at(0) # deletes the header row which is useless
41
+ list=[]
42
+ text_array.each do |line|
43
+ list << line[0]
44
+ end
45
+ list
46
+ end
37
47
 
38
48
  end
39
49
 
40
50
  #
41
51
  class AddEditMatrix < BasePage
42
52
 
53
+ include FCKEditor
43
54
  frame_element
44
55
 
45
- # Clicks the "Create Matrix" button and
46
- # instantiates the Matrices Class.
47
- def create_matrix
48
- frm.button(:value=>"Create Matrix").click
49
- Matrices.new(@browser)
50
- end
56
+ expected_element :editor
51
57
 
52
- # Clicks the "Save Changes" butotn and
53
- # instantiates the EditMatrixCells Class.
54
- def save_changes
55
- frm.button(:value=>"Save Changes").click
56
- EditMatrixCells.new(@browser)
57
- end
58
+ element(:editor) { |b| b.frm.frame(:id=>"descriptionTextArea___Frame") }
58
59
 
59
- # Clicks the "Select Style" link and
60
- # instantiates the SelectMatrixStyle Class.
61
- def select_style
62
- frm.link(:text=>"Select Style").click
63
- SelectMatrixStyle.new(@browser)
64
- end
60
+ # Clicks the "Create Matrix" button
61
+ action(:create_matrix) { |b| b.frm.button(:value=>"Create Matrix").click }
65
62
 
66
- # Clicks the "Add Column" link and
67
- # instantiates the AddEditColumn Class.
68
- def add_column
69
- frm.link(:text=>"Add Column").click
70
- AddEditColumn.new(@browser)
71
- end
63
+ # Clicks the "Save Changes" button
64
+ action(:save_changes) { |b| b.frm.button(:value=>"Save Changes").click }
72
65
 
73
- # Clicks the "Add Row" link and instantiates
74
- # the AddEditRow Class.
75
- def add_row
76
- frm.link(:text=>"Add Row").click
77
- AddEditRow.new(@browser)
78
- end
66
+ # Clicks the "Select Style" link
67
+ action(:select_style) { |b| b.frm.link(:text=>"Select Style").click }
68
+
69
+ # Clicks the "Add Column" link
70
+ action(:add_column) { |b| b.frm.link(:text=>"Add Column").click }
79
71
 
72
+ # Clicks the "Add Row" link
73
+ action(:add_row) { |b| b.frm.link(:text=>"Add Row").click }
80
74
 
81
75
  element(:title) { |b| b.frm.text_field(:id=>"title-id") }
82
76
 
@@ -89,53 +83,38 @@ class SelectMatrixStyle < BasePage
89
83
 
90
84
  # Clicks the "Go Back" button and
91
85
  # instantiates the AddEditMatrix Class.
92
- def go_back
93
- frm.button(:value=>"Go Back").click
94
- AddEditMatrix.new(@browser)
95
- end
86
+ action(:go_back) { |b| b.frm.button(:value=>"Go Back").click }
96
87
 
97
88
  # Clicks the "Select" link for the specified
98
89
  # Style, then instantiates the AddEditMatrix Class.
99
- def select_style(stylename)
100
- frm.table(:class=>/listHier lines/).tr(:text=>/#{Regexp.escape(stylename)}/).link(:text=>"Select").click
101
- AddEditMatrix.new(@browser)
102
- end
90
+ action(:select_style) { |stylename, b| b.frm.table(:class=>/listHier lines/).tr(:text=>/#{Regexp.escape(stylename)}/).link(:text=>"Select").click }
103
91
 
104
92
  end
105
93
 
106
- #
107
- class AddEditColumn < BasePage
94
+ class RowColumnCommon < BasePage
108
95
 
109
96
  frame_element
110
-
111
- # Clicks the "Update" button, then
112
- # instantiates the AddEditMatrix Class.
113
- def update
114
- frm.button(:value=>"Update").click
115
- AddEditMatrix.new(@browser)
97
+ class << self
98
+ def table_elements
99
+ action(:update) { |b| b.frm.button(:value=>"Update").click }
100
+ element(:name) { |b| b.frm.text_field(:name=>"description") }
101
+ element(:background_color) { |b| b.frm.text_field(:id=>"color-id") }
102
+ element(:font_color) { |b| b.frm.text_field(:id=>"textColor-id") }
103
+ end
116
104
  end
117
-
118
-
119
- element(:name) { |b| b.frm.text_field(:name=>"description") }
120
-
121
105
  end
122
106
 
123
107
  #
124
- class AddEditRow < BasePage
108
+ class AddEditColumn < RowColumnCommon
125
109
 
126
- frame_element
110
+ table_elements
127
111
 
128
- # Clicks the "Update" button, then
129
- # instantiates the AddEditMatrix Class.
130
- def update
131
- frm.button(:value=>"Update").click
132
- AddEditMatrix.new(@browser)
133
- end
112
+ end
134
113
 
114
+ #
115
+ class AddEditRow < RowColumnCommon
135
116
 
136
- element(:name) { |b| b.frm.text_field(:name=>"description") }
137
- element(:background_color) { |b| b.frm.text_field(:id=>"color-id") }
138
- element(:font_color) { |b| b.frm.text_field(:id=>"textColor-id") }
117
+ table_elements
139
118
 
140
119
  end
141
120
 
@@ -145,25 +124,24 @@ class EditMatrixCells < BasePage
145
124
  frame_element
146
125
 
147
126
  # Clicks on the cell that is specified, based on
148
- # the row number, then the column number.
149
- #
150
- # Note that the numbering begins in the upper left
151
- # of the Matrix, with (1, 1) being the first EDITABLE
152
- # cell, NOT the first cell in the table itself.
153
- #
154
- # In other words, ignore the header row and header column
155
- # in your count (or, if you prefer, consider those
156
- # to be numbered "0").
157
- def edit(row, column)
158
- frm.div(:class=>"portletBody").table(:summary=>"Matrix Scaffolding (click on a cell to edit)").tr(:index=>row).td(:index=>column-1).fire_event("onclick")
159
- EditCell.new(@browser)
160
- end
127
+ # the "id" found in the onclick tag for the cell.
128
+ action(:edit_cell_by_id) { |id, b| b.matrix_scaffolding.td(:html=>/#{id}/).fire_event("onclick") }
161
129
 
162
130
  # Clicks the "Return to List" link and
163
131
  # instantiates the Matrices Class.
164
- def return_to_list
165
- frm.link(:text=>"Return to List").click
166
- Matrices.new(@browser)
132
+ action(:return_to_list) { |b| b.frm.link(:text=>"Return to List").click }
133
+
134
+ element(:matrix_scaffolding) { |b| b.frm.div(:class=>"portletBody").table(:summary=>"Matrix Scaffolding (click on a cell to edit)") }
135
+
136
+ element(:cells) { |b| b.frm.tds(:class=>/matrix-cell-border/).to_a }
137
+
138
+ element(:column_headers) { |b| b.matrix_scaffolding.tr(:index=>0).ths.to_a }
139
+
140
+ def edit_cell_by_row_and_column(row, column)
141
+ columns = []
142
+ column_headers.each { |col| columns << col.text }
143
+ columns.delete_at(0)
144
+ matrix_scaffolding.row(:text=>/#{Regexp.escape(row)}/).td(:index=>columns.index(column)).fire_event("onclick")
167
145
  end
168
146
 
169
147
  end
@@ -173,23 +151,17 @@ class EditCell < BasePage
173
151
 
174
152
  frame_element
175
153
 
176
- thing(:select_evaluators_link) { |b| b.frm.link(:text=>"Select Evaluators") }
154
+ expected_element :select_evaluators_link
155
+
156
+ element(:select_evaluators_link) { |b| b.frm.link(:text=>"Select Evaluators") }
177
157
 
178
158
  # Clicks the "Select Evaluators" link
179
159
  # and instantiates the SelectEvaluators Class.
180
- def select_evaluators
181
- select_evaluators_link.wait_until_present
182
- select_evaluators_link.click
183
- SelectEvaluators.new(@browser)
184
- end
160
+ action(:select_evaluators) { |p| p.select_evaluators_link.click }
185
161
 
186
162
  # Clicks the Save Changes button and instantiates
187
163
  # the EditMatrixCells Class.
188
- def save_changes
189
- frm.button(:value=>"Save Changes").click
190
- EditMatrixCells.new(@browser)
191
- end
192
-
164
+ action(:save_changes) { |b| b.frm.button(:value=>"Save Changes").click }
193
165
 
194
166
  element(:title) { |b| b.frm.text_field(:id=>"title-id") }
195
167
  element(:use_default_reflection_form) { |b| b.frm.checkbox(:id=>"defaultReflectionForm") }
@@ -209,12 +181,7 @@ class SelectEvaluators < BasePage
209
181
 
210
182
  # Clicks the "Save" button and
211
183
  # instantiates the EditCell Class.
212
- def save
213
- frm.button(:value=>"Save").click
214
- EditCell.new(@browser)
215
- end
216
-
217
-
184
+ action(:save) { |b| b.frm.button(:value=>"Save").click }
218
185
  element(:users) { |b| b.frm.select(:id=>"mainForm:availableUsers") }
219
186
  element(:selected_users) { |b| b.frm.select(:id=>"mainForm:selectedUsers") }
220
187
  element(:roles) { |b| b.frm.select(:id=>"mainForm:audSubV11:availableRoles") }
@@ -233,9 +200,6 @@ class ConfirmPublishMatrix < BasePage
233
200
 
234
201
  # Clicks the "Continue" button and
235
202
  # instantiates the Matrices Class.
236
- def continue
237
- frm.button(:value=>"Continue").click
238
- Matrices.new(@browser)
239
- end
203
+ action(:continue) { |b| b.frm.button(:value=>"Continue").click }
240
204
 
241
205
  end
@@ -25,8 +25,6 @@ class Portfolios < BasePage
25
25
  frm.table(:class=>"listHier ospTable").row(:text=>/#{Regexp.escape(portfolio_name)}/)[5].text
26
26
  end
27
27
 
28
-
29
-
30
28
  end
31
29
 
32
30
  #
@@ -300,7 +300,7 @@ end
300
300
 
301
301
  class CreateFolders < ResourcesBase
302
302
 
303
- thing(:folder_name) { |b| b.frm.text_field(:id=>"content_0") }
303
+ element(:folder_name) { |b| b.frm.text_field(:id=>"content_0") }
304
304
  action(:create_folders_now) { |b| b.frm.button(:value=>"Create Folders Now").click }
305
305
 
306
306
  end
@@ -310,7 +310,7 @@ class EditHTMLPageContent < BasePage
310
310
  frame_element
311
311
  include FCKEditor
312
312
 
313
- thing(:editor) { |b| b.frm.frame(:id=>"content___Frame") }
313
+ element(:editor) { |b| b.frm.frame(:id=>"content___Frame") }
314
314
  action(:continue) { |b| b.frm.button(id: "saveChanges").click }
315
315
  element(:email_notification) { |b| b.frm.select(:id=>"notify") }
316
316
 
@@ -318,8 +318,8 @@ end
318
318
 
319
319
  class EditHTMLPageProperties < ResourcesBase
320
320
 
321
- thing(:name) { |b| b.frm.text_field(id: "displayName_0") }
322
- thing(:description) { |b| b.frm.text_field(id: "description_0") }
321
+ element(:name) { |b| b.frm.text_field(id: "displayName_0") }
322
+ element(:description) { |b| b.frm.text_field(id: "description_0") }
323
323
 
324
324
  action(:finish) { |b| b.frm.button(id: "finish_button").click }
325
325
 
@@ -349,23 +349,23 @@ class ReUseMaterial < SiteSetupBase
349
349
 
350
350
  menu_elements
351
351
 
352
- thing(:announcements_checkbox) { |b| b.frm.checkbox(name: "sakai.announcements") }
353
- thing(:calendar_checkbox) { |b| b.frm.checkbox(name: "sakai.schedule") }
354
- thing(:discussion_forums_checkbox) { |b| b.frm.checkbox(name: "sakai.jforum.tool") }
355
- thing(:forums_checkbox) { |b| b.frm.checkbox(name: "sakai.forums") }
356
- thing(:chat_room_checkbox) { |b| b.frm.checkbox(name: "sakai.chat") }
357
- thing(:polls_checkbox) { |b| b.frm.checkbox(name: "sakai.poll") }
358
- thing(:syllabus_checkbox) { |b| b.frm.checkbox(name: "sakai.syllabus") }
359
- thing(:lessons_checkbox) { |b| b.frm.checkbox(name: "sakai.melete") }
360
- thing(:resources_checkbox) { |b| b.frm.checkbox(name: "sakai.resources") }
361
- thing(:assignments_checkbox) { |b| b.frm.checkbox(name: "sakai.assignment.grades") }
362
- thing(:tests_and_quizzes_checkbox) { |b| b.frm.checkbox(name: "sakai.samigo") }
363
- thing(:gradebook_checkbox) { |b| b.frm.checkbox(name: "sakai.gradebook.tool") }
364
- thing(:gradebook2_checkbox) { |b| b.frm.checkbox(name: "sakai.gradebook.gwt.rpc") }
365
- thing(:wiki_checkbox) { |b| b.frm.checkbox(name: "sakai.rwiki") }
366
- thing(:news_checkbox) { |b| b.frm.checkbox(name: "sakai.news") }
367
- thing(:web_content_checkbox) { |b| b.frm.checkbox(name: "sakai.iframe") }
368
- thing(:site_statistics_checkbox) { |b| b.frm.checkbox(name: "sakai.sitestats") }
352
+ element(:announcements_checkbox) { |b| b.frm.checkbox(name: "sakai.announcements") }
353
+ element(:calendar_checkbox) { |b| b.frm.checkbox(name: "sakai.schedule") }
354
+ element(:discussion_forums_checkbox) { |b| b.frm.checkbox(name: "sakai.jforum.tool") }
355
+ element(:forums_checkbox) { |b| b.frm.checkbox(name: "sakai.forums") }
356
+ element(:chat_room_checkbox) { |b| b.frm.checkbox(name: "sakai.chat") }
357
+ element(:polls_checkbox) { |b| b.frm.checkbox(name: "sakai.poll") }
358
+ element(:syllabus_checkbox) { |b| b.frm.checkbox(name: "sakai.syllabus") }
359
+ element(:lessons_checkbox) { |b| b.frm.checkbox(name: "sakai.melete") }
360
+ element(:resources_checkbox) { |b| b.frm.checkbox(name: "sakai.resources") }
361
+ element(:assignments_checkbox) { |b| b.frm.checkbox(name: "sakai.assignment.grades") }
362
+ element(:tests_and_quizzes_checkbox) { |b| b.frm.checkbox(name: "sakai.samigo") }
363
+ element(:gradebook_checkbox) { |b| b.frm.checkbox(name: "sakai.gradebook.tool") }
364
+ element(:gradebook2_checkbox) { |b| b.frm.checkbox(name: "sakai.gradebook.gwt.rpc") }
365
+ element(:wiki_checkbox) { |b| b.frm.checkbox(name: "sakai.rwiki") }
366
+ element(:news_checkbox) { |b| b.frm.checkbox(name: "sakai.news") }
367
+ element(:web_content_checkbox) { |b| b.frm.checkbox(name: "sakai.iframe") }
368
+ element(:site_statistics_checkbox) { |b| b.frm.checkbox(name: "sakai.sitestats") }
369
369
  action(:continue) { |b| b.frm.button(name: "eventSubmit_doContinue").click }
370
370
 
371
371
  end
@@ -525,11 +525,13 @@ end
525
525
  class ConfirmSiteSetup < BasePage
526
526
 
527
527
  frame_element
528
-
528
+
529
+ element(:request_button) { |b| b.frm.button(:value=>"Request Site") }
530
+
529
531
  # Clicks the Request Site button, then
530
532
  # instantiates the SiteSetup Class.
531
- action(:request_site){ |b| b.frm.button(:value=>"Request Site").click }
532
-
533
+ action(:request_site){ |p| p.request_button.click }
534
+
533
535
  # For portfolio sites...
534
536
  # Clicks the "Create Site" button and
535
537
  # instantiates the SiteSetup class.
@@ -569,17 +571,22 @@ end
569
571
  #
570
572
  class PortfolioSiteInfo < BasePage
571
573
 
574
+ include FCKEditor
572
575
  frame_element
573
576
 
577
+ expected_element :editor
578
+
579
+ element(:editor) { |b| b.frm.frame(:id, "description___Frame") }
580
+
574
581
  def description=(text)
575
- frm.frame(:id, "description___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
582
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
576
583
  end
577
584
 
578
585
  action(:continue) { |b| b.frm.button(:value=>"Continue").click }
579
586
 
580
587
  element(:title) { |b| b.frm.text_field(:id=>"title") }
581
588
  element(:url_alias) { |b| b.frm.text_field(:id=>"alias_0") }
582
- element(:short_description) { |b| b.frm.text_area(:id=>"short_description") }
589
+ element(:short_description) { |b| b.frm.text_field(:id=>"short_description") }
583
590
  element(:icon_url) { |b| b.frm.text_field(:id=>"iconUrl") }
584
591
  element(:site_contact_name) { |b| b.frm.text_field(:id=>"siteContactName") }
585
592
  element(:site_contact_email) { |b| b.frm.text_field(:id=>"siteContactEmail") }
@@ -594,7 +601,8 @@ class PortfolioSiteTools < BasePage
594
601
  action(:continue) { |b| b.frm.button(:value=>"Continue").click }
595
602
 
596
603
  element(:all_tools) { |b| b.frm.checkbox(:id=>"all") }
597
-
604
+ #TODO Add support for individual tool selection
605
+
598
606
  end
599
607
 
600
608
  #
@@ -10,11 +10,7 @@ class Sites < BasePage
10
10
  # Clicks the first site Id link
11
11
  # listed. Useful when you've run a search and
12
12
  # you're certain you've got the result you want.
13
- # It then instantiates the EditSiteInfo page class.
14
- def click_top_item
15
- frm.link(:href, /#{Regexp.escape("&panel=Main&sakai_action=doEdit")}/).click
16
- EditSiteInfo.new(@browser)
17
- end
13
+ action(:click_top_item) { |b| b.frm.link(:href, /#{Regexp.escape("&panel=Main&sakai_action=doEdit")}/).click }
18
14
 
19
15
  # Clicks the specified Site in the list, using the
20
16
  # specified id value to determine which item to click.
@@ -24,15 +20,9 @@ class Sites < BasePage
24
20
  frm.text_field(:id=>"search_site").value=id
25
21
  frm.link(:text=>"Site ID").click
26
22
  frm.link(:text, id).click
27
- EditSiteInfo.new(@browser)
28
23
  end
29
24
 
30
- # Clicks the New Site button, then instantiates
31
- # the EditSiteInfo page class.
32
- def new_site
33
- frm.link(:text, "New Site").click
34
- EditSiteInfo.new(@browser)
35
- end
25
+ action(:new_site) { |b| b.frm.link(:text, "New Site").click }
36
26
 
37
27
  element(:search_field) { |b| b.frm.text_field(:id=>"search") }
38
28
  action(:search_button) { |b| b.frm.link(text=>"Search").click }