sambal-cle 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -9,10 +9,8 @@ class JobScheduler < BasePage
9
9
 
10
10
  # Clicks the Jobs link, then instantiates
11
11
  # the JobList Class.
12
- def jobs
13
- frm.link(:text=>"Jobs").click
14
- JobList.new(@browser)
15
- end
12
+ link "Jobs"
13
+ link "Filter Events"
16
14
 
17
15
  end
18
16
 
@@ -21,26 +19,12 @@ class JobList < BasePage
21
19
 
22
20
  frame_element
23
21
 
24
- # Clicks the New Job link, then
25
- # instantiates the CreateNewJob Class.
26
- def new_job
27
- frm.link(:text=>"New Job").click
28
- CreateNewJob.new(@browser)
29
- end
30
-
31
- # Clicks the link with the text "Triggers" associated with the
32
- # specified job name,
33
- # then instantiates the EditTriggers Class.
34
- def triggers(job_name)
35
- frm.div(:class=>"portletBody").table(:class=>"listHier lines").row(:text=>/#{Regexp.escape(job_name)}/).link(:text=>/Triggers/).click
36
- sleep 1
37
- EditTriggers.new(@browser)
38
- end
39
-
40
- def event_log
41
- frm.link(:text=>"Event Log").click
42
- EventLog.new(@browser)
43
- end
22
+ link "New Job"
23
+ link "Delete"
24
+ link "Event Log"
25
+
26
+ action(:triggers) { |job_name, b| b.frm.div(:class=>"portletBody").table(:class=>"listHier lines").row(:text=>/#{Regexp.escape(job_name)}/).link(:text=>/Triggers/).click }
27
+ element(:check) { |job_name, b| b.frm.div(:class=>"portletBody").table(:class=>"listHier lines").row(:text=>/#{Regexp.escape(job_name)}/).checkbox }
44
28
 
45
29
  end
46
30
 
@@ -51,13 +35,11 @@ class CreateNewJob < BasePage
51
35
 
52
36
  # Clicks the Post button, then
53
37
  # instantiates the JobList Class.
54
- def post
55
- frm.button(:value=>"Post").click
56
- JobList.new(@browser)
57
- end
38
+ button "Post"
58
39
 
59
40
  element(:job_name) { |b| b.frm.text_field(:id=>"_id2:job_name") }
60
41
  element(:type) { |b| b.frm.select_list(:name=>"_id2:_id10") }
42
+
61
43
  end
62
44
 
63
45
  # The page for Editing Triggers
@@ -67,20 +49,10 @@ class EditTriggers < BasePage
67
49
 
68
50
  # Clicks the "Run Job Now" link, then
69
51
  # instantiates the RunJobConfirmation Class.
70
- def run_job_now
71
- frm.div(:class=>"portletBody").link(:text=>"Run Job Now").click
72
- RunJobConfirmation.new(@browser)
73
- end
52
+ action(:run_job_now) { |b| b.frm.div(:class=>"portletBody").link(:text=>"Run Job Now").click }
74
53
 
75
- def return_to_jobs
76
- frm.link(:text=>"Return_to_Jobs").click
77
- JobList.new(@browser)
78
- end
79
-
80
- def new_trigger
81
- frm.link(:text=>"New Trigger").click
82
- CreateTrigger.new(@browser)
83
- end
54
+ link "Return_to_Jobs"
55
+ link "New Trigger"
84
56
 
85
57
  end
86
58
 
@@ -89,13 +61,11 @@ class CreateTrigger < BasePage
89
61
 
90
62
  frame_element
91
63
 
92
- def post
93
- frm.button(:value=>"Post").click
94
- EditTriggers.new(@browser)
95
- end
64
+ button "Post"
96
65
 
97
66
  element(:name) { |b| b.frm.text_field(:id=>"_id2:trigger_name") }
98
67
  element(:cron_expression) { |b| b.frm.text_field(:id=>"_id2:trigger_expression") }
68
+
99
69
  end
100
70
 
101
71
 
@@ -106,10 +76,7 @@ class RunJobConfirmation < BasePage
106
76
 
107
77
  # Clicks the "Run Now" button, then
108
78
  # instantiates the JobList Class.
109
- def run_now
110
- frm.button(:value=>"Run Now").click
111
- JobList.new(@browser)
112
- end
79
+ button "Run Now"
113
80
 
114
81
  end
115
82
 
@@ -46,29 +46,14 @@ class Lessons < LessonsBase
46
46
  action(:archive) { |b| b.frm.link(text: "Archive").click }
47
47
  action(:move_sections) { |b| b.frm.link(text: "Move Section(s)").click }
48
48
 
49
- # Clicks on the link that matches the supplied
50
- # name value, next is the
51
- # AddEditLesson, or ViewLesson class, depending
52
- # on which page loads.
53
- #
54
- # Will error out if there is no
55
- # matching link in the list.
56
- def open_lesson(name)
57
- frm.link(:text=>name).click
58
- end
59
- alias open_section open_lesson
49
+ action(:open_lesson) { |name, b| b.frm.link(:text=>name).click }
50
+ alias :open_section :open_lesson
60
51
 
61
- def href(name)
62
- frm.link(:text=>name).href
63
- end
52
+ action(:href) { |name, b| b.frm.link(:text=>name).href }
64
53
 
65
- def check_lesson(name)
66
- frm.tr(text: /#{Regexp.escape(name)}/).td(class: "ModCheckClass").checkbox.set
67
- end
54
+ action(:check_lesson) { |name, b| b.frm.tr(text: /#{Regexp.escape(name)}/).td(class: "ModCheckClass").checkbox.set }
68
55
 
69
- def check_section(name)
70
- frm.td(class: "SectionClass", text: /#{Regexp.escape(name)}/).checkbox.set
71
- end
56
+ action(:check_section) { |name, b| b.frm.td(class: "SectionClass", text: /#{Regexp.escape(name)}/).checkbox.set }
72
57
 
73
58
  # Returns an array of the Module titles displayed on the page.
74
59
  def lessons_list
@@ -108,7 +93,7 @@ class ViewModule < LessonsBase
108
93
  return list
109
94
  end
110
95
 
111
- action(:next) { |b| b.frm.link(:text=>"Next").click }
96
+ link "Next"
112
97
 
113
98
  # Returns the text of the Module title row
114
99
  value(:module_title) { |b| b.frm.span(:id=>/modtitle/).text }
@@ -129,14 +114,10 @@ class ViewModuleList < LessonsBase
129
114
  menu_elements
130
115
 
131
116
  # LessonStudentSide
132
- def open_lesson(name)
133
- frm.link(:text=>name).click
134
- end
117
+ action(:open_lesson) { |name, b| b.frm.link(:text=>name).click }
135
118
 
136
119
  # SectionStudentSide
137
- def open_section(name)
138
- frm.link(:text=>name).click
139
- end
120
+ action(:open_section) { |name, b| b.frm.link(:text=>name).click }
140
121
 
141
122
  end
142
123
 
@@ -159,13 +140,9 @@ class LessonManage < LessonsBase
159
140
 
160
141
  menu_elements
161
142
 
162
- action(:manage_content) {|b| b.frm.link(:text=>"Manage Content").click }
163
-
164
- action(:sort) {|b| b.frm.link(:text=>"Sort").click }
165
-
166
- # Clicks the Import/Export button and
167
- # next is the LessonImportExport class.
168
- action(:import_export) {|b| b.frm.link(:text=>"Import/Export").click }
143
+ link "Manage Content"
144
+ link "Sort"
145
+ link "Import/Export"
169
146
 
170
147
  end
171
148
 
@@ -9,11 +9,11 @@ class Matrices < BasePage
9
9
 
10
10
  # Clicks the Add link and instantiates
11
11
  # the AddEditMatrix Class.
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 }
12
+ link "Add"
13
+ link "Import"
14
+ link "Manage Site Associations"
15
+ link "Permissions"
16
+ link "My Preferences"
17
17
 
18
18
  # Clicks the "Edit" link for the specified
19
19
  # Matrix item, then instantiates the EditMatrixCells.
@@ -58,19 +58,19 @@ class AddEditMatrix < BasePage
58
58
  element(:editor) { |b| b.frm.frame(:id=>"descriptionTextArea___Frame") }
59
59
 
60
60
  # Clicks the "Create Matrix" button
61
- action(:create_matrix) { |b| b.frm.button(:value=>"Create Matrix").click }
61
+ button "Create Matrix"
62
62
 
63
63
  # Clicks the "Save Changes" button
64
- action(:save_changes) { |b| b.frm.button(:value=>"Save Changes").click }
64
+ button "Save Changes"
65
65
 
66
66
  # Clicks the "Select Style" link
67
- action(:select_style) { |b| b.frm.link(:text=>"Select Style").click }
67
+ link "Select Style"
68
68
 
69
69
  # Clicks the "Add Column" link
70
- action(:add_column) { |b| b.frm.link(:text=>"Add Column").click }
70
+ link "Add Column"
71
71
 
72
72
  # Clicks the "Add Row" link
73
- action(:add_row) { |b| b.frm.link(:text=>"Add Row").click }
73
+ link "Add Row"
74
74
 
75
75
  element(:title) { |b| b.frm.text_field(:id=>"title-id") }
76
76
 
@@ -81,9 +81,7 @@ class SelectMatrixStyle < BasePage
81
81
 
82
82
  frame_element
83
83
 
84
- # Clicks the "Go Back" button and
85
- # instantiates the AddEditMatrix Class.
86
- action(:go_back) { |b| b.frm.button(:value=>"Go Back").click }
84
+ button "Go Back"
87
85
 
88
86
  # Clicks the "Select" link for the specified
89
87
  # Style, then instantiates the AddEditMatrix Class.
@@ -96,7 +94,7 @@ class RowColumnCommon < BasePage
96
94
  frame_element
97
95
  class << self
98
96
  def table_elements
99
- action(:update) { |b| b.frm.button(:value=>"Update").click }
97
+ button "Update"
100
98
  element(:name) { |b| b.frm.text_field(:name=>"description") }
101
99
  element(:background_color) { |b| b.frm.text_field(:id=>"color-id") }
102
100
  element(:font_color) { |b| b.frm.text_field(:id=>"textColor-id") }
@@ -2,188 +2,19 @@ class Messages < BasePage
2
2
 
3
3
  frame_element
4
4
 
5
- # Clicks the Compose Message button,
6
- # then instantiates the
7
- # ComposeMessage class.
8
- def compose_message
9
- frm.link(:text=>"Compose Message").click
10
- sleep 1 #FIXME
11
- ComposeMessage.new(@browser)
12
- end
13
-
14
- def received
15
- frm.link(:text=>"Received").click
16
- MessagesReceivedList.new(@browser)
17
- end
18
-
19
- def sent
20
- frm.link(:text=>"Sent").click
21
- MessagesSentList.new(@browser)
22
- end
23
-
24
- def deleted
25
- frm.link(:text=>"Deleted").click
26
- MessagesDeletedList.new(@browser)
27
- end
28
-
29
- def draft
30
- frm.link(:text=>"Draft").click
31
- MessagesDraftList.new(@browser)
32
- end
33
-
34
- def open_folder(foldername)
35
- frm.link(:text=>foldername).click
36
- FolderList.new(@browser)
37
- end
38
-
39
- def new_folder
40
- frm.link(:text=>"New Folder").click
41
- MessagesNewFolder.new(@browser)
42
- end
43
-
44
- def settings
45
- frm.link(:text=>"Settings").click
46
- MessagesSettings.new(@browser)
47
- end
48
-
49
- # Gets the count of messages
50
- # in the specified folder
51
- # and returns it as a string
52
- def total_messages_in_folder(folder_name)
53
- frm.table(:id=>"msgForum:_id23:0:privateForums").row(:text=>/#{Regexp.escape(folder_name)}/).span(:class=>"textPanelFooter", :index=>0).text =~ /\d+/
54
- return $~.to_s
55
- end
56
-
57
- # Gets the count of unread messages
58
- # in the specified folder and returns it
59
- # as a string
60
- def unread_messages_in_folder(folder_name)
61
- frm.table(:id=>"msgForum:_id23:0:privateForums").row(:text=>/#{Regexp.escape(folder_name)}/).span(:text=>/unread/).text =~ /\d+/
62
- return $~.to_s
63
- end
64
-
65
- # Gets all the folder names
66
- def folders
67
- links = frm.table(:class=>"hierItemBlockWrapper").links.find_all { |link| link.title != /Folder Settings/ }
68
- folders = []
69
- links.each { |link| folders << link.text }
70
- return folders
71
- end
72
-
73
- def folder_settings(folder_name)
74
- frm.table(:class=>"hierItemBlockWrapper").row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Folder Settings").click
75
- MessageFolderSettings.new(@browser)
76
- end
77
- end
78
-
79
- class MessagesSentList < BasePage
80
-
81
- frame_element
82
-
83
- # Clicks the "Messages" breadcrumb link to return
84
- # to the top level of Messages. Then instantiates
85
- # the Messages class.
86
- def messages
87
- frm.link(:text=>"Messages").click
88
- Messages.new(@browser)
89
- end
90
-
91
- # Creates an array consisting of the
92
- # message subject lines.
93
- def subjects
94
- titles = []
95
- messages = frm.table(:id=>"prefs_pvt_form:pvtmsgs")
96
- 1.upto(messages.rows.size-1) do |x|
97
- titles << messages.row(:index=>x).a.title
98
- end
99
- return titles
100
- end
101
-
102
- # Returns a string consisting of the content of the
103
- # page header--or "breadcrumb", as it's called.
104
- def header
105
- frm.div(:class=>"breadCrumb specialLink").text
106
- end
107
-
108
- # Clicks the Compose Message button,
109
- # then instantiates the
110
- # ComposeMessage class.
111
- def compose_message
112
- frm.link(:text=>"Compose Message").click
113
- ComposeMessage.new(@browser)
114
- end
115
-
116
- # Grabs the text from the message
117
- # box that appears after doing some
118
- # action.
119
- #
120
- # Use this method to simplify writing
121
- # Test::Unit asserts
122
- def alert_message_text
123
- frm.span(:class=>"success").text
124
- end
125
-
126
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
127
-
128
- end
129
-
130
- class MessagesReceivedList < BasePage
131
-
132
- frame_element
133
-
134
- # Returns a string consisting of the content of the
135
- # page header--or "breadcrumb", as it's called.
136
- def header
137
- frm.div(:class=>"breadCrumb specialLink").text
138
- end
139
-
140
- # Clicks the "Messages" breadcrumb link to return
141
- # to the top level of Messages. Then instantiates
142
- # the Messages class.
143
- def messages
144
- frm.link(:text=>"Messages").click
145
- Messages.new(@browser)
146
- end
147
-
148
- def compose_message
149
- frm.link(:text=>"Compose Message").click
150
- ComposeMessage.new(@browser)
151
- end
152
-
153
- # Clicks on the specified message subject
154
- # then instantiates the MessageView class.
155
- def open_message(subject)
156
- frm.link(:text, /#{Regexp.escape(subject)}/).click
157
- MessageView.new(@browser)
158
- end
159
-
160
- # Grabs the text from the message
161
- # box that appears after doing some
162
- # action.
163
- #
164
- # Use this method to simplify writing
165
- # Test::Unit asserts
166
- def alert_message_text
167
- frm.span(:class=>"success").text
168
- end
169
-
170
- # Checks the checkbox for the specified
171
- # message in the list.
172
- #
173
- # Will throw an error if the specified
174
- # subject is not present.
175
- def check_message(subject)
5
+ value(:header) { |b| b.frm.div(:class=>"breadCrumb specialLink").text }
6
+ value(:alert_message_text) { |b| b.frm.span(:class=>"success").text }
7
+ link "Compose Message"
8
+ link "Messages"
9
+ action(:open_message) { |subject, b| b.frm.link(:text, /#{Regexp.escape(subject)}/).click }
10
+ action(:check_message) { |subject, b|
176
11
  index=subjects.index(subject)
177
- frm.checkbox(:name=>"prefs_pvt_form:pvtmsgs:#{index}:_id122").set
178
- end
179
-
180
- # Clicks the "Mark Read" link, then
181
- # reinstantiates the class because
182
- # the page partially refreshes.
183
- def mark_read
184
- frm.link(:text=>"Mark Read").click
185
- MessagesReceivedList.new(@browser)
186
- end
12
+ b.frm.checkbox(:name=>"prefs_pvt_form:pvtmsgs:#{index}:_id122").set }
13
+ link "Mark Read"
14
+ element(:view) { |b| b.frm.select(:id=>"prefs_pvt_form:viewlist") }
15
+ link "Check All"
16
+ link "Delete"
17
+ link "Move"
187
18
 
188
19
  # Creates an array consisting of the
189
20
  # message subject lines.
@@ -196,103 +27,44 @@ class MessagesReceivedList < BasePage
196
27
  return titles
197
28
  end
198
29
 
199
- # Returns an Array object containing the
200
- # subjects of the displayed messages that are
201
- # marked unread.
202
30
  def unread_messages
203
31
  # TODO - Write this method
204
32
  end
205
33
 
206
- # Clicks the Move link, then
207
- # instantiates the MoveMessageTo Class.
208
- def move
209
- frm.link(:text, "Move").click
210
- MoveMessageTo.new(@browser)
211
- end
212
-
213
- element(:view) { |b| b.frm.select(:id=>"prefs_pvt_form:viewlist") }
214
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
215
- action(:delete) { |b| b.frm.link(:text=>"Delete").click }
216
-
217
34
  end
218
35
 
219
- # Page for the Contents of a Custom Folder for Messages
220
- class FolderList < BasePage
36
+ class MessageFolders < BasePage
221
37
 
222
38
  frame_element
223
39
 
224
- def compose_message
225
- frm.link(:text=>"Compose Message").click
226
- ComposeMessage.new(@browser)
227
- end
228
-
229
- # Clicks on the specified message subject
230
- # then instantiates the MessageView class.
231
- def open_message(subject)
232
- frm.link(:text, /#{Regexp.escape(subject)}/).click
233
- MessageView.new(@browser)
234
- end
235
-
236
- # Grabs the text from the message
237
- # box that appears after doing some
238
- # action.
239
- #
240
- # Use this method to simplify writing
241
- # Test::Unit asserts
242
- def alert_message_text
243
- frm.span(:class=>"success").text
244
- end
245
-
246
- # Checks the checkbox for the specified
247
- # message in the list.
248
- #
249
- # Will throw an error if the specified
250
- # subject is not present.
251
- def check_message(subject)
252
- index=subjects.index(subject)
253
- frm.checkbox(:name=>"prefs_pvt_form:pvtmsgs:#{index}:_id122").set
254
- end
40
+ link "Received"
41
+ link "Sent"
42
+ link "Deleted"
43
+ link "Draft"
44
+ link "New Folder"
45
+ link "Settings"
255
46
 
256
- # Clicks the Messages link in the
257
- # Breadcrumb bar at the top of the
258
- # page, then instantiates the Messages
259
- # class
260
- def messages
261
- frm.link(:text=>"Messages").click
262
- Messages.new(@browser)
263
- end
264
-
265
- # Clicks the "Mark Read" link, then
266
- # reinstantiates the class because
267
- # the page partially refreshes.
268
- def mark_read
269
- frm.link(:text=>"Mark Read").click
270
- MessagesReceivedList.new(@browser)
271
- end
47
+ action(:open_folder) { |foldername, b| b.frm.link(:text=>foldername).click }
272
48
 
273
- # Creates an array consisting of the
274
- # message subject lines.
275
- def subjects
276
- titles = []
277
- messages = frm.table(:id=>"prefs_pvt_form:pvtmsgs")
278
- 1.upto(messages.rows.size-1) do |x|
279
- titles << messages.row(:index=>x).a.title
280
- end
281
- return titles
282
- end
49
+ # Gets the count of messages
50
+ # in the specified folder
51
+ # and returns it as a string
52
+ action(:total_messages_in_folder) { |folder_name, b| b.frm.table(:id=>"msgForum:_id23:0:privateForums").row(:text=>/#{Regexp.escape(folder_name)}/).span(:class=>"textPanelFooter", :index=>0).text =~ /\d+/; return $~.to_s }
283
53
 
284
- def unread_messages
285
- # TODO - Write this method
286
- end
54
+ # Gets the count of unread messages
55
+ # in the specified folder and returns it
56
+ # as a string
57
+ action(:unread_messages_in_folder) { |folder_name, b| b.frm.table(:id=>"msgForum:_id23:0:privateForums").row(:text=>/#{Regexp.escape(folder_name)}/).span(:text=>/unread/).text =~ /\d+/; return $~.to_s }
287
58
 
288
- def move
289
- frm.link(:text, "Move").click
290
- MoveMessageTo.new(@browser)
59
+ # Gets all the folder names
60
+ def folders
61
+ links = frm.table(:class=>"hierItemBlockWrapper").links.find_all { |link| link.title != /Folder Settings/ }
62
+ folders = []
63
+ links.each { |link| folders << link.text }
64
+ return folders
291
65
  end
292
66
 
293
- element(:view) { |b| b.frm.select(:id=>"prefs_pvt_form:viewlist") }
294
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
295
- action(:delete) { |b| b.frm.link(:text=>"Delete").click }
67
+ action(:folder_settings) { |folder_name, b| b.frm.table(:class=>"hierItemBlockWrapper").row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Folder Settings").click }
296
68
 
297
69
  end
298
70
 
@@ -302,18 +74,13 @@ class MoveMessageTo < BasePage
302
74
 
303
75
  frame_element
304
76
 
305
- def move_messages
306
- frm.button(:value=>"Move Messages").click
307
- Messages.new(@browser)
308
- end
77
+ button "Move Messages"
309
78
 
310
79
  # Method for selecting any custom folders
311
80
  # present on the screen--and *only* the custom
312
81
  # folders. Count begins with "1" for the first custom
313
82
  # folder listed.
314
- def select_custom_folder_num(num)
315
- frm.radio(:index=>num.to_i+3).set
316
- end
83
+ action(:select_custom_folder_num) { |num, b| b.frm.radio(:index=>num.to_i+3).set }
317
84
 
318
85
  element(:received) { |b| b.frm.radio(:name=>"pvtMsgMove:_id16:0:privateForums:0:_id19") }
319
86
  element(:sent) { |b| b.frm.radio(:name=>"pvtMsgMove:_id16:0:privateForums:1:_id19") }
@@ -322,159 +89,43 @@ class MoveMessageTo < BasePage
322
89
 
323
90
  end
324
91
 
325
- # The page showing the list of deleted messages.
326
- class MessagesDeletedList < BasePage
327
-
328
- frame_element
329
-
330
- # Returns a string consisting of the content of the
331
- # page header--or "breadcrumb", as it's called.
332
- def header
333
- frm.div(:class=>"breadCrumb specialLink").text
334
- end
335
-
336
- # Clicks the "Messages" breadcrumb link to return
337
- # to the top level of Messages. Then instantiates
338
- # the Messages class.
339
- def messages
340
- frm.link(:text=>"Messages").click
341
- Messages.new(@browser)
342
- end
343
-
344
- def compose_message
345
- frm.link(:text=>"Compose Message").click
346
- ComposeMessage.new(@browser)
347
- end
348
-
349
- # Grabs the text from the message
350
- # box that appears after doing some
351
- # action.
352
- #
353
- # Use this method to simplify writing
354
- # Test::Unit asserts
355
- def alert_message_text
356
- frm.span(:class=>"success").text
357
- end
358
-
359
- # Creates an array consisting of the
360
- # message subject lines.
361
- def subjects
362
- titles = []
363
- messages = frm.table(:id=>"prefs_pvt_form:pvtmsgs")
364
- 1.upto(messages.rows.size-1) do |x|
365
- titles << messages[x][2].text
366
- end
367
- return titles
368
- end
369
-
370
- # Checks the checkbox for the specified
371
- # message in the list.
372
- #
373
- # Will throw an error if the specified
374
- # subject is not present.
375
- def check_message(subject)
376
- index=subjects.index(subject)
377
- frm.checkbox(:name=>"prefs_pvt_form:pvtmsgs:#{index}:_id122").set
378
- end
379
-
380
- def move
381
- frm.link(:text, "Move").click
382
- MoveMessageTo.new(@browser)
383
- end
384
-
385
- def delete
386
- frm.link(:text=>"Delete").click
387
- MessageDeleteConfirmation.new(@browser)
388
- end
389
-
390
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
391
-
392
- end
393
-
394
- # The page showing the list of Draft messages.
395
- class MessagesDraftList < BasePage
396
-
397
- frame_element
398
-
399
- def compose_message
400
- frm.link(:text=>"Compose Message").click
401
- ComposeMessage.new(@browser)
402
- end
403
-
404
- # Grabs the text from the message
405
- # box that appears after doing some
406
- # action.
407
- #
408
- # Use this method to simplify writing
409
- # Test::Unit asserts
410
- def alert_message_text
411
- frm.span(:class=>"success").text
412
- end
413
-
414
- action(:check_all) { |b| b.frm.link(:text=>"Check All").click }
415
-
416
- end
417
-
418
92
  # The Page where you are reading a Message.
419
93
  class MessageView < BasePage
420
94
 
421
95
  frame_element
422
96
 
423
97
  # Returns the contents of the message body.
424
- def message_text
425
- frm.div(:class=>"textPanel").text
426
- end
98
+ value(:message_text) { |b| b.frm.div(:class=>"textPanel").text }
427
99
 
428
- def reply
429
- frm.button(:value=>"Reply").click
430
- ReplyToMessage.new(@browser)
431
- end
100
+ button "Reply"
432
101
 
433
- def forward
434
- frm.button(:value=>"Forward ").click
435
- ForwardMessage.new(@browser)
436
- end
102
+ action(:forward) { |b| b.frm.button(:value=>"Forward ").click }
437
103
 
438
- def received
439
- frm.link(:text=>"Received").click
440
- MessagesReceivedList.new(@browser)
441
- end
104
+ link "Received"
442
105
 
443
106
  # Clicks the "Messages" breadcrumb link to return
444
107
  # to the top level of Messages. Then instantiates
445
108
  # the Messages class.
446
- def messages
447
- frm.link(:text=>"Messages").click
448
- Messages.new(@browser)
449
- end
109
+ link "Messages"
110
+
450
111
  end
451
112
 
452
113
  class ComposeMessage < BasePage
453
114
 
115
+ include FCKEditor
454
116
  frame_element
117
+ expected_element :editor
455
118
 
456
- def send
457
- frm.button(:value=>"Send ").click
458
- Messages.new(@browser)
459
- end
119
+ element(:editor) { |b| b.frm.frame(:id, "compose:pvt_message_body_inputRichText___Frame") }
120
+ action(:send) { |b| b.frm.button(:value=>"Send ").click }
460
121
 
461
122
  def message_text=(text)
462
- frm.frame(:id, "compose:pvt_message_body_inputRichText___Frame").td(:id, "xEditingArea").wait_until_present
463
- sleep 0.3
464
- frm.frame(:id, "compose:pvt_message_body_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
465
- end
466
-
467
- def add_attachments
468
- frm.button(:value=>"Add attachments").click
469
- MessagesAttachment.new(@browser)
470
- end
471
-
472
- def preview
473
- frm.button(:value=>"Preview").click
474
- MessagesPreview.new(@browser)
123
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
475
124
  end
476
125
 
477
- action(:save_draft) {|b| b.frm.button(:value=>"Save Draft").click }
126
+ button "Add attachments"
127
+ button "Preview"
128
+ button "Save Draft"
478
129
  element(:send_to) { |b| b.frm.select(:id=>"compose:list1") }
479
130
  element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
480
131
  element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
@@ -488,34 +139,16 @@ class ReplyToMessage < BasePage
488
139
  expected_element :editor
489
140
 
490
141
  element(:editor) { |b| b.frm.frame(:id, "pvtMsgReply:df_compose_body_inputRichText___Frame") }
491
-
492
- def send
493
- frm.button(:value=>"Send ").click
494
- # Need logic here to ensure the
495
- # right class gets called...
496
- if frm.div(:class=>/breadCrumb/).text=~ /Messages.\/.Received/
497
- MessagesReceivedList.new(@browser)
498
- else #FIXME
499
- Messages.new(@browser)
500
- end
501
- end
142
+ action(:send) { |b| b.frm.button(:value=>"Send ").click }
502
143
 
503
144
  def message_text=(text)
504
145
  editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
505
146
  editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
506
147
  end
507
148
 
508
- def add_attachments
509
- frm.button(:value=>"Add attachments").click
510
- MessagesAttachment.new(@browser)
511
- end
512
-
513
- def preview
514
- frm.button(:value=>"Preview").click
515
- MessagesPreview.new(@browser)
516
- end
517
-
518
- action(:save_draft) {|b| b.frm.button(:value=>"Save Draft").click }
149
+ button "Add attachments"
150
+ button "Preview"
151
+ button "Save Draft"
519
152
  element(:select_additional_recipients) { |b| b.frm.select(:id=>"compose:list1") }
520
153
  element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
521
154
  element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
@@ -524,30 +157,22 @@ end
524
157
 
525
158
  # The page for composing a message
526
159
  class ForwardMessage < BasePage
527
-
160
+ include FCKEditor
528
161
  frame_element
529
162
 
530
- def send
531
- frm.button(:value=>"Send ").click
532
- MessagesReceivedList.new(@browser) #FIXME!
533
- end
534
-
535
- def message_text=(text)
536
- frm.frame(:id, "pvtMsgForward:df_compose_body_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
537
- frm.frame(:id, "pvtMsgForward:df_compose_body_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
538
- end
163
+ expected_element :editor
539
164
 
540
- def add_attachments
541
- frm.button(:value=>"Add attachments").click
542
- MessagesAttachment.new(@browser)
543
- end
165
+ element(:editor) { |b| b.frm.frame(:id, "pvtMsgForward:df_compose_body_inputRichText___Frame") }
166
+ action(:send) { |b| b.frm.button(:value=>"Send ").click }
544
167
 
545
- def preview
546
- frm.button(:value=>"Preview").click
547
- MessagesPreview.new(@browser)
168
+ def message_text=(text)
169
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
170
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
548
171
  end
549
172
 
550
- action(:save_draft) {|b| b.frm.button(:value=>"Save Draft").click }
173
+ button "Add attachments"
174
+ button "Preview"
175
+ button "Save Draft"
551
176
  element(:select_forward_recipients) { |b| b.frm.select(:id=>"pvtMsgForward:list1") }
552
177
  element(:send_cc) { |b| b.frm.checkbox(:id=>"compose:send_email_out") }
553
178
  element(:subject) { |b| b.frm.text_field(:id=>"compose:subject") }
@@ -563,10 +188,7 @@ class MessageDeleteConfirmation < BasePage
563
188
 
564
189
  value(:alert_message_text) { |b| b.frm.span(:class=>"alertMessage").text }
565
190
 
566
- def delete_messages
567
- frm.button(:value=>"Delete Message(s)").click
568
- MessagesDeletedList.new(@browser)
569
- end
191
+ button "Delete Message(s)"
570
192
 
571
193
  #FIXME
572
194
  # Want eventually to have a method that will return
@@ -578,10 +200,7 @@ class MessagesNewFolder < BasePage
578
200
 
579
201
  frame_element
580
202
 
581
- def add
582
- frm.button(:value=>"Add").click
583
- Messages.new(@browser)
584
- end
203
+ button"Add"
585
204
 
586
205
  element(:title) { |b| b.frm.text_field(:id=>"pvtMsgFolderAdd:title") }
587
206
 
@@ -592,20 +211,9 @@ class MessageFolderSettings < BasePage
592
211
 
593
212
  frame_element
594
213
 
595
- def rename_folder
596
- frm.button(:value=>"Rename Folder").click
597
- RenameMessageFolder.new(@browser)
598
- end
599
-
600
- def add
601
- frm.button(:value=>"Add").click
602
- MessagesNewFolder.new(@browser)
603
- end
604
-
605
- def delete
606
- frm.button(:value=>"Delete").click
607
- FolderDeleteConfirm.new(@browser)
608
- end
214
+ button "Rename Folder"
215
+ button "Add"
216
+ button "Delete"
609
217
 
610
218
  end
611
219
 
@@ -614,9 +222,6 @@ class FolderDeleteConfirm < BasePage
614
222
 
615
223
  frame_element
616
224
 
617
- def delete
618
- frm.button(:value=>"Delete").click
619
- Messages.new(@browser)
620
- end
225
+ button "Delete"
621
226
 
622
227
  end