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.
Files changed (90) hide show
  1. data/README.md +4 -0
  2. data/lib/sambal-cle/base_page.rb +20 -0
  3. data/lib/sambal-cle/core-ext.rb +90 -0
  4. data/lib/sambal-cle/data_objects/announcement.rb +82 -0
  5. data/lib/sambal-cle/data_objects/assessment.rb +32 -0
  6. data/lib/sambal-cle/data_objects/assignment.rb +205 -0
  7. data/lib/sambal-cle/data_objects/blog.rb +46 -0
  8. data/lib/sambal-cle/data_objects/blogger.rb +49 -0
  9. data/lib/sambal-cle/data_objects/chat_room.rb +54 -0
  10. data/lib/sambal-cle/data_objects/event.rb +89 -0
  11. data/lib/sambal-cle/data_objects/forum.rb +212 -0
  12. data/lib/sambal-cle/data_objects/lesson.rb +185 -0
  13. data/lib/sambal-cle/data_objects/message.rb +57 -0
  14. data/lib/sambal-cle/data_objects/poll.rb +74 -0
  15. data/lib/sambal-cle/data_objects/resource.rb +209 -0
  16. data/lib/sambal-cle/data_objects/site.rb +295 -0
  17. data/lib/sambal-cle/data_objects/syllabus.rb +73 -0
  18. data/lib/sambal-cle/data_objects/web_content_tool.rb +51 -0
  19. data/lib/sambal-cle/data_objects/wiki.rb +63 -0
  20. data/lib/sambal-cle/date_makers.rb +118 -0
  21. data/lib/sambal-cle/gem_ext.rb +23 -0
  22. data/lib/sambal-cle/page_helper.rb +22 -0
  23. data/lib/sambal-cle/page_maker.rb +48 -0
  24. data/lib/sambal-cle/page_objects/account.rb +111 -0
  25. data/lib/sambal-cle/page_objects/aliases.rb +43 -0
  26. data/lib/sambal-cle/page_objects/announcements.rb +190 -0
  27. data/lib/sambal-cle/page_objects/assessments.rb +874 -0
  28. data/lib/sambal-cle/page_objects/assignments.rb +770 -0
  29. data/lib/sambal-cle/page_objects/basic_lti.rb +6 -0
  30. data/lib/sambal-cle/page_objects/blogger.rb +205 -0
  31. data/lib/sambal-cle/page_objects/blogs.rb +60 -0
  32. data/lib/sambal-cle/page_objects/calendar.rb +330 -0
  33. data/lib/sambal-cle/page_objects/calendar_summary.rb +1 -0
  34. data/lib/sambal-cle/page_objects/chat_room.rb +22 -0
  35. data/lib/sambal-cle/page_objects/drop_box.rb +9 -0
  36. data/lib/sambal-cle/page_objects/email_archive.rb +22 -0
  37. data/lib/sambal-cle/page_objects/entity_picker.rb +62 -0
  38. data/lib/sambal-cle/page_objects/evaluations.rb +158 -0
  39. data/lib/sambal-cle/page_objects/feedback.rb +36 -0
  40. data/lib/sambal-cle/page_objects/forms.rb +120 -0
  41. data/lib/sambal-cle/page_objects/forums.rb +254 -0
  42. data/lib/sambal-cle/page_objects/glossary.rb +117 -0
  43. data/lib/sambal-cle/page_objects/gradebook.rb +29 -0
  44. data/lib/sambal-cle/page_objects/gradebook2.rb +17 -0
  45. data/lib/sambal-cle/page_objects/home.rb +36 -0
  46. data/lib/sambal-cle/page_objects/jforums.rb +444 -0
  47. data/lib/sambal-cle/page_objects/job_scheduler.rb +121 -0
  48. data/lib/sambal-cle/page_objects/lessons.rb +361 -0
  49. data/lib/sambal-cle/page_objects/login.rb +28 -0
  50. data/lib/sambal-cle/page_objects/matrix.rb +241 -0
  51. data/lib/sambal-cle/page_objects/media_gallery.rb +13 -0
  52. data/lib/sambal-cle/page_objects/messages.rb +622 -0
  53. data/lib/sambal-cle/page_objects/my_workspace.rb +44 -0
  54. data/lib/sambal-cle/page_objects/news.rb +8 -0
  55. data/lib/sambal-cle/page_objects/podcasts.rb +27 -0
  56. data/lib/sambal-cle/page_objects/polls.rb +69 -0
  57. data/lib/sambal-cle/page_objects/portfolio_templates.rb +161 -0
  58. data/lib/sambal-cle/page_objects/portfolios.rb +162 -0
  59. data/lib/sambal-cle/page_objects/post_em.rb +1 -0
  60. data/lib/sambal-cle/page_objects/profile.rb +51 -0
  61. data/lib/sambal-cle/page_objects/profile2.rb +344 -0
  62. data/lib/sambal-cle/page_objects/public_search.rb +61 -0
  63. data/lib/sambal-cle/page_objects/realms.rb +19 -0
  64. data/lib/sambal-cle/page_objects/resources.rb +326 -0
  65. data/lib/sambal-cle/page_objects/resources_roster.rb +0 -0
  66. data/lib/sambal-cle/page_objects/rosters.rb +70 -0
  67. data/lib/sambal-cle/page_objects/rwiki.rb +34 -0
  68. data/lib/sambal-cle/page_objects/search.rb +34 -0
  69. data/lib/sambal-cle/page_objects/sections.rb +295 -0
  70. data/lib/sambal-cle/page_objects/single_user.rb +1 -0
  71. data/lib/sambal-cle/page_objects/site_setup.rb +621 -0
  72. data/lib/sambal-cle/page_objects/site_statistics.rb +1 -0
  73. data/lib/sambal-cle/page_objects/sites.rb +255 -0
  74. data/lib/sambal-cle/page_objects/styles.rb +74 -0
  75. data/lib/sambal-cle/page_objects/syllabus.rb +166 -0
  76. data/lib/sambal-cle/page_objects/user_membership.rb +57 -0
  77. data/lib/sambal-cle/page_objects/users.rb +88 -0
  78. data/lib/sambal-cle/randomizers.rb +117 -0
  79. data/lib/sambal-cle/rich_text.rb +38 -0
  80. data/lib/sambal-cle/utilities.rb +31 -0
  81. data/lib/sambal-cle/workflows.rb +223 -0
  82. data/lib/sambal-cle.rb +31 -0
  83. data/sambal-cle.gemspec +14 -0
  84. data/test/add_assignment_to_calendar_spec.rb +86 -0
  85. data/test/assignment_announcements_spec.rb +71 -0
  86. data/test/assignment_gradebook_spec.rb +98 -0
  87. data/test/config.yml.template +4 -0
  88. data/test/directory.yml.template +123 -0
  89. data/test/duplicate_site_spec.rb +244 -0
  90. metadata +167 -0
