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.
- data/Gemfile +3 -5
- data/Gemfile.lock +6 -9
- data/lib/sambal-cle/base_page.rb +21 -3
- data/lib/sambal-cle/data_objects/announcement.rb +1 -1
- data/lib/sambal-cle/data_objects/assignment.rb +3 -2
- data/lib/sambal-cle/data_objects/course.rb +5 -4
- data/lib/sambal-cle/data_objects/event.rb +7 -7
- data/lib/sambal-cle/data_objects/forum.rb +3 -2
- data/lib/sambal-cle/data_objects/lesson.rb +3 -1
- data/lib/sambal-cle/data_objects/resource.rb +3 -1
- data/lib/sambal-cle/page_objects/account.rb +15 -66
- data/lib/sambal-cle/page_objects/aliases.rb +3 -2
- data/lib/sambal-cle/page_objects/announcements.rb +16 -31
- data/lib/sambal-cle/page_objects/assessments.rb +22 -55
- data/lib/sambal-cle/page_objects/assignments.rb +1 -1
- data/lib/sambal-cle/page_objects/blogger.rb +21 -77
- data/lib/sambal-cle/page_objects/blogs.rb +3 -5
- data/lib/sambal-cle/page_objects/calendar.rb +22 -40
- data/lib/sambal-cle/page_objects/chat_room.rb +2 -2
- data/lib/sambal-cle/page_objects/email_archive.rb +1 -2
- data/lib/sambal-cle/page_objects/evaluations.rb +78 -50
- data/lib/sambal-cle/page_objects/feedback.rb +1 -5
- data/lib/sambal-cle/page_objects/forms.rb +14 -55
- data/lib/sambal-cle/page_objects/forums.rb +11 -24
- data/lib/sambal-cle/page_objects/glossary.rb +6 -12
- data/lib/sambal-cle/page_objects/home.rb +7 -18
- data/lib/sambal-cle/page_objects/jforums.rb +60 -197
- data/lib/sambal-cle/page_objects/job_scheduler.rb +16 -49
- data/lib/sambal-cle/page_objects/lessons.rb +11 -34
- data/lib/sambal-cle/page_objects/matrix.rb +12 -14
- data/lib/sambal-cle/page_objects/messages.rb +71 -466
- data/lib/sambal-cle/page_objects/my_workspace.rb +3 -3
- data/lib/sambal-cle/page_objects/podcasts.rb +1 -6
- data/lib/sambal-cle/page_objects/polls.rb +5 -5
- data/lib/sambal-cle/page_objects/portfolio_templates.rb +16 -66
- data/lib/sambal-cle/page_objects/portfolios.rb +17 -67
- data/lib/sambal-cle/page_objects/profile.rb +5 -16
- data/lib/sambal-cle/page_objects/profile2.rb +51 -119
- data/lib/sambal-cle/page_objects/public_search.rb +6 -27
- data/lib/sambal-cle/page_objects/realms.rb +2 -2
- data/lib/sambal-cle/page_objects/resources.rb +89 -116
- data/lib/sambal-cle/page_objects/resources_roster.rb +1 -0
- data/lib/sambal-cle/page_objects/rosters.rb +3 -13
- data/lib/sambal-cle/page_objects/rwiki.rb +2 -6
- data/lib/sambal-cle/page_objects/search.rb +10 -10
- data/lib/sambal-cle/page_objects/sections.rb +40 -81
- data/lib/sambal-cle/page_objects/site_setup.rb +46 -74
- data/lib/sambal-cle/page_objects/sites.rb +24 -110
- data/lib/sambal-cle/page_objects/styles.rb +6 -51
- data/lib/sambal-cle/page_objects/syllabus.rb +12 -26
- data/lib/sambal-cle/page_objects/user_membership.rb +3 -15
- data/lib/sambal-cle/page_objects/users.rb +9 -25
- data/sambal-cle.gemspec +1 -1
- data/test/add_assignment_to_calendar_spec.rb +55 -1
- data/test/config.yml +1 -1
- data/test/duplicate_site_spec.rb +11 -10
- data/test/import_site_content_spec.rb +6 -5
- 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
|
-
|
13
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
76
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
50
|
-
|
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
|
-
|
62
|
-
frm.link(:text=>name).href
|
63
|
-
end
|
52
|
+
action(:href) { |name, b| b.frm.link(:text=>name).href }
|
64
53
|
|
65
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
163
|
-
|
164
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
61
|
+
button "Create Matrix"
|
62
62
|
|
63
63
|
# Clicks the "Save Changes" button
|
64
|
-
|
64
|
+
button "Save Changes"
|
65
65
|
|
66
66
|
# Clicks the "Select Style" link
|
67
|
-
|
67
|
+
link "Select Style"
|
68
68
|
|
69
69
|
# Clicks the "Add Column" link
|
70
|
-
|
70
|
+
link "Add Column"
|
71
71
|
|
72
72
|
# Clicks the "Add Row" link
|
73
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
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
|
-
|
220
|
-
class FolderList < BasePage
|
36
|
+
class MessageFolders < BasePage
|
221
37
|
|
222
38
|
frame_element
|
223
39
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
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
|
-
|
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
|
-
#
|
274
|
-
#
|
275
|
-
|
276
|
-
|
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
|
-
|
285
|
-
|
286
|
-
|
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
|
-
|
289
|
-
|
290
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
425
|
-
frm.div(:class=>"textPanel").text
|
426
|
-
end
|
98
|
+
value(:message_text) { |b| b.frm.div(:class=>"textPanel").text }
|
427
99
|
|
428
|
-
|
429
|
-
frm.button(:value=>"Reply").click
|
430
|
-
ReplyToMessage.new(@browser)
|
431
|
-
end
|
100
|
+
button "Reply"
|
432
101
|
|
433
|
-
|
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
|
-
|
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
|
-
|
447
|
-
|
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
|
-
|
457
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
509
|
-
|
510
|
-
|
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
|
-
|
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
|
-
|
541
|
-
|
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
|
546
|
-
|
547
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
596
|
-
|
597
|
-
|
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
|
-
|
618
|
-
frm.button(:value=>"Delete").click
|
619
|
-
Messages.new(@browser)
|
620
|
-
end
|
225
|
+
button "Delete"
|
621
226
|
|
622
227
|
end
|