sambal-cle 0.1.3
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.
- data/README.md +4 -0
- data/lib/sambal-cle/base_page.rb +20 -0
- data/lib/sambal-cle/core-ext.rb +90 -0
- data/lib/sambal-cle/data_objects/announcement.rb +82 -0
- data/lib/sambal-cle/data_objects/assessment.rb +32 -0
- data/lib/sambal-cle/data_objects/assignment.rb +205 -0
- data/lib/sambal-cle/data_objects/blog.rb +46 -0
- data/lib/sambal-cle/data_objects/blogger.rb +49 -0
- data/lib/sambal-cle/data_objects/chat_room.rb +54 -0
- data/lib/sambal-cle/data_objects/event.rb +89 -0
- data/lib/sambal-cle/data_objects/forum.rb +212 -0
- data/lib/sambal-cle/data_objects/lesson.rb +185 -0
- data/lib/sambal-cle/data_objects/message.rb +57 -0
- data/lib/sambal-cle/data_objects/poll.rb +74 -0
- data/lib/sambal-cle/data_objects/resource.rb +209 -0
- data/lib/sambal-cle/data_objects/site.rb +295 -0
- data/lib/sambal-cle/data_objects/syllabus.rb +73 -0
- data/lib/sambal-cle/data_objects/web_content_tool.rb +51 -0
- data/lib/sambal-cle/data_objects/wiki.rb +63 -0
- data/lib/sambal-cle/date_makers.rb +118 -0
- data/lib/sambal-cle/gem_ext.rb +23 -0
- data/lib/sambal-cle/page_helper.rb +22 -0
- data/lib/sambal-cle/page_maker.rb +48 -0
- data/lib/sambal-cle/page_objects/account.rb +111 -0
- data/lib/sambal-cle/page_objects/aliases.rb +43 -0
- data/lib/sambal-cle/page_objects/announcements.rb +190 -0
- data/lib/sambal-cle/page_objects/assessments.rb +874 -0
- data/lib/sambal-cle/page_objects/assignments.rb +770 -0
- data/lib/sambal-cle/page_objects/basic_lti.rb +6 -0
- data/lib/sambal-cle/page_objects/blogger.rb +205 -0
- data/lib/sambal-cle/page_objects/blogs.rb +60 -0
- data/lib/sambal-cle/page_objects/calendar.rb +330 -0
- data/lib/sambal-cle/page_objects/calendar_summary.rb +1 -0
- data/lib/sambal-cle/page_objects/chat_room.rb +22 -0
- data/lib/sambal-cle/page_objects/drop_box.rb +9 -0
- data/lib/sambal-cle/page_objects/email_archive.rb +22 -0
- data/lib/sambal-cle/page_objects/entity_picker.rb +62 -0
- data/lib/sambal-cle/page_objects/evaluations.rb +158 -0
- data/lib/sambal-cle/page_objects/feedback.rb +36 -0
- data/lib/sambal-cle/page_objects/forms.rb +120 -0
- data/lib/sambal-cle/page_objects/forums.rb +254 -0
- data/lib/sambal-cle/page_objects/glossary.rb +117 -0
- data/lib/sambal-cle/page_objects/gradebook.rb +29 -0
- data/lib/sambal-cle/page_objects/gradebook2.rb +17 -0
- data/lib/sambal-cle/page_objects/home.rb +36 -0
- data/lib/sambal-cle/page_objects/jforums.rb +444 -0
- data/lib/sambal-cle/page_objects/job_scheduler.rb +121 -0
- data/lib/sambal-cle/page_objects/lessons.rb +361 -0
- data/lib/sambal-cle/page_objects/login.rb +28 -0
- data/lib/sambal-cle/page_objects/matrix.rb +241 -0
- data/lib/sambal-cle/page_objects/media_gallery.rb +13 -0
- data/lib/sambal-cle/page_objects/messages.rb +622 -0
- data/lib/sambal-cle/page_objects/my_workspace.rb +44 -0
- data/lib/sambal-cle/page_objects/news.rb +8 -0
- data/lib/sambal-cle/page_objects/podcasts.rb +27 -0
- data/lib/sambal-cle/page_objects/polls.rb +69 -0
- data/lib/sambal-cle/page_objects/portfolio_templates.rb +161 -0
- data/lib/sambal-cle/page_objects/portfolios.rb +162 -0
- data/lib/sambal-cle/page_objects/post_em.rb +1 -0
- data/lib/sambal-cle/page_objects/profile.rb +51 -0
- data/lib/sambal-cle/page_objects/profile2.rb +344 -0
- data/lib/sambal-cle/page_objects/public_search.rb +61 -0
- data/lib/sambal-cle/page_objects/realms.rb +19 -0
- data/lib/sambal-cle/page_objects/resources.rb +326 -0
- data/lib/sambal-cle/page_objects/resources_roster.rb +0 -0
- data/lib/sambal-cle/page_objects/rosters.rb +70 -0
- data/lib/sambal-cle/page_objects/rwiki.rb +34 -0
- data/lib/sambal-cle/page_objects/search.rb +34 -0
- data/lib/sambal-cle/page_objects/sections.rb +295 -0
- data/lib/sambal-cle/page_objects/single_user.rb +1 -0
- data/lib/sambal-cle/page_objects/site_setup.rb +621 -0
- data/lib/sambal-cle/page_objects/site_statistics.rb +1 -0
- data/lib/sambal-cle/page_objects/sites.rb +255 -0
- data/lib/sambal-cle/page_objects/styles.rb +74 -0
- data/lib/sambal-cle/page_objects/syllabus.rb +166 -0
- data/lib/sambal-cle/page_objects/user_membership.rb +57 -0
- data/lib/sambal-cle/page_objects/users.rb +88 -0
- data/lib/sambal-cle/randomizers.rb +117 -0
- data/lib/sambal-cle/rich_text.rb +38 -0
- data/lib/sambal-cle/utilities.rb +31 -0
- data/lib/sambal-cle/workflows.rb +223 -0
- data/lib/sambal-cle.rb +31 -0
- data/sambal-cle.gemspec +14 -0
- data/test/add_assignment_to_calendar_spec.rb +86 -0
- data/test/assignment_announcements_spec.rb +71 -0
- data/test/assignment_gradebook_spec.rb +98 -0
- data/test/config.yml.template +4 -0
- data/test/directory.yml.template +123 -0
- data/test/duplicate_site_spec.rb +244 -0
- metadata +167 -0
@@ -0,0 +1,117 @@
|
|
1
|
+
#================
|
2
|
+
# Glossary Pages - for a Portfolio Site
|
3
|
+
#================
|
4
|
+
|
5
|
+
class Glossary < BasePage
|
6
|
+
|
7
|
+
frame_element
|
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
|
19
|
+
|
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
|
29
|
+
|
30
|
+
def open(term)
|
31
|
+
frm.link(:text=>term).click
|
32
|
+
#FIXME!
|
33
|
+
# Need to do special handling here because of the new window.
|
34
|
+
end
|
35
|
+
|
36
|
+
# Returns an array containing the string values of the terms
|
37
|
+
# displayed in the list.
|
38
|
+
def terms
|
39
|
+
term_list = []
|
40
|
+
frm.table(:class=>"listHier lines nolines").rows.each do |row|
|
41
|
+
term_list << row[0].text
|
42
|
+
end
|
43
|
+
term_list.delete_at(0)
|
44
|
+
return term_list
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
class AddEditTerm < BasePage
|
50
|
+
|
51
|
+
frame_element
|
52
|
+
|
53
|
+
def add_term
|
54
|
+
frm.button(:value=>"Add Term").click
|
55
|
+
Glossary.new(@browser)
|
56
|
+
end
|
57
|
+
|
58
|
+
def save_changes
|
59
|
+
frm.button(:value=>"Save Changes").click
|
60
|
+
Glossary.new(@browser)
|
61
|
+
end
|
62
|
+
|
63
|
+
def long_description=(text)
|
64
|
+
frm.frame(:id, "longDescription___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
element(:term) { |b| b.frm.text_field(:id=>"term-id") }
|
69
|
+
element(:short_description) { |b| b.frm.text_field(:id=>"description-id") }
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
# Page for importing Glossary files into a Glossary
|
74
|
+
class GlossaryImport < BasePage
|
75
|
+
|
76
|
+
frame_element
|
77
|
+
|
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
|
96
|
+
|
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
|
116
|
+
|
117
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#================
|
2
|
+
# Gradebook Pages
|
3
|
+
#================
|
4
|
+
|
5
|
+
# The topmost page in a Site's Gradebook
|
6
|
+
class Gradebook < BasePage
|
7
|
+
|
8
|
+
frame_element
|
9
|
+
|
10
|
+
def items_titles
|
11
|
+
titles = []
|
12
|
+
items_table = frm.table(:class=>"listHier lines nolines")
|
13
|
+
1.upto(items_table.rows.size-1) do |x|
|
14
|
+
titles << items_table.row(:index=>x).a(:index=>0).text
|
15
|
+
end
|
16
|
+
return titles
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the value of the "Released to Students" column
|
20
|
+
# for the specified assignment title.
|
21
|
+
def released_to_students(assignment)
|
22
|
+
frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(assignment)}/)[4].text
|
23
|
+
end
|
24
|
+
|
25
|
+
# Returns the due date value for the specified assignment.
|
26
|
+
def due_date(assignment)
|
27
|
+
frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(assignment)}/)[3].text
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#
|
2
|
+
class Gradebook2 < BasePage
|
3
|
+
|
4
|
+
frame_element
|
5
|
+
|
6
|
+
# Returns an array of names of Gradebook items
|
7
|
+
def gradebook_items
|
8
|
+
items = []
|
9
|
+
frm.div(:class=>"x-grid3-scroller").spans.each do |span|
|
10
|
+
if span.class_name =~ /^x-tree3-node-text/
|
11
|
+
items << span.text
|
12
|
+
end
|
13
|
+
end
|
14
|
+
return items
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Topmost page for a Site in Sakai
|
2
|
+
class Home < BasePage
|
3
|
+
|
4
|
+
frame_element
|
5
|
+
|
6
|
+
# Because the links below are contained within iframes
|
7
|
+
# we need the in_frame method in place so that the
|
8
|
+
# links can be properly parsed in the PageObject
|
9
|
+
# methods for them.
|
10
|
+
# Note that the iframes are being identified by their
|
11
|
+
# index values on the page. This is a very brittle
|
12
|
+
# method for identifying them, but for now it's our
|
13
|
+
# only option because both the <id> and <name>
|
14
|
+
# tags are unique for every site.
|
15
|
+
# Site Information Display, Options button
|
16
|
+
action(:site_info_display_options) { |b| b.frm.link(:text=>"Options").click }
|
17
|
+
|
18
|
+
# Recent Announcements Options button
|
19
|
+
action(:recent_announcements_options) { |b| b.frm.link(:text=>"Options").click }
|
20
|
+
# Link for New In Forms
|
21
|
+
action(:new_in_forums) { |b| b.frm.link(:text=>"New Messages").click }
|
22
|
+
element(:number_of_announcements) { |b| b.frm.text_field(:id=>"itemsEntryField") }
|
23
|
+
action(:update_announcements) { |b| b.frm.button(:name=>"eventSubmit_doUpdate").click }
|
24
|
+
|
25
|
+
|
26
|
+
# Gets the text of the displayed announcements, for
|
27
|
+
# test case verification
|
28
|
+
def announcements_list
|
29
|
+
list = []
|
30
|
+
links = @browser.frame(:index=>2).links
|
31
|
+
links.each { |link| list << link.text }
|
32
|
+
list.delete_if { |item| item=="Options" } # Deletes the Options link if it's there.
|
33
|
+
return list
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,444 @@
|
|
1
|
+
#================
|
2
|
+
# Discussion Forums Pages
|
3
|
+
#================
|
4
|
+
|
5
|
+
# This module includes page objects that are common to
|
6
|
+
# all pages in the JForums.
|
7
|
+
module JForumsResources
|
8
|
+
|
9
|
+
# Clicks the Discussion Home link, then
|
10
|
+
# instantiates the JForums page class.
|
11
|
+
def discussion_home
|
12
|
+
frm.link(:id=>"backtosite").click
|
13
|
+
JForums.new(@browser)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Clicks the Search button in the Main Menu, then
|
17
|
+
# instantiates the DiscussionSearch page class.
|
18
|
+
def search
|
19
|
+
frm.link(:id=>"search", :class=>"mainmenu").click
|
20
|
+
DiscussionSearch.new(@browser)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Clicks the My Bookmarks link in the Main Menu,
|
24
|
+
# then instantiates the MyBookmarks page class.
|
25
|
+
def my_bookmarks
|
26
|
+
frm.link(:class=>"mainmenu", :text=>"My Bookmarks").click
|
27
|
+
MyBookmarks.new(@browser)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Clicks the My Profile link in the Main Menu, then
|
31
|
+
# instantiates the DiscussionsMyProfile page class.
|
32
|
+
def my_profile
|
33
|
+
frm.link(:id=>"myprofile").click
|
34
|
+
DiscussionsMyProfile.new(@browser)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Clicks the Member Listing link in the Main Menu, then
|
38
|
+
# instantiates the DiscussionMemberListing page class.
|
39
|
+
def member_listing
|
40
|
+
frm.link(:text=>"Member Listing", :id=>"latest", :class=>"mainmenu").click
|
41
|
+
DiscussionMemberListing.new(@browser)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Clicks the Private Messages link in the Main Menu, then
|
45
|
+
# instantiates the PrivateMessages page class.
|
46
|
+
def private_messages
|
47
|
+
frm.link(:id=>"privatemessages", :class=>"mainmenu").click
|
48
|
+
PrivateMessages.new(@browser)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Clicks the Manage link on the Main Menu, then
|
52
|
+
# instantiates the ManageDiscussions page class.
|
53
|
+
def manage
|
54
|
+
frm.link(:id=>"adminpanel", :text=>"Manage").click
|
55
|
+
ManageDiscussions.new(@browser)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
# The topmost page in Discussion Forums
|
61
|
+
class JForums < BasePage
|
62
|
+
|
63
|
+
frame_element
|
64
|
+
include JForumsResources
|
65
|
+
|
66
|
+
# Clicks on the supplied forum name
|
67
|
+
# Then instantiates the DiscussionForum class.
|
68
|
+
def open_forum(forum_name)
|
69
|
+
frm.link(:text=>forum_name).click
|
70
|
+
DiscussionForum.new(@browser)
|
71
|
+
end
|
72
|
+
|
73
|
+
# Clicks the specified Topic and instantiates
|
74
|
+
# the ViewTopic Class.
|
75
|
+
def open_topic(topic_title)
|
76
|
+
frm.link(:text=>topic_title).click
|
77
|
+
ViewTopic.new(@browser)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Returns an array containing the names of the Forums listed on the page.
|
81
|
+
def forum_list
|
82
|
+
list = frm.table(:class=>"forumline").links.map do |link|
|
83
|
+
if link.href =~ /forums\/show\//
|
84
|
+
link.text
|
85
|
+
end
|
86
|
+
end
|
87
|
+
list.compact!
|
88
|
+
return list
|
89
|
+
end
|
90
|
+
|
91
|
+
# Returns the displayed count of topics for the specified
|
92
|
+
# Forum.
|
93
|
+
def topic_count(forum_name)
|
94
|
+
frm.table(:class=>"forumline").row(:text=>/#{Regexp.escape(forum_name)}/)[2].text
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
# The page of a particular Discussion Forum, show the list
|
100
|
+
# of Topics in the forum.
|
101
|
+
class DiscussionForum < BasePage
|
102
|
+
|
103
|
+
frame_element
|
104
|
+
include JForumsResources
|
105
|
+
|
106
|
+
# Clicks the New Topic button,
|
107
|
+
# then instantiates the NewTopic class
|
108
|
+
def new_topic
|
109
|
+
frm.image(:alt=>"New Topic").fire_event("onclick")
|
110
|
+
frm.frame(:id, "message___Frame").td(:id, "xEditingArea").wait_until_present
|
111
|
+
NewTopic.new(@browser)
|
112
|
+
end
|
113
|
+
|
114
|
+
# Clicks the specified Topic Title, then
|
115
|
+
# instantiates the ViewTopic Class.
|
116
|
+
def open_topic(topic_title)
|
117
|
+
frm.link(:href=>/posts.list/, :text=>topic_title).click
|
118
|
+
ViewTopic.new(@browser)
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
# The Discussion Forums Search page.
|
124
|
+
class DiscussionSearch < BasePage
|
125
|
+
|
126
|
+
frame_element
|
127
|
+
|
128
|
+
include JForumsResources
|
129
|
+
|
130
|
+
# Clicks the Search button on the page,
|
131
|
+
# then instantiates the JForums class.
|
132
|
+
def click_search
|
133
|
+
frm.button(:value=>"Search").click
|
134
|
+
JForums.new(@browser)
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
element(:keywords) { |b| b.frm.text_field(:name=>"search_keywords") }
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
# The Manage Discussions page in Discussion Forums.
|
143
|
+
class ManageDiscussions < BasePage
|
144
|
+
|
145
|
+
frame_element
|
146
|
+
|
147
|
+
include JForumsResources
|
148
|
+
|
149
|
+
# Clicks the Manage Forums link,
|
150
|
+
# then instantiates the ManageForums Class.
|
151
|
+
def manage_forums
|
152
|
+
frm.link(:text=>"Manage Forums").click
|
153
|
+
ManageForums.new(@browser)
|
154
|
+
end
|
155
|
+
|
156
|
+
# Creates and returns an array of forum titles
|
157
|
+
# which can be used for verification
|
158
|
+
def forum_titles
|
159
|
+
forum_titles = []
|
160
|
+
forum_links = frm.links.find_all { |link| link.id=="forumEdit"}
|
161
|
+
forum_links.each { |link| forum_titles << link.text }
|
162
|
+
return forum_titles
|
163
|
+
end
|
164
|
+
|
165
|
+
end
|
166
|
+
|
167
|
+
# The page for Managing Forums in the Discussion Forums
|
168
|
+
# feature.
|
169
|
+
class ManageForums < BasePage
|
170
|
+
|
171
|
+
frame_element
|
172
|
+
include JForumsResources
|
173
|
+
|
174
|
+
# Clicks the Add button, then
|
175
|
+
# instantiates the ManageForums Class.
|
176
|
+
def add
|
177
|
+
frm.button(:value=>"Add").click
|
178
|
+
ManageForums.new(@browser)
|
179
|
+
end
|
180
|
+
|
181
|
+
# Clicks the Update button, then
|
182
|
+
# instantiates the ManageDiscussions Class.
|
183
|
+
def update
|
184
|
+
frm.button(:value=>"Update").click
|
185
|
+
ManageDiscussions.new(@browser)
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
element(:forum_name) { |b| b.frm.text_field(:name=>"forum_name") }
|
190
|
+
element(:category) { |b| b.frm.select(:id=>"categories_id") }
|
191
|
+
element(:description) { |b| b.frm.text_field(:name=>"description") }
|
192
|
+
|
193
|
+
end
|
194
|
+
|
195
|
+
# Page for editing/creating Bookmarks in Discussion Forums.
|
196
|
+
class MyBookmarks < BasePage
|
197
|
+
|
198
|
+
frame_element
|
199
|
+
include JForumsResources
|
200
|
+
|
201
|
+
|
202
|
+
end
|
203
|
+
|
204
|
+
# The page for adding a new discussion topic.
|
205
|
+
class NewTopic < BasePage
|
206
|
+
|
207
|
+
frame_element
|
208
|
+
include JForumsResources
|
209
|
+
|
210
|
+
# Enters the specified string into the FCKEditor for the Message.
|
211
|
+
def message_text=(text)
|
212
|
+
frm.frame(:id, "message___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
|
213
|
+
frm.frame(:id, "message___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
214
|
+
end
|
215
|
+
|
216
|
+
# Clicks the Submit button, then instantiates the ViewTopic Class.
|
217
|
+
def submit
|
218
|
+
frm.button(:value=>"Submit").click
|
219
|
+
ViewTopic.new(@browser)
|
220
|
+
end
|
221
|
+
|
222
|
+
# Clicks the Preview button and instantiates the PreviewDiscussionTopic Class.
|
223
|
+
def preview
|
224
|
+
frm.button(:value=>"Preview").click
|
225
|
+
PreviewDiscussionTopic.new(@browser)
|
226
|
+
end
|
227
|
+
|
228
|
+
# Enters the specified filename in the file field. The path to the file can be entered as an optional second parameter
|
229
|
+
def filename1(filename, filepath="")
|
230
|
+
frm.file_field(:name=>"file_0").set(filepath + filename)
|
231
|
+
end
|
232
|
+
|
233
|
+
# Enters the specified filename in the file field.
|
234
|
+
#
|
235
|
+
# Note that the file should be inside the data/sakai-cle-test-api folder.
|
236
|
+
# The file or folder name used for the filename variable
|
237
|
+
# should not include a preceding / character.
|
238
|
+
def filename2(filename)
|
239
|
+
frm.file_field(:name=>"file_1").set(File.expand_path(File.dirname(__FILE__)) + "/../../data/sakai-cle-test-api/" + filename)
|
240
|
+
end
|
241
|
+
|
242
|
+
|
243
|
+
element(:subject) { |b| b.frm.text_field(:id=>"subject") }
|
244
|
+
action(:attach_files) { |b| b.frm.button(:value=>"Attach Files").click }
|
245
|
+
action(:add_another_file) { |b| b.frm.button(:value=>"Add another file").click }
|
246
|
+
|
247
|
+
end
|
248
|
+
|
249
|
+
# Viewing a Topic/Message
|
250
|
+
class ViewTopic < BasePage
|
251
|
+
|
252
|
+
frame_element
|
253
|
+
include JForumsResources
|
254
|
+
|
255
|
+
# Gets the text of the Topic title.
|
256
|
+
# Useful for verification.
|
257
|
+
def topic_name
|
258
|
+
frm.link(:id=>"top", :class=>"maintitle").text
|
259
|
+
end
|
260
|
+
|
261
|
+
# Gets the message text for the specified message (not zero-based).
|
262
|
+
# Useful for verification.
|
263
|
+
def message_text(message_number)
|
264
|
+
frm.span(:class=>"postbody", :index=>message_number.to_i-1).text
|
265
|
+
end
|
266
|
+
|
267
|
+
# Clicks the Post Reply button, then
|
268
|
+
# instantiates the NewTopic Class.
|
269
|
+
def post_reply
|
270
|
+
frm.image(:alt=>"Post Reply").fire_event("onclick")
|
271
|
+
NewTopic.new(@browser)
|
272
|
+
end
|
273
|
+
|
274
|
+
# Clicks the Quick Reply button
|
275
|
+
# and does not instantiate any page classes.
|
276
|
+
def quick_reply
|
277
|
+
frm.image(:alt=>"Quick Reply").fire_event("onclick")
|
278
|
+
end
|
279
|
+
|
280
|
+
# Clicks the submit button underneath the Quick Reply box,
|
281
|
+
# then re-instantiates the class, due to the page update.
|
282
|
+
def submit
|
283
|
+
frm.button(:value=>"Submit").click
|
284
|
+
ViewTopic.new(@browser)
|
285
|
+
end
|
286
|
+
|
287
|
+
|
288
|
+
element(:reply_text) { |b| b.frm.text_field(:name=>"quickmessage") }
|
289
|
+
|
290
|
+
|
291
|
+
end
|
292
|
+
|
293
|
+
# The Profile page for Discussion Forums
|
294
|
+
class DiscussionsMyProfile < BasePage
|
295
|
+
|
296
|
+
frame_element
|
297
|
+
include JForumsResources
|
298
|
+
|
299
|
+
def submit
|
300
|
+
frm.button(:value=>"Submit").click
|
301
|
+
DiscussionsMyProfile.new(@browser)
|
302
|
+
end
|
303
|
+
|
304
|
+
# Gets the text at the top of the table.
|
305
|
+
# Useful for verification.
|
306
|
+
def header_text
|
307
|
+
frm.table(:class=>"forumline").span(:class=>"gens").text
|
308
|
+
end
|
309
|
+
|
310
|
+
# Enters the specified filename in the file field.
|
311
|
+
#
|
312
|
+
# The method takes the filepath as an optional second parameter.
|
313
|
+
def avatar(filename, filepath="")
|
314
|
+
frm.file_field(:name=>"avatar").set(filepath + filename)
|
315
|
+
end
|
316
|
+
|
317
|
+
element(:icq_uin) { |b| b.frm.text_field(:name=>"icq") }
|
318
|
+
element(:aim) { |b| b.frm.text_field(:name=>"aim") }
|
319
|
+
element(:web_site) { |b| b.frm.text_field(:name=>"website") }
|
320
|
+
element(:occupation) { |b| b.frm.text_field(:name=>"occupation") }
|
321
|
+
element(:view_email) { |b| b.radio(:name=>"viewemail") }
|
322
|
+
|
323
|
+
end
|
324
|
+
|
325
|
+
# The List of Members of a Site's Discussion Forums
|
326
|
+
class DiscussionMemberListing < BasePage
|
327
|
+
|
328
|
+
frame_element
|
329
|
+
include JForumsResources
|
330
|
+
|
331
|
+
# Checks if the specified Member name appears
|
332
|
+
# in the member listing.
|
333
|
+
def name_present?(name)
|
334
|
+
member_links = frm.links.find_all { |link| link.href=~/user.profile/ }
|
335
|
+
member_names = []
|
336
|
+
member_links.each { |link| member_names << link.text }
|
337
|
+
member_names.include?(name)
|
338
|
+
end
|
339
|
+
|
340
|
+
end
|
341
|
+
|
342
|
+
# The page where users go to read their private messages in the Discussion
|
343
|
+
# Forums.
|
344
|
+
class PrivateMessages < BasePage
|
345
|
+
|
346
|
+
frame_element
|
347
|
+
include JForumsResources
|
348
|
+
|
349
|
+
# Clicks the "New PM" button, then
|
350
|
+
# instantiates the NewPrivateMessage Class.
|
351
|
+
def new_pm
|
352
|
+
frm.image(:alt=>"New PM").fire_event("onclick")
|
353
|
+
NewPrivateMessage.new(@browser)
|
354
|
+
end
|
355
|
+
|
356
|
+
# Clicks to open the specified message,
|
357
|
+
# then instantiates the ViewPM Class.
|
358
|
+
def open_message(title)
|
359
|
+
frm.link(:class=>"topictitle", :text=>title).click
|
360
|
+
ViewPM.new(@browser)
|
361
|
+
end
|
362
|
+
|
363
|
+
# Collects all subject text strings of the listed
|
364
|
+
# private messages and returns them in an Array.
|
365
|
+
def pm_subjects
|
366
|
+
anchor_objects = frm.links.find_all { |link| link.href=~/pm.read.+page/ }
|
367
|
+
subjects = []
|
368
|
+
anchor_objects.each { |link| subjects << link.text }
|
369
|
+
return subjects
|
370
|
+
end
|
371
|
+
|
372
|
+
end
|
373
|
+
|
374
|
+
# The page of Viewing a particular Private Message.
|
375
|
+
class ViewPM < BasePage
|
376
|
+
|
377
|
+
frame_element
|
378
|
+
|
379
|
+
# Clicks the Reply Quote button, then
|
380
|
+
# instantiates the NewPrivateMessage Class.
|
381
|
+
def reply_quote
|
382
|
+
frm.image(:alt=>"Reply Quote").fire_event("onclick")
|
383
|
+
NewPrivateMessage.new(@browser)
|
384
|
+
end
|
385
|
+
|
386
|
+
end
|
387
|
+
|
388
|
+
# New Private Message page in Discussion Forums.
|
389
|
+
class NewPrivateMessage < BasePage
|
390
|
+
|
391
|
+
frame_element
|
392
|
+
include JForumsResources
|
393
|
+
|
394
|
+
# Enters text into the FCKEditor text area, after
|
395
|
+
# going to the beginning of any existing text in the field.
|
396
|
+
def message_body=(text)
|
397
|
+
frm.frame(:id, "message___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(:home)
|
398
|
+
frm.frame(:id, "message___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
|
399
|
+
end
|
400
|
+
|
401
|
+
# Clicks the Submit button, then
|
402
|
+
# instantiates the Information Class.
|
403
|
+
def submit
|
404
|
+
frm.button(:value=>"Submit").click
|
405
|
+
Information.new(@browser)
|
406
|
+
end
|
407
|
+
|
408
|
+
# Enters the specified filename in the file field.
|
409
|
+
def filename1(filename)
|
410
|
+
frm.file_field(:name=>"file_0").set(File.expand_path(File.dirname(__FILE__)) + "/../../data/sakai-cle-test-api/" + filename)
|
411
|
+
end
|
412
|
+
|
413
|
+
# Enters the specified filename in the file field.
|
414
|
+
#
|
415
|
+
# Note that the file should be inside the data/sakai-cle-test-api folder.
|
416
|
+
# The file or folder name used for the filename variable
|
417
|
+
# should not include a preceding / character.
|
418
|
+
def filename2(filename)
|
419
|
+
frm.file_field(:name=>"file_1").set(File.expand_path(File.dirname(__FILE__)) + "/../../data/sakai-cle-test-api/" + filename)
|
420
|
+
end
|
421
|
+
|
422
|
+
|
423
|
+
element(:to_user) { |b| b.frm.select(:name=>"toUsername") }
|
424
|
+
element(:subject) { |b| b.frm.text_field(:id=>"subject") }
|
425
|
+
action(:attach_files) { |b| b.frm.button(:value=>"Attach Files").click }
|
426
|
+
action(:add_another_file) { |b| b.frm.button(:value=>"Add another file").click }
|
427
|
+
|
428
|
+
|
429
|
+
end
|
430
|
+
|
431
|
+
# The page that appears when you've done something in discussions, like
|
432
|
+
# sent a Private Message.
|
433
|
+
class Information < BasePage
|
434
|
+
|
435
|
+
frame_element
|
436
|
+
include JForumsResources
|
437
|
+
|
438
|
+
# Gets the information message on the page.
|
439
|
+
# Useful for verification.
|
440
|
+
def information_text
|
441
|
+
frm.table(:class=>"forumline").span(:class=>"gen").text
|
442
|
+
end
|
443
|
+
|
444
|
+
end
|