@@ -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
@@ -0,0 +1 @@
1
+ # Work to be done here. :-)
@@ -0,0 +1,51 @@
1
+ #================
2
+ # Profile Pages
3
+ #================
4
+
5
+ #
6
+ class Profile < BasePage
7
+
8
+ frame_element
9
+
10
+ def edit_my_profile
11
+ frm.link(:text=>"Edit my Profile").click
12
+ EditProfile.new(@browser)
13
+ end
14
+
15
+ def show_my_profile
16
+ frm.link(:text=>"Show my Profile").click
17
+ Profile.new @browser
18
+ end
19
+
20
+ def photo
21
+ source = frm.image(:id=>"profileForm:image1").src
22
+ return source.split("/")[-1]
23
+ end
24
+
25
+ def email
26
+ frm.link(:id=>"profileForm:email").text
27
+ end
28
+ end
29
+
30
+ #
31
+ class EditProfile < BasePage
32
+
33
+ frame_element
34
+
35
+ def save
36
+ frm.button(:value=>"Save").click
37
+ Profile.new(@browser)
38
+ end
39
+
40
+ def picture_file(filename, filepath="")
41
+ frm.file_field(:name=>"editProfileForm:uploadFile.uploadId").set(filepath + filename)
42
+ end
43
+
44
+ element(:first_name) { |b| b.frm.text_field(:id=>"editProfileForm:first_name") }
45
+ element(:last_name) { |b| b.frm.text_field(:id=>"editProfileForm:lname") }
46
+ element(:nickname) { |b| b.frm.text_field(:id=>"editProfileForm:nickname") }
47
+ element(:position) { |b| b.frm.text_field(:id=>"editProfileForm:position") }
48
+ element(:email) { |b| b.frm.text_field(:id=>"editProfileForm:email") }
49
+ element(:upload_new_picture) { |b| b.frm.radio(:value=>"pictureUpload") }
50
+
51
+ end