sakai-cle-test-api 0.0.9 → 0.0.75

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/lib/sakai-cle-test-api.rb +2 -7
  2. data/lib/sakai-cle-test-api/admin_page_elements.rb +2 -6
  3. data/lib/sakai-cle-test-api/announcements.rb +7 -274
  4. data/lib/sakai-cle-test-api/assessments.rb +27 -930
  5. data/lib/sakai-cle-test-api/assignments.rb +13 -769
  6. data/lib/sakai-cle-test-api/basic_lti.rb +1 -5
  7. data/lib/sakai-cle-test-api/blogs.rb +2 -54
  8. data/lib/sakai-cle-test-api/calendar.rb +8 -423
  9. data/lib/sakai-cle-test-api/common_page_elements.rb +172 -69
  10. data/lib/sakai-cle-test-api/drop_box.rb +0 -21
  11. data/lib/sakai-cle-test-api/email_archive.rb +1 -15
  12. data/lib/sakai-cle-test-api/forums.rb +8 -282
  13. data/lib/sakai-cle-test-api/gradebook.rb +1 -19
  14. data/lib/sakai-cle-test-api/gradebook2.rb +1 -15
  15. data/lib/sakai-cle-test-api/messages.rb +15 -551
  16. data/lib/sakai-cle-test-api/news.rb +1 -3
  17. data/lib/sakai-cle-test-api/polls.rb +3 -65
  18. data/lib/sakai-cle-test-api/profile.rb +2 -36
  19. data/lib/sakai-cle-test-api/profile2.rb +6 -315
  20. data/lib/sakai-cle-test-api/sections.rb +8 -198
  21. data/lib/sakai-cle-test-api/site_page_elements.rb +441 -4
  22. data/lib/sakai-cle-test-api/syllabus.rb +7 -149
  23. data/lib/sakai-cle-test-api/tools_menu.rb +20 -3
  24. data/lib/sakai-cle-test-api/utilities.rb +0 -260
  25. data/sakai-cle-test-api.gemspec +3 -2
  26. metadata +19 -21
  27. data/lib/sakai-cle-test-api/add_files.rb +0 -198
  28. data/lib/sakai-cle-test-api/chat_room.rb +0 -0
  29. data/lib/sakai-cle-test-api/core-ext.rb +0 -90
  30. data/lib/sakai-cle-test-api/data_objects/announcement.rb +0 -38
  31. data/lib/sakai-cle-test-api/data_objects/assessment.rb +0 -32
  32. data/lib/sakai-cle-test-api/data_objects/assignment.rb +0 -62
  33. data/lib/sakai-cle-test-api/data_objects/event.rb +0 -86
  34. data/lib/sakai-cle-test-api/data_objects/lesson.rb +0 -137
  35. data/lib/sakai-cle-test-api/data_objects/resource.rb +0 -174
  36. data/lib/sakai-cle-test-api/data_objects/site.rb +0 -213
  37. data/lib/sakai-cle-test-api/data_objects/syllabus.rb +0 -7
  38. data/lib/sakai-cle-test-api/data_objects/topic.rb +0 -0
  39. data/lib/sakai-cle-test-api/data_objects/web_content_tool.rb +0 -52
  40. data/lib/sakai-cle-test-api/data_objects/wiki.rb +0 -7
  41. data/lib/sakai-cle-test-api/gem_ext.rb +0 -45
  42. data/lib/sakai-cle-test-api/lessons.rb +0 -440
  43. data/lib/sakai-cle-test-api/resources.rb +0 -138
  44. data/lib/sakai-cle-test-api/rich_text.rb +0 -13
@@ -143,12 +143,11 @@ class EditEvaluationAssignment
143
143
  end
144
144
 
145
145
  def check_group(title)
146
- frm.table(:class=>"listHier lines nolines").wait_until_present
147
146
  frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(title)}/).checkbox(:name=>"selectedGroupIDs").set
148
147
  end
149
148
 
150
149
  in_frame(:class=>"portletMainIframe") do |frame|
151
- link(:assign_to_evaluation_groups, :text=>"Assign to Evaluation Groups", :frame=>frame)
150
+
152
151
  end
153
152
  end
154
153
 
