sakai-cle-test-api 0.0.75 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. data/lib/sakai-cle-test-api.rb +4 -5
  2. data/lib/sakai-cle-test-api/base_page.rb +20 -0
  3. data/lib/sakai-cle-test-api/core-ext.rb +90 -0
  4. data/lib/sakai-cle-test-api/data_objects/announcement.rb +81 -0
  5. data/lib/sakai-cle-test-api/data_objects/assessment.rb +32 -0
  6. data/lib/sakai-cle-test-api/data_objects/assignment.rb +90 -0
  7. data/lib/sakai-cle-test-api/data_objects/event.rb +89 -0
  8. data/lib/sakai-cle-test-api/data_objects/lesson.rb +185 -0
  9. data/lib/sakai-cle-test-api/data_objects/resource.rb +209 -0
  10. data/lib/sakai-cle-test-api/data_objects/site.rb +208 -0
  11. data/lib/sakai-cle-test-api/data_objects/syllabus.rb +39 -0
  12. data/lib/sakai-cle-test-api/data_objects/web_content_tool.rb +51 -0
  13. data/lib/sakai-cle-test-api/data_objects/wiki.rb +53 -0
  14. data/lib/sakai-cle-test-api/gem_ext.rb +23 -0
  15. data/lib/sakai-cle-test-api/page_helper.rb +22 -0
  16. data/lib/sakai-cle-test-api/page_maker.rb +48 -0
  17. data/lib/sakai-cle-test-api/page_objects/account.rb +111 -0
  18. data/lib/sakai-cle-test-api/page_objects/aliases.rb +43 -0
  19. data/lib/sakai-cle-test-api/page_objects/announcements.rb +190 -0
  20. data/lib/sakai-cle-test-api/page_objects/assessments.rb +874 -0
  21. data/lib/sakai-cle-test-api/page_objects/assignments.rb +771 -0
  22. data/lib/sakai-cle-test-api/page_objects/basic_lti.rb +6 -0
  23. data/lib/sakai-cle-test-api/page_objects/blogger.rb +205 -0
  24. data/lib/sakai-cle-test-api/page_objects/blogs.rb +60 -0
  25. data/lib/sakai-cle-test-api/page_objects/calendar.rb +431 -0
  26. data/lib/sakai-cle-test-api/page_objects/calendar_summary.rb +1 -0
  27. data/lib/sakai-cle-test-api/page_objects/chat_room.rb +12 -0
  28. data/lib/sakai-cle-test-api/page_objects/drop_box.rb +9 -0
  29. data/lib/sakai-cle-test-api/page_objects/email_archive.rb +22 -0
  30. data/lib/sakai-cle-test-api/page_objects/evaluations.rb +158 -0
  31. data/lib/sakai-cle-test-api/page_objects/feedback.rb +36 -0
  32. data/lib/sakai-cle-test-api/page_objects/forms.rb +120 -0
  33. data/lib/sakai-cle-test-api/page_objects/forums.rb +289 -0
  34. data/lib/sakai-cle-test-api/page_objects/glossary.rb +117 -0
  35. data/lib/sakai-cle-test-api/page_objects/gradebook.rb +29 -0
  36. data/lib/sakai-cle-test-api/page_objects/gradebook2.rb +17 -0
  37. data/lib/sakai-cle-test-api/page_objects/home.rb +36 -0
  38. data/lib/sakai-cle-test-api/page_objects/jforums.rb +444 -0
  39. data/lib/sakai-cle-test-api/page_objects/job_scheduler.rb +121 -0
  40. data/lib/sakai-cle-test-api/page_objects/lessons.rb +360 -0
  41. data/lib/sakai-cle-test-api/page_objects/login.rb +28 -0
  42. data/lib/sakai-cle-test-api/page_objects/matrix.rb +241 -0
  43. data/lib/sakai-cle-test-api/page_objects/media_gallery.rb +13 -0
  44. data/lib/sakai-cle-test-api/page_objects/messages.rb +622 -0
  45. data/lib/sakai-cle-test-api/page_objects/my_workspace.rb +44 -0
  46. data/lib/sakai-cle-test-api/page_objects/news.rb +8 -0
  47. data/lib/sakai-cle-test-api/page_objects/podcasts.rb +27 -0
  48. data/lib/sakai-cle-test-api/page_objects/polls.rb +69 -0
  49. data/lib/sakai-cle-test-api/page_objects/portfolio_templates.rb +161 -0
  50. data/lib/sakai-cle-test-api/page_objects/portfolios.rb +162 -0
  51. data/lib/sakai-cle-test-api/page_objects/post_em.rb +1 -0
  52. data/lib/sakai-cle-test-api/page_objects/profile.rb +51 -0
  53. data/lib/sakai-cle-test-api/page_objects/profile2.rb +344 -0
  54. data/lib/sakai-cle-test-api/page_objects/public_search.rb +61 -0
  55. data/lib/sakai-cle-test-api/page_objects/realms.rb +19 -0
  56. data/lib/sakai-cle-test-api/page_objects/resources.rb +326 -0
  57. data/lib/sakai-cle-test-api/{resources_roster.rb → page_objects/resources_roster.rb} +0 -0
  58. data/lib/sakai-cle-test-api/page_objects/rosters.rb +70 -0
  59. data/lib/sakai-cle-test-api/page_objects/rwiki.rb +34 -0
  60. data/lib/sakai-cle-test-api/page_objects/search.rb +34 -0
  61. data/lib/sakai-cle-test-api/page_objects/sections.rb +295 -0
  62. data/lib/sakai-cle-test-api/page_objects/single_user.rb +1 -0
  63. data/lib/sakai-cle-test-api/page_objects/site_setup.rb +686 -0
  64. data/lib/sakai-cle-test-api/page_objects/site_statistics.rb +1 -0
  65. data/lib/sakai-cle-test-api/page_objects/sites.rb +255 -0
  66. data/lib/sakai-cle-test-api/page_objects/styles.rb +74 -0
  67. data/lib/sakai-cle-test-api/page_objects/syllabus.rb +166 -0
  68. data/lib/sakai-cle-test-api/page_objects/user_membership.rb +57 -0
  69. data/lib/sakai-cle-test-api/page_objects/users.rb +88 -0
  70. data/lib/sakai-cle-test-api/rich_text.rb +27 -0
  71. data/lib/sakai-cle-test-api/utilities.rb +260 -0
  72. data/lib/sakai-cle-test-api/workflows.rb +224 -0
  73. data/sakai-cle-test-api.gemspec +3 -5
  74. metadata +74 -64
  75. data/lib/sakai-cle-test-api/admin_page_elements.rb +0 -1030
  76. data/lib/sakai-cle-test-api/announcements.rb +0 -59
  77. data/lib/sakai-cle-test-api/assessments.rb +0 -194
  78. data/lib/sakai-cle-test-api/assignments.rb +0 -113
  79. data/lib/sakai-cle-test-api/basic_lti.rb +0 -5
  80. data/lib/sakai-cle-test-api/blogs.rb +0 -5
  81. data/lib/sakai-cle-test-api/calendar.rb +0 -65
  82. data/lib/sakai-cle-test-api/calendar_summary.rb +0 -0
  83. data/lib/sakai-cle-test-api/common_page_elements.rb +0 -1228
  84. data/lib/sakai-cle-test-api/drop_box.rb +0 -0
  85. data/lib/sakai-cle-test-api/email_archive.rb +0 -10
  86. data/lib/sakai-cle-test-api/forums.rb +0 -39
  87. data/lib/sakai-cle-test-api/gradebook.rb +0 -10
  88. data/lib/sakai-cle-test-api/gradebook2.rb +0 -6
  89. data/lib/sakai-cle-test-api/messages.rb +0 -119
  90. data/lib/sakai-cle-test-api/news.rb +0 -9
  91. data/lib/sakai-cle-test-api/polls.rb +0 -24
  92. data/lib/sakai-cle-test-api/post_em.rb +0 -0
  93. data/lib/sakai-cle-test-api/profile.rb +0 -17
  94. data/lib/sakai-cle-test-api/profile2.rb +0 -43
  95. data/lib/sakai-cle-test-api/rwiki.rb +0 -0
  96. data/lib/sakai-cle-test-api/sections.rb +0 -47
  97. data/lib/sakai-cle-test-api/single_user.rb +0 -0
  98. data/lib/sakai-cle-test-api/site_page_elements.rb +0 -2350
  99. data/lib/sakai-cle-test-api/site_statistics.rb +0 -0
  100. data/lib/sakai-cle-test-api/syllabus.rb +0 -77
  101. data/lib/sakai-cle-test-api/tools_menu.rb +0 -415
