sakai-cle-test-api 0.0.9 → 0.0.75
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/lib/sakai-cle-test-api.rb +2 -7
- data/lib/sakai-cle-test-api/admin_page_elements.rb +2 -6
- data/lib/sakai-cle-test-api/announcements.rb +7 -274
- data/lib/sakai-cle-test-api/assessments.rb +27 -930
- data/lib/sakai-cle-test-api/assignments.rb +13 -769
- data/lib/sakai-cle-test-api/basic_lti.rb +1 -5
- data/lib/sakai-cle-test-api/blogs.rb +2 -54
- data/lib/sakai-cle-test-api/calendar.rb +8 -423
- data/lib/sakai-cle-test-api/common_page_elements.rb +172 -69
- data/lib/sakai-cle-test-api/drop_box.rb +0 -21
- data/lib/sakai-cle-test-api/email_archive.rb +1 -15
- data/lib/sakai-cle-test-api/forums.rb +8 -282
- data/lib/sakai-cle-test-api/gradebook.rb +1 -19
- data/lib/sakai-cle-test-api/gradebook2.rb +1 -15
- data/lib/sakai-cle-test-api/messages.rb +15 -551
- data/lib/sakai-cle-test-api/news.rb +1 -3
- data/lib/sakai-cle-test-api/polls.rb +3 -65
- data/lib/sakai-cle-test-api/profile.rb +2 -36
- data/lib/sakai-cle-test-api/profile2.rb +6 -315
- data/lib/sakai-cle-test-api/sections.rb +8 -198
- data/lib/sakai-cle-test-api/site_page_elements.rb +441 -4
- data/lib/sakai-cle-test-api/syllabus.rb +7 -149
- data/lib/sakai-cle-test-api/tools_menu.rb +20 -3
- data/lib/sakai-cle-test-api/utilities.rb +0 -260
- data/sakai-cle-test-api.gemspec +3 -2
- metadata +19 -21
- data/lib/sakai-cle-test-api/add_files.rb +0 -198
- data/lib/sakai-cle-test-api/chat_room.rb +0 -0
- data/lib/sakai-cle-test-api/core-ext.rb +0 -90
- data/lib/sakai-cle-test-api/data_objects/announcement.rb +0 -38
- data/lib/sakai-cle-test-api/data_objects/assessment.rb +0 -32
- data/lib/sakai-cle-test-api/data_objects/assignment.rb +0 -62
- data/lib/sakai-cle-test-api/data_objects/event.rb +0 -86
- data/lib/sakai-cle-test-api/data_objects/lesson.rb +0 -137
- data/lib/sakai-cle-test-api/data_objects/resource.rb +0 -174
- data/lib/sakai-cle-test-api/data_objects/site.rb +0 -213
- data/lib/sakai-cle-test-api/data_objects/syllabus.rb +0 -7
- data/lib/sakai-cle-test-api/data_objects/topic.rb +0 -0
- data/lib/sakai-cle-test-api/data_objects/web_content_tool.rb +0 -52
- data/lib/sakai-cle-test-api/data_objects/wiki.rb +0 -7
- data/lib/sakai-cle-test-api/gem_ext.rb +0 -45
- data/lib/sakai-cle-test-api/lessons.rb +0 -440
- data/lib/sakai-cle-test-api/resources.rb +0 -138
- data/lib/sakai-cle-test-api/rich_text.rb +0 -13
data/sakai-cle-test-api.gemspec
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'sakai-cle-test-api'
|
3
|
-
s.version = '0.0.
|
3
|
+
s.version = '0.0.75'
|
4
4
|
s.summary = %q{Sakai-CLE functional testing API for the rSmart Collaborative Learning Environment}
|
5
5
|
s.description = %q{The Sakai-OAE gem provides an API for interacting with pages and page elements in rSmart's deployment of the Sakai Collaborative Learning Environment.}
|
6
6
|
s.files = Dir.glob("**/**/**")
|
7
7
|
s.test_files = Dir.glob("test/*test_rb")
|
8
8
|
s.authors = ["Abraham Heward"]
|
9
9
|
s.email = %w{"aheward@rsmart.com"}
|
10
|
-
s.homepage = 'https://github.com/aheward/
|
10
|
+
s.homepage = 'https://github.com/aheward/Kuali-Sakai-Functional-Test-Automation-Framework/tree/master/Sakai/CLE/API'
|
11
11
|
s.add_dependency 'page-object', '>= 0.6.6'
|
12
12
|
s.add_dependency 'watir-webdriver', '>= 0.5.5'
|
13
13
|
s.add_dependency 'selenium-webdriver', '>= 2.21.2'
|
14
|
+
s.add_dependency 'kuali-sakai-common-lib', '= 0.0.7'
|
14
15
|
s.required_ruby_version = '>= 1.9.2'
|
15
16
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sakai-cle-test-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.75
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: page-object
|
@@ -59,6 +59,22 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 2.21.2
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: kuali-sakai-common-lib
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - '='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.0.7
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - '='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.0.7
|
62
78
|
description: The Sakai-OAE gem provides an API for interacting with pages and page
|
63
79
|
elements in rSmart's deployment of the Sakai Collaborative Learning Environment.
|
64
80
|
email:
|
@@ -68,7 +84,6 @@ extensions: []
|
|
68
84
|
extra_rdoc_files: []
|
69
85
|
files:
|
70
86
|
- Gemfile
|
71
|
-
- lib/sakai-cle-test-api/add_files.rb
|
72
87
|
- lib/sakai-cle-test-api/admin_page_elements.rb
|
73
88
|
- lib/sakai-cle-test-api/announcements.rb
|
74
89
|
- lib/sakai-cle-test-api/assessments.rb
|
@@ -77,36 +92,19 @@ files:
|
|
77
92
|
- lib/sakai-cle-test-api/blogs.rb
|
78
93
|
- lib/sakai-cle-test-api/calendar.rb
|
79
94
|
- lib/sakai-cle-test-api/calendar_summary.rb
|
80
|
-
- lib/sakai-cle-test-api/chat_room.rb
|
81
95
|
- lib/sakai-cle-test-api/common_page_elements.rb
|
82
|
-
- lib/sakai-cle-test-api/core-ext.rb
|
83
|
-
- lib/sakai-cle-test-api/data_objects/announcement.rb
|
84
|
-
- lib/sakai-cle-test-api/data_objects/assessment.rb
|
85
|
-
- lib/sakai-cle-test-api/data_objects/assignment.rb
|
86
|
-
- lib/sakai-cle-test-api/data_objects/event.rb
|
87
|
-
- lib/sakai-cle-test-api/data_objects/lesson.rb
|
88
|
-
- lib/sakai-cle-test-api/data_objects/resource.rb
|
89
|
-
- lib/sakai-cle-test-api/data_objects/site.rb
|
90
|
-
- lib/sakai-cle-test-api/data_objects/syllabus.rb
|
91
|
-
- lib/sakai-cle-test-api/data_objects/topic.rb
|
92
|
-
- lib/sakai-cle-test-api/data_objects/web_content_tool.rb
|
93
|
-
- lib/sakai-cle-test-api/data_objects/wiki.rb
|
94
96
|
- lib/sakai-cle-test-api/drop_box.rb
|
95
97
|
- lib/sakai-cle-test-api/email_archive.rb
|
96
98
|
- lib/sakai-cle-test-api/forums.rb
|
97
|
-
- lib/sakai-cle-test-api/gem_ext.rb
|
98
99
|
- lib/sakai-cle-test-api/gradebook.rb
|
99
100
|
- lib/sakai-cle-test-api/gradebook2.rb
|
100
|
-
- lib/sakai-cle-test-api/lessons.rb
|
101
101
|
- lib/sakai-cle-test-api/messages.rb
|
102
102
|
- lib/sakai-cle-test-api/news.rb
|
103
103
|
- lib/sakai-cle-test-api/polls.rb
|
104
104
|
- lib/sakai-cle-test-api/post_em.rb
|
105
105
|
- lib/sakai-cle-test-api/profile.rb
|
106
106
|
- lib/sakai-cle-test-api/profile2.rb
|
107
|
-
- lib/sakai-cle-test-api/resources.rb
|
108
107
|
- lib/sakai-cle-test-api/resources_roster.rb
|
109
|
-
- lib/sakai-cle-test-api/rich_text.rb
|
110
108
|
- lib/sakai-cle-test-api/rwiki.rb
|
111
109
|
- lib/sakai-cle-test-api/sections.rb
|
112
110
|
- lib/sakai-cle-test-api/single_user.rb
|
@@ -118,7 +116,7 @@ files:
|
|
118
116
|
- lib/sakai-cle-test-api.rb
|
119
117
|
- README.md
|
120
118
|
- sakai-cle-test-api.gemspec
|
121
|
-
homepage: https://github.com/aheward/
|
119
|
+
homepage: https://github.com/aheward/Kuali-Sakai-Functional-Test-Automation-Framework/tree/master/Sakai/CLE/API
|
122
120
|
licenses: []
|
123
121
|
post_install_message:
|
124
122
|
rdoc_options: []
|
@@ -1,198 +0,0 @@
|
|
1
|
-
# This class consolidates the code that can be shared among all the
|
2
|
-
# File Upload and Attachment pages.
|
3
|
-
#
|
4
|
-
# Not every method in this class will be appropriate for every attachment page.
|
5
|
-
class AddFiles
|
6
|
-
|
7
|
-
include PageObject
|
8
|
-
|
9
|
-
thing(:files_table) { |b| b.frm.table(:class=>/listHier lines/) }
|
10
|
-
|
11
|
-
# Returns an array of the displayed folder names.
|
12
|
-
def folder_names
|
13
|
-
names = []
|
14
|
-
files_table.rows.each do |row|
|
15
|
-
next if row.td(:class=>"specialLink").exist? == false
|
16
|
-
next if row.td(:class=>"specialLink").link(:title=>"Folder").exist? == false
|
17
|
-
names << row.td(:class=>"specialLink").link(:title=>"Folder").text
|
18
|
-
end
|
19
|
-
names
|
20
|
-
end
|
21
|
-
|
22
|
-
# Returns an array of the file names currently listed
|
23
|
-
# on the page.
|
24
|
-
#
|
25
|
-
# It excludes folder names.
|
26
|
-
def file_names
|
27
|
-
names = []
|
28
|
-
files_table.rows.each do |row|
|
29
|
-
next if row.td(:class=>"specialLink").exist? == false
|
30
|
-
next if row.td(:class=>"specialLink").link(:title=>"Folder").exist?
|
31
|
-
names << row.td(:class=>"specialLink").link(:href=>/access.content/, :index=>1).text
|
32
|
-
end
|
33
|
-
names
|
34
|
-
end
|
35
|
-
|
36
|
-
# Clicks the Select button next to the specified file.
|
37
|
-
def select_file(filename)
|
38
|
-
files_table.row(:text, /#{Regexp.escape(filename)}/).link(:text=>"Select").click
|
39
|
-
end
|
40
|
-
|
41
|
-
# Clicks the Remove button.
|
42
|
-
action(:remove) { |b| b.frm.button(:value=>"Remove").click }
|
43
|
-
|
44
|
-
# Clicks the remove link for the specified item in the attachment list.
|
45
|
-
def remove_item(file_name)
|
46
|
-
files_table.row(:text=>/#{Regexp.escape(file_name)}/).link(:href=>/doRemoveitem/).click
|
47
|
-
end
|
48
|
-
|
49
|
-
# Clicks the Move button.
|
50
|
-
action(:move) { |b| b.frm.button(:value=>"Move").click }
|
51
|
-
|
52
|
-
# Clicks the Show Other Sites link.
|
53
|
-
action(:show_other_sites) { |b| b.frm.link(:text=>"Show other sites").click }
|
54
|
-
|
55
|
-
def href(item)
|
56
|
-
frm.link(:text=>item).href
|
57
|
-
end
|
58
|
-
|
59
|
-
# Clicks on the specified folder image, which
|
60
|
-
# will open the folder tree and remain on the page.
|
61
|
-
def open_folder(foldername)
|
62
|
-
files_table.row(:text=>/#{Regexp.escape(foldername)}/).link(:title=>"Open this folder").click
|
63
|
-
end
|
64
|
-
|
65
|
-
# Clicks on the specified folder name, which should open
|
66
|
-
# the folder contents on a refreshed page.
|
67
|
-
def go_to_folder(foldername)
|
68
|
-
frm.link(:text=>foldername).click
|
69
|
-
end
|
70
|
-
|
71
|
-
# Sets the URL field to the specified value.
|
72
|
-
def url=(url_string)
|
73
|
-
frm.text_field(:id=>"url").set(url_string)
|
74
|
-
end
|
75
|
-
|
76
|
-
# Clicks the Add button next to the URL field.
|
77
|
-
def add
|
78
|
-
frm.button(:value=>"Add").click
|
79
|
-
end
|
80
|
-
|
81
|
-
# Gets the value of the access level cell for the specified
|
82
|
-
# file.
|
83
|
-
def access_level(filename)
|
84
|
-
files_table.row(:text=>/#{Regexp.escape(filename)}/)[6].text
|
85
|
-
end
|
86
|
-
|
87
|
-
def edit_details(name)
|
88
|
-
files_table.row(:text=>/#{Regexp.escape(name)}/).li(:text=>/Action/, :class=>"menuOpen").fire_event("onclick")
|
89
|
-
files_table.row(:text=>/#{Regexp.escape(name)}/).link(:text=>"Edit Details").click
|
90
|
-
end
|
91
|
-
|
92
|
-
# Clicks the Create Folders menu item in the
|
93
|
-
# Add menu of the specified folder.
|
94
|
-
def create_subfolders_in(folder_name)
|
95
|
-
open_add_menu(folder_name)
|
96
|
-
files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Create Folders").click
|
97
|
-
end
|
98
|
-
|
99
|
-
def create_html_page_in(folder_name)
|
100
|
-
open_add_menu(folder_name)
|
101
|
-
files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Create HTML Page").click
|
102
|
-
end
|
103
|
-
|
104
|
-
# Enters the specified file into the file field name (assuming it's in the
|
105
|
-
# data/sakai-cle-test-api folder or a subfolder therein)
|
106
|
-
#
|
107
|
-
def upload_file(filename, filepath="")
|
108
|
-
frm.file_field(:id=>"upload").set(filepath + filename)
|
109
|
-
if frm.div(:class=>"alertMessage").exist?
|
110
|
-
sleep 2
|
111
|
-
upload_file(filename)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
# Enters the specified file into the file field name (assuming it's in the
|
116
|
-
# data/sakai-cle-test-api folder or a subfolder therein)
|
117
|
-
#
|
118
|
-
# Use this method ONLY for instances where there's a file field on the page
|
119
|
-
# with an "upload" id.
|
120
|
-
def upload_local_file(filename, filepath="")
|
121
|
-
frm.file_field(:id=>"upload").set(filepath + filename)
|
122
|
-
if frm.div(:class=>"alertMessage").exist?
|
123
|
-
sleep 2
|
124
|
-
upload_local_file(filename)
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
# Clicks the Add Menu for the specified
|
129
|
-
# folder, then selects the Upload Files
|
130
|
-
# command in the menu that appears.
|
131
|
-
def upload_file_to_folder(folder_name)
|
132
|
-
upload_files_to_folder(folder_name)
|
133
|
-
end
|
134
|
-
|
135
|
-
# Clicks the Add Menu for the specified
|
136
|
-
# folder, then selects the Upload Files
|
137
|
-
# command in the menu that appears.
|
138
|
-
def upload_files_to_folder(folder_name)
|
139
|
-
if frm.li(:text=>/A/, :class=>"menuOpen").exist?
|
140
|
-
files_table.row(:text=>/#{Regexp.escape(folder_name)}/).li(:text=>/A/, :class=>"menuOpen").fire_event("onclick")
|
141
|
-
else
|
142
|
-
files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Start Add Menu").fire_event("onfocus")
|
143
|
-
end
|
144
|
-
files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Upload Files").click
|
145
|
-
end
|
146
|
-
|
147
|
-
# Clicks the "Attach a copy" link for the specified
|
148
|
-
# file, then reinstantiates the Class.
|
149
|
-
# If an alert box appears, the method will call itself again.
|
150
|
-
# Note that this can lead to an infinite loop. Will need to fix later.
|
151
|
-
def attach_a_copy(file_name)
|
152
|
-
files_table.row(:text=>/#{Regexp.escape(file_name)}/).link(:href=>/doAttachitem/).click
|
153
|
-
if frm.div(:class=>"alertMessage").exist?
|
154
|
-
sleep 1
|
155
|
-
attach_a_copy(file_name) # TODO - This can loop infinitely
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
# Takes the specified array object containing pointers
|
160
|
-
# to local file resources, then uploads those files to
|
161
|
-
# the folder specified, checks if they all uploaded properly and
|
162
|
-
# if not, re-tries the ones that failed the first time.
|
163
|
-
#
|
164
|
-
# Finally, it re-instantiates the appropriate page class.
|
165
|
-
# Note that it expects all files to be located in the same folder (can be in subfolders of that folder).
|
166
|
-
def upload_multiple_files_to_folder(folder, file_array, file_path="")
|
167
|
-
|
168
|
-
upload = upload_files_to_folder folder
|
169
|
-
|
170
|
-
file_array.each do |file|
|
171
|
-
upload.file_to_upload(file, file_path)
|
172
|
-
upload.add_another_file
|
173
|
-
end
|
174
|
-
|
175
|
-
resources = upload.upload_files_now
|
176
|
-
|
177
|
-
file_array.each do |file|
|
178
|
-
file =~ /(?<=\/).+/
|
179
|
-
# puts $~.to_s # For debugging purposes
|
180
|
-
unless resources.file_names.include?($~.to_s)
|
181
|
-
upload_files = resources.upload_files_to_folder(folder)
|
182
|
-
upload_files.file_to_upload(file, file_path)
|
183
|
-
upload_files.upload_files_now
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
# Clicks the Continue button
|
189
|
-
def continue
|
190
|
-
frm.div(:class=>"highlightPanel").span(:id=>"submitnotifxxx").wait_while_present
|
191
|
-
frm.button(:value=>"Continue").click
|
192
|
-
end
|
193
|
-
|
194
|
-
def open_add_menu(folder_name)
|
195
|
-
files_table.row(:text=>/#{Regexp.escape(folder_name)}/).link(:text=>"Start Add Menu").fire_event("onfocus")
|
196
|
-
end
|
197
|
-
|
198
|
-
end
|
File without changes
|
@@ -1,90 +0,0 @@
|
|
1
|
-
class Time
|
2
|
-
|
3
|
-
# Using the :year_range option (or no option), this method creates a
|
4
|
-
# Time object of a random value, within
|
5
|
-
# the year range specified (default is 5 years in the past).
|
6
|
-
#
|
7
|
-
# Using the :series option, this method returns an array
|
8
|
-
# containing a randomized Time object as its first element (limited by
|
9
|
-
# the specified :year_range value). Subsequent elements will be Time objects
|
10
|
-
# with values putting them later than the prior element, within the specified
|
11
|
-
# range value (see examples).
|
12
|
-
#
|
13
|
-
# Usage Examples:
|
14
|
-
# @example
|
15
|
-
# a random date...
|
16
|
-
# ?> Time.random
|
17
|
-
# => Tue Aug 05 00:00:00 EDT 2007
|
18
|
-
#
|
19
|
-
# birthdays, anyone?...
|
20
|
-
# 5.times { p Time.random(:year_range=>80) }
|
21
|
-
# Wed Feb 06 00:00:00 EDT 1974
|
22
|
-
# Tue Dec 22 00:00:00 EST 1992
|
23
|
-
# Fri Apr 14 00:00:00 EWT 1944
|
24
|
-
# Thu Jul 01 00:00:00 EDT 1993
|
25
|
-
# Wed Oct 02 00:00:00 EDT 2002
|
26
|
-
#
|
27
|
-
# A series of dates are useful for account-related info...
|
28
|
-
# ?> Time.random(:series=>[20.days, 3.years])
|
29
|
-
# => [Sat Jan 22 00:00:00 EST 2005,
|
30
|
-
# Sat Jan 29 12:58:45 EST 2005,
|
31
|
-
# Fri Sep 08 09:34:58 EDT 2006]
|
32
|
-
#
|
33
|
-
# or maybe to simulate events during an hour?...
|
34
|
-
# ?> Time.random(:series=>[1.hour,1.hour,1.hour])
|
35
|
-
# => [Wed Apr 21 00:00:00 EDT 2004,
|
36
|
-
# Wed Apr 21 00:45:59 EDT 2004,
|
37
|
-
# Wed Apr 21 01:02:47 EDT 2004,
|
38
|
-
# Wed Apr 21 01:31:00 EDT 2004]
|
39
|
-
def self.random(params={})
|
40
|
-
years_back = params[:year_range] || 5
|
41
|
-
year = (rand * (years_back)).ceil + (Time.now.year - years_back)
|
42
|
-
month = (rand * 12).ceil
|
43
|
-
day = (rand * 31).ceil
|
44
|
-
series = [date = Time.local(year, month, day)]
|
45
|
-
if params[:series]
|
46
|
-
params[:series].each do |some_time_after|
|
47
|
-
series << series.last + (rand * some_time_after).ceil
|
48
|
-
end
|
49
|
-
return series
|
50
|
-
end
|
51
|
-
date
|
52
|
-
end
|
53
|
-
|
54
|
-
end # Time
|
55
|
-
|
56
|
-
module Enumerable
|
57
|
-
|
58
|
-
# Use for getting a natural sort order instead of the ASCII
|
59
|
-
# sort order.
|
60
|
-
def alphabetize
|
61
|
-
sort { |a, b| grouped_compare(a, b) }
|
62
|
-
end
|
63
|
-
|
64
|
-
# Use for sorting an Enumerable object in place.
|
65
|
-
def alphabetize!
|
66
|
-
sort! { |a, b| grouped_compare(a, b) }
|
67
|
-
end
|
68
|
-
|
69
|
-
private
|
70
|
-
def grouped_compare(a, b)
|
71
|
-
loop {
|
72
|
-
a_chunk, a = extract_alpha_or_number_group(a)
|
73
|
-
b_chunk, b = extract_alpha_or_number_group(b)
|
74
|
-
ret = a_chunk <=> b_chunk
|
75
|
-
return -1 if a_chunk == ''
|
76
|
-
return ret if ret != 0
|
77
|
-
}
|
78
|
-
end
|
79
|
-
|
80
|
-
def extract_alpha_or_number_group(item)
|
81
|
-
test_item = item.downcase
|
82
|
-
matchdata = /([a-z]+|[\d]+)/.match(test_item)
|
83
|
-
if matchdata.nil?
|
84
|
-
["", ""]
|
85
|
-
else
|
86
|
-
[matchdata[0], test_item = test_item[matchdata.offset(0)[1] .. -1]]
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
end # Enumerable
|
@@ -1,38 +0,0 @@
|
|
1
|
-
class AnnouncementObject
|
2
|
-
|
3
|
-
include PageObject
|
4
|
-
include Utilities
|
5
|
-
include ToolsMenu
|
6
|
-
|
7
|
-
attr_accessor :title, :body, :site, :link
|
8
|
-
|
9
|
-
def initialize(browser, opts={})
|
10
|
-
@browser = browser
|
11
|
-
|
12
|
-
defaults = {
|
13
|
-
:title=>random_alphanums,
|
14
|
-
:body=>random_multiline(500, 10, :alpha)
|
15
|
-
}
|
16
|
-
options = defaults.merge(opts)
|
17
|
-
@title=options[:title]
|
18
|
-
@body=options[:body]
|
19
|
-
@site=options[:site]
|
20
|
-
raise "You must specify a Site for the announcement" if @site==nil
|
21
|
-
end
|
22
|
-
|
23
|
-
def create
|
24
|
-
my_workspace.open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
25
|
-
announcements unless @browser.title=~/Announcements$/
|
26
|
-
on_page Announcements do |page|
|
27
|
-
page.add
|
28
|
-
end
|
29
|
-
on_page AddEditAnnouncements do |page|
|
30
|
-
page.title=@title
|
31
|
-
page.body=@body
|
32
|
-
page.add_announcement
|
33
|
-
end
|
34
|
-
on_page Announcements do |page|
|
35
|
-
@link = page.href(@title)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
class AssessmentObject
|
2
|
-
|
3
|
-
include PageObject
|
4
|
-
include Utilities
|
5
|
-
include ToolsMenu
|
6
|
-
|
7
|
-
attr_accessor :title, :site
|
8
|
-
|
9
|
-
def initialize(browser, opts={})
|
10
|
-
@browser = browser
|
11
|
-
|
12
|
-
defaults = {
|
13
|
-
:title=>random_alphanums,
|
14
|
-
:site=>"placeholder"
|
15
|
-
}
|
16
|
-
options = defaults.merge(opts)
|
17
|
-
@title=options[:title]
|
18
|
-
@site=options[:site]
|
19
|
-
raise "You must specify a Site for your Assessment" if @site==nil
|
20
|
-
end
|
21
|
-
|
22
|
-
def create
|
23
|
-
my_workspace.open_my_site_by_name @site unless @browser.title=~/#{@site}/
|
24
|
-
tests_and_quizzes unless @browser.title=~/Tests & Quizzes$/
|
25
|
-
on_page AssessmentsList do |page|
|
26
|
-
page.title=@title
|
27
|
-
page.create
|
28
|
-
end
|
29
|
-
# Do more here eventually...
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|