@@ -227,6 +226,11 @@ class Home
227
226
  button(:update_announcements, :name=>"eventSubmit_doUpdate", :frame=>frame)
228
227
  end
229
228
 
229
+ # The Home class should be instantiated whenever the user
230
+ # context is a given Site or the Administration Workspace.
231
+ # In that context, the frame index is 1.
232
+ $frame_index=1
233
+
230
234
  # Gets the text of the displayed announcements, for
231
235
  # test case verification
232
236
  def announcements_list
@@ -298,7 +302,135 @@ class MyWorkspace
298
302
 
299
303
  end
300
304
 
305
+ #================
306
+ # Resources Pages
307
+ #================
308
+
309
+ # New class template. For quick class creation...
310
+ class ResourcesUploadFiles
311
+
312
+ include ToolsMenu
313
+
314
+ @@filex=0
315
+
316
+ # Enters the specified folder/filename value into
317
+ # the file field on the page. Note that files are
318
+ # assumed to be in the relative path ../../data/sakai-cle-test-api
319
+ # The method will throw an error if the specified file
320
+ # is not found.
321
+ #
322
+ # This method is designed to be able to use
323
+ # multiple times, but it assumes
324
+ # that the add_another_file method is used
325
+ # before it, every time except before the first time.
326
+ def file_to_upload(file_name, file_path="")
327
+ frm.file_field(:id, "content_#{@@filex}").set(file_path + file_name)
328
+ @@filex+=1
329
+ end
330
+
331
+ # Clicks the Upload Files Now button, resets the
332
+ # @@filex class variable back to zero, and instantiates
333
+ # the Resources page class.
334
+ def upload_files_now
335
+ frm.button(:value=>"Upload Files Now").click
336
+ @@filex=0
337
+ Resources.new(@browser)
338
+ end
339
+
340
+ # Clicks the Add Another File link.
341
+ def add_another_file
342
+ frm.link(:text=>"Add Another File").click
343
+ end
344
+
345
+ end
346
+
347
+ class EditFileDetails
348
+
349
+ include ToolsMenu
350
+
351
+ # Clicks the Update button, then instantiates
352
+ # the Resources page class.
353
+ def update
354
+ frm.button(:value=>"Update").click
355
+ Resources.new(@browser)
356
+ end
357
+
358
+ # Enters the specified string into the title field.
359
+ def title=(title)
360
+ frm.text_field(:id=>"displayName_0").set(title)
361
+ end
362
+
363
+ # Enters the specified string into the description field.
364
+ def description=(description)
365
+ frm.text_field(:id=>"description_0").set(description)
366
+ end
367
+
368
+ # Sets the radio button for publically viewable.
369
+ def select_publicly_viewable
370
+ frm.radio(:id=>"access_mode_public_0").set
371
+ end
372
+
373
+ # Checks the checkbox for showing only on the specifed
374
+ # condition.
375
+ def check_show_only_if_condition
376
+ frm.checkbox(:id=>"cbCondition_0")
377
+ end
378
+
379
+ # Selects the specified Gradebook item value in the
380
+ # select list.
381
+ def gradebook_item=(item)
382
+ frm.select(:id=>"selectResource_0").select(item)
383
+ end
384
+
385
+ # Selects the specified value in the item condition
386
+ # field.
387
+ def item_condition=(condition)
388
+ frm.select(:id=>"selectCondition_0").select(condition)
389
+ end
390
+
391
+ # Sets the Grade field to the specified value.
392
+ def assignment_grade=(grade)
393
+ frm.text_field(:id=>"assignment_grade_0").set(grade)
394
+ end
395
+ end
396
+
397
+ class CreateFolders #FIXME - Need to add functions for adding multiple folders
398
+
399
+ include ToolsMenu
400
+
401
+ # Clicks the Create Folders Now button, then
402
+ # instantiates the Resources page class.
403
+ def create_folders_now
404
+ frm.button(:value=>"Create Folders Now").click
405
+ Resources.new(@browser)
406
+ end
407
+
408
+ # Enters the specified string in the Folder Name
409
+ # text field.
410
+ def folder_name=(name)
411
+ frm.text_field(:id=>"content_0").set(name)
412
+ end
413
+
414
+ end
415
+
416
+ # Resources page for a given Site, in the Course Tools menu
417
+ class Resources < AddFiles
301
418
 