@@ -0,0 +1,44 @@
1
+ # The Page that appears when you are not in a particular Site
2
+ # Note that this page differs depending on what user is logged in.
3
+ # The definitions below include all potential objects. We may
4
+ # have to split this class out into user-specific classes.
5
+ class MyWorkspace < BasePage
6
+
7
+ frame_element
8
+
9
+ # Because the links below are contained within iframes
10
+ # we need the in_frame method in place so that the
11
+ # links can be properly parsed in the PageObject
12
+ # methods for them.
13
+ # Note that the iframes are being identified by their
14
+ # index values on the page. This is a very brittle
15
+ # method for identifying them, but for now it's our
16
+ # only option because both the <id> and <name>
17
+ # tags are unique for every site.
18
+ # Calendar Options button
19
+ action(:calendar_options) { |b| b.frm.link(:text=>"Options").click }
20
+
21
+ # My Workspace Information Options
22
+ action(:my_workspace_information_options) { |b| b.frm.link(:text=>"Options").click }
23
+ # Message of the Day, Options button
24
+ action(:message_of_the_day_options) { |b| b.frm.link(:text=>"Options").click }
25
+
26
+
27
+ element(:select_page_size) { |b| b.frm.select_list(:id=>"selectPageSize").click }
28
+ action(:next) { |b| b.frm.button(:name=>"eventSubmit_doList_next").click }
29
+ action(:last) { |b| b.frm.button(:name=>"eventSubmit_doList_last").click }
30
+ action(:previous) { |b| b.frm.button(:name=>"eventSubmit_doList_prev").click }
31
+ action(:first) { |b| b.frm.button(:name=>"eventSubmit_doList_first").click }
32
+
33
+ # Returns an array of strings of the Calendar Events listed below
34
+ # the Calendar
35
+ def calendar_events
36
+ events = []
37
+ table = @browser.frame(:class=>"portletMainIframe", :index=>2).table(:id=>"calendarForm:datalist_event_list")
38
+ table.wait_until_present
39
+ table.rows.each do |row|
40
+ events << row.link.text
41
+ end
42
+ return events
43
+ end
44
+ end
@@ -0,0 +1,8 @@
1
+ #================
2
+ # News pages
3
+ #================
4
+ #
5
+ class News < BasePage
6
+
7
+ frame_element
8
+ end
@@ -0,0 +1,27 @@
1
+ #===============
2
+ # Podcast pages
3
+ #================
4
+
5
+ #
6
+ class Podcasts < BasePage
7
+
8
+ frame_element
9
+
10
+ def add
11
+ frm.link(:text=>"Add").click
12
+ AddEditPodcast.new(@browser)
13
+ end
14
+
15
+ def podcast_titles
16
+ titles = []
17
+ frm.spans.each do |span|
18
+ if span.class_name == "podTitleFormat"
19
+ titles << span.text
20
+ end
21
+ end
22
+ return titles
23
+ end
24
+
25
+
26
+
27
+ end
@@ -0,0 +1,69 @@
1
+ #================
2
+ # Polls pages
3
+ #================
4
+
5
+ #
6
+ class Polls < BasePage
7
+
8
+ frame_element
9
+
10
+ action(:add) { |b| b.frm.link(:text=>"Add").click }
11
+
12
+ def questions
13
+ questions = []
14
+ frm.table(:id=>"sortableTable").rows.each do |row|
15
+ questions << row[0].link.text
16
+ end
17
+ return questions
18
+ end
19
+
20
+ # Returns an array containing the list of poll questions displayed.
21
+ def list
22
+ list = []
23
+ frm.table(:id=>"sortableTable").rows.each_with_index do |row, index|
24
+ next if index==0
25
+ list << row[0].link(:href=>/voteQuestion/).text
26
+ end
27
+ return list
28
+ end
29
+
30
+ end
31
+
32
+ #
33
+ class AddEditPoll < BasePage
34
+
35
+ frame_element
36
+ include FCKEditor
37
+
38
+ expected_element :editor
39
+
40
+ element(:editor) { |b| b.frm.frame(:id, "newpolldescr::input___Frame") }
41
+
42
+ def additional_instructions=(text)
43
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
44
+ end
45
+
46
+ action(:save_and_add_options) { |b| b.frm.button(:value=>"Save and add options").click }
47
+ action(:save) { |b| b.frm.button(:value=>"Save").click }
48
+ element(:question) { |b| b.frm.text_field(:id=>"new-poll-text") }
49
+
50
+ end
51
+
52
+ #
53
+ class AddAnOption < BasePage
54
+
55
+ frame_element
56
+ include FCKEditor
57
+
58
+ expected_element :editor
59
+
60
+ element(:editor) { |b| b.frm.frame(:id, "optText::input___Frame") }
61
+
62
+ def answer_option=(text)
63
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
64
+ end
65
+
66
+ action(:save) { |b| b.frm.button(:value=>"Save").click }
67
+ action(:save_and_add_options) { |b| b.frm.button(:value=>"Save and add options").click }
68
+
69
+ end
@@ -0,0 +1,161 @@
1
+ #================
2
+ # Portfolio Templates pages
3
+ #================
4
+
5
+ #
6
+ class PortfolioTemplates < BasePage
7
+
8
+ frame_element
9
+
10
+ # Clicks the Add link and instantiates the
11
+ # AddPortfolioTemplate class.
12
+ def add
13
+ frm.link(:text=>"Add").click
14
+ AddPortfolioTemplate.new(@browser)
15
+ end
16
+
17
+ # Clicks the "Publish" link for the specified Template.
18
+ def publish(templatename)
19
+ frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(templatename)}/).link(:text=>"Publish").click
20
+ end
21
+
22
+ # Clicks the "Edit" link for the specified Template.
23
+ def edit(templatename)
24
+ frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(templatename)}/).link(:text=>"Edit").click
25
+ end
26
+
27
+ # Clicks the "Delete" link for the specified Template.
28
+ def delete(templatename)
29
+ frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(templatename)}/).link(:text=>"Delete").click
30
+ end
31
+
32
+ # Clicks the "Copy" link for the specified Template.
33
+ def copy(templatename)
34
+ frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(templatename)}/).link(:text=>"Copy").click
35
+ end
36
+
37
+ # Clicks the "Export" link for the specified Template.
38
+ def export(templatename)
39
+ frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(templatename)}/).link(:text=>"Export").click
40
+ end
41
+
42
+ end
43
+
44
+ #
45
+ class AddPortfolioTemplate < BasePage
46
+
47
+ frame_element
48
+
49
+ # Clicks the Continue button and instantiates the BuildTemplate Class.
50
+ def continue
51
+ frm.button(:value=>"Continue").click
52
+ BuildTemplate.new(@browser)
53
+ end
54
+
55
+ element(:name) { |b| b.frm.text_field(:id=>"name-id") }
56
+ element(:description) { |b| b.frm.text_field(:id=>"description") }
57
+
58
+
59
+ end
60
+
61
+ #
62
+ class BuildTemplate < BasePage
63
+
64
+ frame_element
65
+
66
+ # Clicks the Select File link and instantiates the
67
+ # PortfolioAttachFiles Class.
68
+ def select_file
69
+ frm.link(:text=>"Select File").click
70
+ PortfolioAttachFiles.new(@browser)
71
+ end
72
+
73
+ # Clicks the Continue button and instantiates
74
+ # PortfolioContent Class.
75
+ def continue
76
+ frm.button(:value=>"Continue").click
77
+ PortfolioContent.new(@browser)
78
+ end
79
+
80
+ element(:outline_options_form_type) { |b| b.frm.select(:id=>"propertyFormType-id") }
81
+
82
+ end
83
+
84
+ #
85
+ class PortfoliosUploadFiles < BasePage # TODO - This class is not DRY. Identical methods in multiple classes
86
+
87
+ frame_element
88
+
89
+ @@filex=0
90
+
91
+ # Note that the file_to_upload method can be used
92
+ # multiple times, but it assumes
93
+ # that the add_another_file method is used
94
+ # before it, every time except before the first time.
95
+ def file_to_upload(file_name, file_path)
96
+ frm.file_field(:id, "content_#{@@filex}").set(file_path + file_name)
97
+ @@filex+=1
98
+ end
99
+
100
+ # Clicks the Upload Files Now button and instantiates the
101
+ # PortfolioAttachFiles Class.
102
+ def upload_files_now
103
+ frm.button(:value=>"Upload Files Now").click
104
+ sleep 1 # TODO - use a wait clause here
105
+ @@filex=0
106
+ PortfolioAttachFiles.new(@browser)
107
+ end
108
+
109
+ # Clicks the Add Another File link.
110
+ def add_another_file
111
+ frm.link(:text=>"Add Another File").click
112
+ end
113
+
114
+ end
115
+
116
+ #
117
+ class PortfolioContent < BasePage
118
+
119
+ frame_element
120
+
121
+ # Clicks the Continue button and instantiates the
122
+ # SupportingFilesPortfolio Class.
123
+ def continue
124
+ frm.button(:value=>"Continue").click
125
+ SupportingFilesPortfolio.new(@browser)
126
+ end
127
+
128
+
129
+ element(:type) { |b| b.frm.select(:id=>"item.type") }
130
+ element(:name) { |b| b.frm.text_field(:id=>"item.name-id") }
131
+ element(:title) { |b| b.frm.text_field(:id=>"item.title-id") }
132
+ element(:description) { |b| b.frm.text_field(:id=>"item.description-id") }
133
+ action(:add_to_list) { |b| b.frm.button(:value=>"Add To List").click }
134
+ element(:image) { |b| b.frm.checkbox(:id=>"image-id") }
135
+
136
+ end
137
+
138
+ #
139
+ class SupportingFilesPortfolio < BasePage
140
+
141
+ frame_element
142
+
143
+ # Clicks the Finish button and instantiates
144
+ # the PortfolioTemplates Class.
145
+ def finish
146
+ frm.button(:value=>"Finish").click
147
+ PortfolioTemplates.new(@browser)
148
+ end
149
+
150
+ # Clicks the Select File link and instantiates
151
+ # the PortfolioAttachFiles Class.
152
+ def select_file
153
+ frm.link(:text=>"Select File").click
154
+ PortfolioAttachFiles.new(@browser)
155
+ end
156
+
157
+
158
+ action(:add_to_list) { |b| b.frm.button(:value=>"Add To List").click }
159
+ element(:name) { |b| b.frm.text_field(:id=>"fileRef.usage-id") }
160
+
161
+ end
@@ -0,0 +1,162 @@
1
+ #================
2
+ # Portfolios pages
3
+ #================
4
+
5
+ #
6
+ class Portfolios < BasePage
7
+
8
+ frame_element
9
+
10
+ def create_new_portfolio
11
+ frm.link(:text=>"Create New Portfolio").click
12
+ AddPortfolio.new(@browser)
13
+ end
14
+
15
+ def list
16
+ list = []
17
+ frm.table(:class=>"listHier ospTable").rows.each do |row|
18
+ list << row[0].text
19
+ end
20
+ list.delete_at(0)
21
+ return list
22
+ end
23
+
24
+ def shared(portfolio_name)
25
+ frm.table(:class=>"listHier ospTable").row(:text=>/#{Regexp.escape(portfolio_name)}/)[5].text
26
+ end
27
+
28
+
29
+
30
+ end
31
+
32
+ #
33
+ class AddPortfolio < BasePage
34
+
35
+ frame_element
36
+
37
+ def create
38
+ frm.button(:value=>"Create").click
39
+ EditPortfolio.new(@browser)
40
+ end
41
+
42
+
43
+ element(:name) { |b| b.frm.text_field(:name=>"presentationName") }
44
+ element(:design_your_own_portfolio) { |b| b.frm.radio(:id=>"templateId-freeForm") }
45
+
46
+ end
47
+
48
+ #
49
+ class EditPortfolio < BasePage
50
+
51
+ frame_element
52
+
53
+ def add_edit_content
54
+ frm.link(:text=>"Add/Edit Content").click
55
+ AddEditPortfolioContent.new @browser
56
+ end
57
+
58
+
59
+ action(:edit_title) { |b| b.frm.link(:text=>"Edit Title").click }
60
+ action(:save_changes) { |b| b.frm.link(:text=>"Save Changes").click }
61
+ element(:active) { |b| b.frm.radio(:id=>"btnActive") }
62
+ element(:inactive) { |b| b.frm.radio(:id=>"btnInactive") }
63
+
64
+ end
65
+
66
+ #
67
+ class AddEditPortfolioContent < BasePage
68
+
69
+ frame_element
70
+
71
+ def add_page
72
+ frm.link(:text=>"Add Page").click
73
+ AddEditPortfolioPage.new(@browser)
74
+ end
75
+
76
+ def share_with_others
77
+ frm.link(:text=>"Share with Others").click
78
+ SharePortfolio.new @browser
79
+ end
80
+
81
+
82
+ action(:save_changes) { |b| b.frm.button(:value=>"Save Changes").click }
83
+
84
+ end
85
+
86
+ #
87
+ class AddEditPortfolioPage < BasePage
88
+
89
+ frame_element
90
+
91
+ def add_page
92
+ frm.button(:value=>"Add Page").click
93
+ AddEditPortfolioContent.new(@browser)
94
+ end
95
+
96
+ def select_layout
97
+ frm.link(:text=>"Select Layout").click
98
+ ManagePortfolioLayouts.new @browser
99
+ end
100
+
101
+ def select_style
102
+ frm.link(:text=>"Select Style").click
103
+ SelectPortfolioStyle.new @browser
104
+ end
105
+
106
+ def simple_html_content=(text)
107
+ frm.frame(:id, "_id1:arrange:_id49_inputRichText___Frame").div(:title=>"Select All").fire_event("onclick")
108
+ frm.frame(:id, "_id1:arrange:_id49_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys :backspace
109
+ frm.frame(:id, "_id1:arrange:_id49_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
110
+ end
111
+
112
+
113
+ element(:title) { |b| b.frm.text_field(:id=>"_id1:title") }
114
+ element(:description) { |b| b.frm.text_field(:id=>"_id1:description") }
115
+ element(:keywords) { |b| b.frm.text_field(:id=>"_id1:keywords") }
116
+
117
+
118
+ end
119
+
120
+ #
121
+ class ManagePortfolioLayouts < BasePage
122
+
123
+ frame_element
124
+
125
+ def select(layout_name)
126
+ frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(layout_name)}/).link(:text=>"Select").click
127
+ AddEditPortfolioPage.new @browser
128
+ end
129
+
130
+ def go_back
131
+ frm.button(:value=>"Go Back").click
132
+ AddEditPortfolioPage.new @browser
133
+ end
134
+
135
+ end
136
+
137
+ #
138
+ class SharePortfolio < BasePage
139
+
140
+ frame_element
141
+
142
+ def click_here_to_share_with_others
143
+ frm.link(:text=>"Click here to share with others").click
144
+ AddPeopleToShare.new(@browser)
145
+ end
146
+
147
+ def summary
148
+ frm.link(:text=>"Summary").click
149
+ EditPortfolio.new @browser
150
+ end
151
+
152
+
153
+ element(:everyone_on_the_internet) { |b| b.frm.checkbox(:id=>"public_checkbox") }
154
+
155
+ end
156
+
157
+ #
158
+ class AddPeopleToShare < BasePage
159
+
160
+ frame_element
161
+
162
+ end