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.
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