419
+ include ToolsMenu
420
+
421
+ def initialize(browser)
422
+ @browser = browser
423
+
424
+ @@classes = {
425
+ :this=> "Resources",
426
+ :parent => "Resources",
427
+ :file_details => "EditFileDetails",
428
+ :create_folders => "CreateFolders",
429
+ :upload_files => "ResourcesUploadFiles"
430
+ }
431
+ end
432
+
433
+ end
302
434
 
303
435
  #================
304
436
  # Administrative Search Pages
@@ -382,11 +514,7 @@ class SiteSetup
382
514
 
383
515
  include PageObject
384
516
  include ToolsMenu
385
-
386
- def search_field
387
- frm.text_field(:id, "search")
388
- end
389
-
517
+
390
518
  # Clicks the "New" link on the Site Setup page.
391
519
  # instantiates the SiteType class.
392
520
  def new
@@ -399,7 +527,7 @@ class SiteSetup
399
527
  # Then clicks the Edit button and instantiates
400
528
  # The SiteSetupEdit class.
401
529
  def edit(site_name)
402
- search_field.value=Regexp.escape(site_name)
530
+ frm.text_field(:id, "search").value=Regexp.escape(site_name)
403
531
  frm.button(:value=>"Search").click
404
532
  frm.div(:class=>"portletBody").checkbox(:name=>"selectedMembers").set
405
533
  frm.div(:class=>"portletBody").link(:text, "Edit").click
@@ -410,7 +538,7 @@ class SiteSetup
410
538
  # field, clicks the Search button, then reinstantiates
411
539
  # the Class due to the page refresh.
412
540
  def search(site_name)
413
- search_field.set site_name
541
+ frm.text_field(:id, "search").set site_name
414
542
  frm.button(:value, "Search").click
415
543
  SiteSetup.new(@browser)
416
544
  end
@@ -419,7 +547,7 @@ class SiteSetup
419
547
  # checks the site, clicks the delete button,
420
548
  # and instantiates the DeleteSite class.
421
549
  def delete(site_name)
422
- search_field.value=site_name
550
+ frm.text_field(:id, "Search").value=site_name
423
551
  frm.button(:value=>"Search").click
424
552
  frm.checkbox(:name=>"selectedMembers").set
425
553
  frm.div(:class=>"portletBody").link(:text, "Delete").click
@@ -475,17 +603,11 @@ class SiteEditor
475
603
  frm.button(:value=>"Update Participants").click
476
604
  SiteEditor.new(@browser)
477
605
  end
478
-
479
- def return_button
480
- frm.button(:name=>"back")
481
- end
482
-
483
- def return_to_sites_list
484
- return_button.click
485
- end
486
-
606
+
487
607
  in_frame(:class=>"portletMainIframe") do |frame|
488
608
  button(:previous, :name=>"previous", :frame=>frame)
609
+ button(:return_to_sites_list, :name=>"", :frame=>frame)
610
+ button(:next, :name=>"", :frame=>frame)
489
611
  link(:printable_version, :text=>"Printable Version", :frame=>frame)
490
612
  select_list(:select_page_size, :name=>"selectPageSize", :frame=>frame)
491
613
  button(:next, :name=>"eventSubmit_doList_next", :frame=>frame)
@@ -694,8 +816,20 @@ class EditSiteTools
694
816
  include PageObject
695
817
  include ToolsMenu
696
818
 
697
- # Clicks the Continue button.
698
- action(:continue) { |b| b.frm.button(:value=>"Continue").click }
819
+ # Clicks the Continue button, then instantiates
820
+ # the appropriate class for the page that apears.
821
+ def continue
822
+ frm.button(:value=>"Continue").click
823
+ # Logic for determining the new page class...
824
+ if frm.div(:class=>"portletBody").text =~ /^Add Multiple Tool/
825
+ AddMultipleTools.new(@browser)
826
+ elsif frm.div(:class=>"portletBody").text =~ /^Confirming site tools edits for/
827
+ ConfirmSiteToolsEdits.new(@browser)
828
+ else
829
+ puts "Something is wrong"
830
+ puts frm.div(:class=>"portletBody").text
831
+ end
832
+ end
699
833
 
700
834
  in_frame(:class=>"portletMainIframe") do |frame|
701
835
  # This is a comprehensive list of all checkboxes and
@@ -760,46 +894,16 @@ class EditSiteTools
760
894
 
761
895
  end
762
896
 
763
- class ReUseMaterial
764
-
765
- include PageObject
766
- include ToolsMenu
767
-
768
- thing(:announcements_checkbox) { |b| b.frm.checkbox(name: "sakai.announcements") }
769
- thing(:calendar_checkbox) { |b| b.frm.checkbox(name: "sakai.schedule") }
770
- thing(:discussion_forums_checkbox) { |b| b.frm.checkbox(name: "sakai.jforum.tool") }
771
- thing(:forums_checkbox) { |b| b.frm.checkbox(name: "sakai.forums") }
772
- thing(:chat_room_checkbox) { |b| b.frm.checkbox(name: "sakai.chat") }
773
- thing(:polls_checkbox) { |b| b.frm.checkbox(name: "sakai.poll") }
774
- thing(:syllabus_checkbox) { |b| b.frm.checkbox(name: "sakai.syllabus") }
775
- thing(:lessons_checkbox) { |b| b.frm.checkbox(name: "sakai.melete") }
776
- thing(:resources_checkbox) { |b| b.frm.checkbox(name: "sakai.resources") }
777
- thing(:assignments_checkbox) { |b| b.frm.checkbox(name: "sakai.assignment.grades") }
778
- thing(:tests_and_quizzes_checkbox) { |b| b.frm.checkbox(name: "sakai.samigo") }
779
- thing(:gradebook_checkbox) { |b| b.frm.checkbox(name: "sakai.gradebook.tool") }
780
- thing(:gradebook2_checkbox) { |b| b.frm.checkbox(name: "sakai.gradebook.gwt.rpc") }
781
- thing(:wiki_checkbox) { |b| b.frm.checkbox(name: "sakai.rwiki") }
782
- thing(:news_checkbox) { |b| b.frm.checkbox(name: "sakai.news") }
783
- thing(:web_content_checkbox) { |b| b.frm.checkbox(name: "sakai.iframe") }
784
- thing(:site_statistics_checkbox) { |b| b.frm.checkbox(name: "sakai.sitestats") }
785
- action(:continue) { |b| b.frm.button(name: "eventSubmit_doContinue").click }
786
-
787
- end
788
-
789
897
  # Confirmation page when editing site tools in Site Setup
790
898
  class ConfirmSiteToolsEdits
791
899
 
792
900
  include PageObject
793
901
  include ToolsMenu
794
-
795
- def finish_button
796
- frm.button(:value=>"Finish")
797
- end
798
-
902
+
799
903
  # Clicks the Finish button, then instantiates
800
904
  # the SiteSetupEdit class.
801
905
  def finish
802
- finish_button.click
906
+ frm.button(:value=>"Finish").click
803
907
  SiteEditor.new(@browser)
804
908
  end
805
909
 
@@ -889,8 +993,20 @@ class AddMultipleTools
889
993
  include PageObject
890
994
  include ToolsMenu
891
995
 
892
- # Clicks the Continue button.
893
- action(:continue) { |b| b.frm.button(:value=>"Continue").click }
996
+ # Clicks the Continue button, then instantiates
997
+ # the appropriate Class, based on the page that
998
+ # appears.
999
+ def continue
1000
+ frm.button(:value=>"Continue").click
1001
+ # Logic to determine the new page class
1002
+ if frm.div(:class=>"portletBody").text =~ /Course Site Access/
1003
+ SiteAccess.new(@browser)
1004
+ elsif frm.div(:class=>"portletBody").text =~ /^Confirming site tools edits/
1005
+ ConfirmSiteToolsEdits.new(@browser)
1006
+ else
1007
+ puts "There's another path to define"
1008
+ end
1009
+ end
894
1010
 
895
1011
  in_frame(:class=>"portletMainIframe") do |frame|
896
1012
  # Note that the text field definitions included here
@@ -1026,20 +1142,7 @@ class CourseSiteInfo
1026
1142
 
1027
1143
  include PageObject
1028
1144
  include ToolsMenu
1029
- include FCKEditor
1030
-
1031
- def editor
1032
- frm.frame(:id=>"description___Frame")
1033
- end
1034
-
1035
- def description=(text)
1036
- editor.td(:id, "xEditingArea").frame(:index=>0).send_keys text
1037
- end
1038
-
1039
- def source=(text)
1040
- editor.td(:id, "xEditingArea").text_field(:class=>"SourceField").set text
1041
- end
1042
-
1145
+
1043
1146
  # Clicks the Continue button, then
1044
1147
  # instantiates the EditSiteTools Class.
1045
1148
  def continue
@@ -1,21 +0,0 @@
1
- #================
2
- # Drop Box pages
3
- #================
4
-
5
- #
6
- class DropBox < AddFiles
7
-
8
- include ToolsMenu
9
-
10
- def initialize(browser)
11
- @browser = browser
12
-
13
- @@classes = {
14
- :this => "DropBox",
15
- :parent => "DropBox",
16
- :second => "",
17
- :third => ""
18
- }
19
- end
20
-
21
- end
@@ -1,21 +1,7 @@
1
1
  #
2
2
  class EmailArchive
3
3
  include ToolsMenu
4
- include PageObject
5
- def options
6
- frm.link(:text=>"Options").click
7
- EmailArchiveOptions.new(@browser)
8
- end
9
-
10
- # Returns an array containing the
11
- def email_list
12
- end
13
-
14
- in_frame(:class=>"portletMainIframe") do |frame|
15
- text_field(:search_field, :id=>"search", :frame=>frame)
16
- button(:search_button, :value=>"Search", :frame=>frame)
17
-
18
- end
4
+ include EmailArchiveMethods
19
5
  end
20
6
 
21
7
  class EmailArchiveOptions
@@ -1,313 +1,39 @@
1
1
  class Forums
2
2
  include ToolsMenu
3
- # Pass this method a string that matches
4
- # the title of a Forum on the page, it returns
5
- # True if the specified forum row has "DRAFT" in it.
6
- def draft?(title)
7
- frm.table(:id=>"msgForum:forums").row(:text=>/#{Regexp.escape(title)}/).span(:text=>"DRAFT").exist?
8
- end
9
-
10
- def new_forum
11
- frm.link(:text=>"New Forum").click
12
- EditForum.new(@browser)
13
- end
14
-
15
- def new_topic_for_forum(name)
16
- index = forum_titles.index(name)
17
- frm.link(:text=>"New Topic", :index=>index).click
18
- AddEditTopic.new(@browser)
19
- end
20
-
21
- def organize
22
- frm.link(:text=>"Organize").click
23
- OrganizeForums.new(@browser)
24
- end
25
-
26
- def template_settings
27
- frm.link(:text=>"Template Settings").click
28
- ForumTemplateSettings.new(@browser)
29
- end
30
-
31
- def forums_table
32
- frm.div(:class=>"portletBody").table(:id=>"msgForum:forums")
33
- end
34
-
35
- def forum_titles
36
- titles = []
37
- title_links = frm.div(:class=>"portletBody").links.find_all { |link| link.class_name=="title" && link.id=="" }
38
- title_links.each { |link| titles << link.text }
39
- return titles
40
- end
41
-
42
- def topic_titles
43
- titles = []
44
- title_links = frm.div(:class=>"portletBody").links.find_all { |link| link.class_name == "title" && link.id != "" }
45
- title_links.each { |link| titles << link.text }
46
- return titles
47
- end
48
-
49
- def forum_settings(name)
50
- index = forum_titles.index(name)
51
- frm.link(:text=>"Forum Settings", :index=>index).click
52
- EditForum.new(@browser)
53
- end
54
-
55
- def topic_settings(name)
56
- index = topic_titles.index(name)
57
- frm.link(:text=>"Topic Settings", :index=>index).click
58
- AddEditTopic.new(@browser)
59
- end
60
-
61
- def delete_forum(name)
62
- index = forum_titles.index(name)
63
- frm.link(:id=>/msgForum:forums:\d+:delete/,:text=>"Delete", :index=>index).click
64
- EditForum.new(@browser)
65
- end
66
-
67
- def delete_topic(name)
68
- index = topic_titles.index(name)
69
- frm.link(:id=>/topics:\d+:delete_confirm/, :text=>"Delete", :index=>index).click
70
- AddEditTopic.new(@browser)
71
- end
72
-
73
- def open_forum(forum_title)
74
- frm.link(:text=>forum_title).click
75
- # New Class def goes here.
76
- end
77
-
78
- def open_topic(topic_title)
79
- frm.link(:text=>topic_title).click
80
- TopicPage.new(@browser)
81
- end
3
+ include ForumsMethods
82
4
  end
83
5
 
84
6
  class TopicPage
85
7
  include ToolsMenu
86
- def post_new_thread
87
- frm.link(:text=>"Post New Thread").click
88
- ComposeForumMessage.new(@browser)
89
- end
90
-
91
- def thread_titles
92
- titles = []
93
- message_table = frm.table(:id=>"msgForum:messagesInHierDataTable")
94
- 1.upto(message_table.rows.size-1) do |x|
95
- titles << message_table[x][1].span(:class=>"firstChild").link(:index=>0).text
96
- end
97
- return titles
98
- end
99
-
100
- def open_message(message_title)
101
- frm.div(:class=>"portletBody").link(:text=>message_title).click
102
- ViewForumThread.new(@browser)
103
- end
104
-
105
- def display_entire_message
106
- frm.link(:text=>"Display Entire Message").click
107
- TopicPage.new(@browser)
108
- end
8
+ include TopicPageMethods
109
9
  end
110
10
 
111
11
  class ViewForumThread
112
12
  include ToolsMenu
113
- def reply_to_thread
114
- frm.link(:text=>"Reply to Thread").click
115
- ComposeForumMessage.new(@browser)
116
- end
117
-
118
- def reply_to_message(index)
119
- frm.link(:text=>"Reply", :index=>(index.to_i - 1)).click
120
- ComposeForumMessage.new(@browser)
121
- end
13
+ include ViewForumThreadMethods
122
14
  end
123
15
 
124
16
  class ComposeForumMessage
125
17
  include ToolsMenu
126
- include PageObject
127
- def post_message
128
- frm.button(:text=>"Post Message").click
129
- # Not sure if we need logic here...
130
- TopicPage.new(@browser)
131
- end
132
-
133
- def editor
134
- frm.frame(:id, "dfCompose:df_compose_body_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0)
135
- end
136
-
137
- def message=(text)
138
- editor.send_keys(text)
139
- end
140
-
141
- def reply_text
142
- @browser.frame(:index=>1).div(:class=>"singleMessageReply").text
143
- end
144
-
145
- def add_attachments
146
- #FIXME
147
- end
148
-
149
- def cancel
150
- frm.button(:value=>"Cancel").click
151
- # Logic for picking the correct page class
152
- if frm.link(:text=>"Reply to Thread")
153
- ViewForumThread.new(@browser)
154
- elsif frm.link(:text=>"Post New Thread").click
155
- TopicPage.new(@browser)
156
- end
157
- end
158
-
159
- in_frame(:class=>"portletMainIframe") do |frame|
160
- text_field(:title, :id=>"dfCompose:df_compose_title", :frame=>frame)
161
-
162
- end
18
+ include ComposeForumMessageMethods
163
19
  end
164
20
 
165
21
  class ForumTemplateSettings
166
22
  include ToolsMenu
167
- def page_title
168
- frm.div(:class=>"portletBody").h3(:index=>0).text
169
- end
170
-
171
- def save
172
- frm.button(:value=>"Save").click
173
- Forums.new(@browser)
174
- end
175
-
176
- def cancel
177
- frm.button(:value=>"Cancel").click
178
- Forums.new(@browser)
179
- end
180
- =begin
181
- def site_role=(role)
182
- frm.select(:id=>"revise:role").select(role)
183
- 0.upto(frm.select(:id=>"revise:role").length - 1) do |x|
184
- if frm.div(:class=>"portletBody").table(:class=>"permissionPanel jsfFormTable lines nolines", :index=>x).visible?
185
- @@table_index = x
186
-
187
- def permission_level=(value)
188
- frm.select(:id=>"revise:perm:#{@@table_index}:level").select(value)
189
- end
190
-
191
- end
192
- end
193
- end
194
- =end
23
+ include ForumTemplateSettingsMethods
195
24
  end
196
25
 
197
26
  class OrganizeForums
198
27
  include ToolsMenu
199
- def save
200
- frm.button(:value=>"Save").click
201
- Forums.new(@browser)
202
- end
203
-
204
- # These are set to so that the user
205
- # does not have to start the list at zero...
206
- def forum(index)
207
- frm.select(:id, "revise:forums:#{index.to_i - 1}:forumIndex")
208
- end
209
-
210
- def topic(forumindex, topicindex)
211
- frm.select(:id, "revise:forums:#{forumindex.to_i - 1}:topics:#{topicindex.to_i - 1}:topicIndex")
212
- end
28
+ include OrganizeForumsMethods
213
29
  end
214
30
 
215
31
  class EditForum
216
32
  include ToolsMenu
217
- include PageObject
218
- def save
219
- frm.button(:value=>"Save").click
220
- Forums.new(@browser)
221
- end
222
-
223
- def save_and_add
224
- frm.button(:value=>"Save Settings & Add Topic").click
225
- AddEditTopic.new(@browser)
226
- end
227
-
228
- def editor
229
- frm.div(:class=>"portletBody").frame(:id, "revise:df_compose_description_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0)
230
- end
231
-
232
- def description=(text)
233
- editor.send_keys(text)
234
- end
235
-
236
- def add_attachments
237
- frm.button(:value=>/attachments/).click
238
- ForumsAddAttachments.new(@browser)
239
- end
240
-
241
- in_frame(:class=>"portletMainIframe") do |frame|
242
- text_field(:title, :id=>"revise:forum_title", :frame=>frame)
243
- text_area(:short_description, :id=>"revise:forum_shortDescription", :frame=>frame)
244
-
245
- end
33
+ include EditForumMethods
246
34
  end
247
35
 
248
36
  class AddEditTopic
249
37
  include ToolsMenu
250
- include PageObject
251
-
252
- @@table_index=0
253
-
254
- def editor
255
- frm.div(:class=>"portletBody").frame(:id, "revise:topic_description_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0)
256
- end
257
-
258
- def description=(text)
259
- editor.send_keys(text)
260
- end
261
-
262
- def save
263
- frm.button(:value=>"Save").click
264
- Forums.new(@browser)
265
- end
266
-
267
- def add_attachments
268
- frm.button(:value=>/Add.+ttachment/).click
269
- ForumsAddAttachments.new(@browser)
270
- end
271
-
272
- def roles
273
- roles=[]
274
- options = frm.select(:id=>"revise:role").options.to_a
275
- options.each { |option| roles << option.text }
276
- return roles
277
- end
278
-
279
- def site_role=(role)
280
- frm.select(:id=>"revise:role").select(role)
281
- 0.upto(frm.select(:id=>"revise:role").length - 1) do |x|
282
- if frm.div(:class=>"portletBody").table(:class=>"permissionPanel jsfFormTable lines nolines", :index=>x).visible?
283
- @@table_index = x
284
-
285
- def permission_level=(value)
286
- frm.select(:id=>"revise:perm:#{@@table_index}:level").select(value)
287
- end
288
-
289
- end
290
- end
291
- end
292
-
293
- in_frame(:class=>"portletMainIframe") do |frame|
294
- text_field(:title, :id=>"revise:topic_title", :frame=>frame)
295
- text_area(:short_description, :id=>"revise:topic_shortDescription", :frame=>frame)
296
-
297
- end
298
- end
299
-
300
- # TODO: Determine where this should go and a better way to organize the code
301
- class ForumsAddAttachments < AddFiles
302
-
303
- def initialize(browser)
304
- @browser = browser
305
-
306
- @@classes = {
307
- :this => "ForumsAddAttachments",
308
- :parent => "AddEditTopic",
309
- :second => "EditForum"
310
- }
311
- end
312
-
38
+ include AddEditTopicMethods
313
39
  end