zena 1.2.7 → 1.2.8

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 (407) hide show
  1. data/History.txt +80 -25
  2. data/Rakefile +2 -2
  3. data/app/controllers/columns_controller.rb +2 -2
  4. data/app/controllers/nodes_controller.rb +22 -29
  5. data/app/controllers/user_sessions_controller.rb +35 -10
  6. data/app/controllers/users_controller.rb +2 -2
  7. data/app/controllers/versions_controller.rb +2 -2
  8. data/app/models/group.rb +15 -1
  9. data/app/models/node.rb +109 -8
  10. data/app/models/role.rb +4 -0
  11. data/app/models/site.rb +64 -58
  12. data/app/models/template.rb +1 -1
  13. data/app/models/user.rb +135 -29
  14. data/app/models/user_session.rb +0 -1
  15. data/app/models/virtual_class.rb +11 -6
  16. data/app/views/columns/_form.html.erb +3 -1
  17. data/app/views/columns/_li.html.erb +1 -1
  18. data/app/views/columns/create.rjs +1 -1
  19. data/app/views/groups/_form.rhtml +16 -13
  20. data/app/views/relations/_form.erb +18 -6
  21. data/app/views/sites/_form.erb +12 -6
  22. data/app/views/users/_form.rhtml +23 -8
  23. data/app/views/users/_li.rhtml +14 -3
  24. data/app/views/users/index.rhtml +1 -1
  25. data/app/views/virtual_classes/_form.erb +12 -2
  26. data/app/views/zafu/default/Node-+login.zafu +8 -1
  27. data/app/views/zafu/default/Node-+search.zafu +1 -1
  28. data/bricks/acls/lib/bricks/acls.rb +1 -0
  29. data/bricks/acls/zena/migrate/20130903150356_longer_names_for_acl.rb +9 -0
  30. data/bricks/acls/zena/test/integration/acl_integration_test.rb +2 -2
  31. data/bricks/currency/lib/bricks/currency.rb +120 -0
  32. data/bricks/currency/zena/test/unit/currency_test.rb +43 -0
  33. data/bricks/fs_skin/lib/bricks/fs_skin.rb +1 -1
  34. data/bricks/fs_skin/zena/skins/blog/Node-+search.zafu +1 -1
  35. data/bricks/fs_skin/zena/skins/blog/Node.zafu +1 -1
  36. data/bricks/fs_skin/zena/test/unit/fs_skin_view_test.rb +35 -0
  37. data/bricks/pdf/lib/bricks/pdf.rb +1 -1
  38. data/bricks/sphinx/lib/bricks/sphinx.rb +2 -0
  39. data/bricks/sphinx/zena/init.rb +14 -0
  40. data/bricks/tags/zena/test/zafu/tags.yml +5 -1
  41. data/bricks/worker/lib/bricks/worker.rb +3 -2
  42. data/bricks/zena/zena/migrate/20130829093753_add_versioned_flag_to_column.rb +10 -0
  43. data/bricks/zena/zena/migrate/20130903084909_count_login_attempts.rb +11 -0
  44. data/bricks/zena/zena/migrate/20131104153126_index_fullpath.rb +10 -0
  45. data/bricks/zena/zena/migrate/20131104210011_rebuild_fullpath_after_change.rb +10 -0
  46. data/bricks/zena/zena/migrate/20131105160420_add_skin_id_to_sites.rb +9 -0
  47. data/bricks/zena/zena/migrate/20131105175822_add_profile_to_users.rb +11 -0
  48. data/bricks/zena/zena/migrate/20140213120038_fix_idx_scope.rb +13 -0
  49. data/bricks/zena/zena/migrate/20140628140247_add_site_readonly.rb +9 -0
  50. data/config/bricks.yml +8 -4
  51. data/config/gems.yml +5 -3
  52. data/db/init/base/skins/default/Node-+login.zafu +8 -1
  53. data/db/init/base/skins/default/Node-+search.zafu +1 -1
  54. data/lib/bricks/loader.rb +5 -5
  55. data/lib/gettext_strings.rb +3 -0
  56. data/lib/tasks/zena.rake +25 -22
  57. data/lib/zafu/process/context.rb +4 -0
  58. data/lib/zena/acts/secure_node.rb +3 -3
  59. data/lib/zena/app.rb +1 -0
  60. data/lib/zena/deploy.rb +1 -1
  61. data/lib/zena/deploy/template.rb +1 -1
  62. data/lib/zena/foxy_parser.rb +5 -2
  63. data/lib/zena/info.rb +1 -1
  64. data/lib/zena/site_worker.rb +2 -2
  65. data/lib/zena/test_controller.rb +5 -2
  66. data/lib/zena/use/action.rb +9 -2
  67. data/lib/zena/use/ajax.rb +20 -4
  68. data/lib/zena/use/ancestry.rb +89 -15
  69. data/lib/zena/use/authlogic.rb +8 -2
  70. data/lib/zena/use/context.rb +1 -0
  71. data/lib/zena/use/display.rb +1 -97
  72. data/lib/zena/use/forms.rb +28 -8
  73. data/lib/zena/use/html_tags.rb +16 -7
  74. data/lib/zena/use/i18n.rb +1 -1
  75. data/lib/zena/use/prop_eval.rb +6 -1
  76. data/lib/zena/use/query_node.rb +69 -4
  77. data/lib/zena/use/recursion.rb +1 -1
  78. data/lib/zena/use/refactor.rb +5 -2
  79. data/lib/zena/use/relations.rb +1 -0
  80. data/lib/zena/use/rendering.rb +7 -4
  81. data/lib/zena/use/test_helper.rb +8 -4
  82. data/lib/zena/use/upload.rb +14 -0
  83. data/lib/zena/use/urls.rb +39 -23
  84. data/lib/zena/use/version_hash.rb +5 -2
  85. data/lib/zena/use/workflow.rb +116 -70
  86. data/lib/zena/use/zafu_eval.rb +41 -0
  87. data/lib/zena/use/zafu_safe_definitions.rb +1 -0
  88. data/lib/zena/use/zafu_templates.rb +32 -26
  89. data/lib/zena/use/zazen.rb +8 -7
  90. data/locale/app.pot +5 -1
  91. data/locale/de/LC_MESSAGES/zena.mo +0 -0
  92. data/locale/de/zena.po +385 -281
  93. data/locale/en/LC_MESSAGES/zena.mo +0 -0
  94. data/locale/en/zena.po +378 -271
  95. data/locale/fr/LC_MESSAGES/zena.mo +0 -0
  96. data/locale/fr/zena.po +387 -272
  97. data/locale/it/LC_MESSAGES/zena.mo +0 -0
  98. data/locale/it/zena.po +433 -404
  99. data/locale/zena.pot +362 -268
  100. data/public/javascripts/grid.js +280 -104
  101. data/public/javascripts/zena.js +43 -15
  102. data/public/stylesheets/admin.css +8 -2
  103. data/public/stylesheets/grid.css +5 -2
  104. data/public/stylesheets/popup.css +1 -1
  105. data/test/fixtures/files/TestNode.zafu +51 -0
  106. data/test/functional/nodes_controller_test.rb +20 -5
  107. data/test/functional/user_sessions_controller_test.rb +41 -6
  108. data/test/functional/users_controller_test.rb +1 -2
  109. data/test/integration/navigation_test.rb +22 -4
  110. data/test/integration/query_node/basic.yml +7 -0
  111. data/test/integration/query_node/complex.yml +1 -1
  112. data/test/integration/query_node/errors.yml +1 -1
  113. data/test/integration/query_node/filters.yml +34 -1
  114. data/test/integration/query_node/relations.yml +6 -13
  115. data/test/integration/query_node_test.rb +22 -3
  116. data/test/integration/zafu_compiler/action.yml +1 -1
  117. data/test/integration/zafu_compiler/alias_site.yml +52 -0
  118. data/test/integration/zafu_compiler/complex.yml +1 -1
  119. data/test/integration/zafu_compiler/complex_ok.yml +5 -5
  120. data/test/integration/zafu_compiler/context.yml +1 -1
  121. data/test/integration/zafu_compiler/display.yml +56 -5
  122. data/test/integration/zafu_compiler/forms.yml +35 -2
  123. data/test/integration/zafu_compiler/meta.yml +4 -0
  124. data/test/integration/zafu_compiler/rubyless.yml +1 -1
  125. data/test/integration/zafu_compiler/safe_definitions.yml +4 -0
  126. data/test/integration/zafu_compiler/security.yml +10 -0
  127. data/test/integration/zafu_compiler/site.yml +5 -1
  128. data/test/integration/zafu_compiler/urls.yml +8 -2
  129. data/test/integration/zafu_compiler/zafu_attributes.yml +2 -1
  130. data/test/integration/zafu_compiler/zazen.yml +4 -0
  131. data/test/integration/zafu_compiler_test.rb +47 -4
  132. data/test/selenium/Grid/grid1.rsel +8 -8
  133. data/test/sites/complex/sites.yml +2 -2
  134. data/test/sites/complex/users.yml +1 -0
  135. data/test/sites/zena/columns.yml +4 -0
  136. data/test/sites/zena/sites.yml +1 -0
  137. data/test/sites/zena/users.yml +1 -0
  138. data/test/unit/node_test.rb +53 -5
  139. data/test/unit/note_test.rb +1 -1
  140. data/test/unit/relation_proxy_test.rb +20 -0
  141. data/test/unit/role_test.rb +2 -0
  142. data/test/unit/site_test.rb +28 -6
  143. data/test/unit/user_test.rb +332 -1
  144. data/test/unit/virtual_class_test.rb +55 -0
  145. data/test/unit/workflow_test.rb +175 -0
  146. data/test/unit/zena/use/ancestry_test.rb +52 -10
  147. data/test/unit/zena/use/prop_eval_test.rb +44 -0
  148. data/test/unit/zena/use/rendering_test.rb +48 -2
  149. data/test/unit/zena/use/upload_test.rb +15 -13
  150. data/test/unit/zena/use/urls_test.rb +1 -0
  151. data/vendor/plugins/ar_mysql_full_text/lib/ar_mysql_full_text.rb +39 -25
  152. data/zena.gemspec +69 -307
  153. metadata +143 -368
  154. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run 2.tmCommand +0 -24
  155. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Context.tmCommand +0 -58
  156. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Focused Should.tmCommand +0 -88
  157. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run.tmCommand +0 -27
  158. data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/YAML to Shoulda.tmCommand +0 -23
  159. data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Context.tmPreferences +0 -19
  160. data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Should.tmPreferences +0 -19
  161. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory attributes for.tmSnippet +0 -16
  162. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory build.tmSnippet +0 -16
  163. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory.tmSnippet +0 -16
  164. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define with class.tmSnippet +0 -18
  165. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define.tmSnippet +0 -18
  166. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_next.tmSnippet +0 -16
  167. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_sequence.tmSnippet +0 -18
  168. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_bad_value.tmSnippet +0 -16
  169. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_contains.tmSnippet +0 -16
  170. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_does_not_contain.tmSnippet +0 -16
  171. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_good_value.tmSnippet +0 -16
  172. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_same_elements.tmSnippet +0 -16
  173. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_save.tmSnippet +0 -16
  174. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_sent_email.tmSnippet +0 -18
  175. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_valid.tmSnippet +0 -16
  176. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/association.tmSnippet +0 -17
  177. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/attribute.tmSnippet +0 -17
  178. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/before_should block.tmSnippet +0 -18
  179. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block get.tmSnippet +0 -22
  180. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block post.tmSnippet +0 -23
  181. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block with setup.tmSnippet +0 -25
  182. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/setup.tmSnippet +0 -18
  183. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block with before proc.tmSnippet +0 -18
  184. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block.tmSnippet +0 -18
  185. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_allow_values_for.tmSnippet +0 -16
  186. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_assign_to.tmSnippet +0 -16
  187. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful denied.tmSnippet +0 -20
  188. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful.tmSnippet +0 -20
  189. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_belong_to.tmSnippet +0 -16
  190. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change by.tmSnippet +0 -16
  191. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change from to.tmSnippet +0 -16
  192. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_at_least.tmSnippet +0 -16
  193. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_in_range.tmSnippet +0 -16
  194. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_is.tmSnippet +0 -16
  195. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_value_in_range.tmSnippet +0 -16
  196. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_eventually.tmSnippet +0 -18
  197. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_filter_params.tmSnippet +0 -16
  198. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_and_belong_to_many.tmSnippet +0 -16
  199. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_class_methods.tmSnippet +0 -16
  200. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_column.tmSnippet +0 -16
  201. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_columns.tmSnippet +0 -16
  202. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_index.tmSnippet +0 -16
  203. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_indices.tmSnippet +0 -16
  204. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_instance_methods.tmSnippet +0 -16
  205. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_many.tmSnippet +0 -16
  206. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_named_scope.tmSnippet +0 -16
  207. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_one.tmSnippet +0 -16
  208. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_readonly_attributes.tmSnippet +0 -16
  209. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_mass_assignment_of.tmSnippet +0 -16
  210. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_values_for.tmSnippet +0 -16
  211. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_assign_to.tmSnippet +0 -16
  212. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_change.tmSnippet +0 -16
  213. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_set_the_flash.tmSnippet +0 -16
  214. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_redirect_to.tmSnippet +0 -16
  215. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_a_form.tmSnippet +0 -16
  216. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_template.tmSnippet +0 -16
  217. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_with_layout.tmSnippet +0 -16
  218. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_without_layout.tmSnippet +0 -16
  219. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with.tmSnippet +0 -16
  220. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with_content_type.tmSnippet +0 -16
  221. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_return_from_session.tmSnippet +0 -16
  222. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_route.tmSnippet +0 -16
  223. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_set_the_flash_to.tmSnippet +0 -16
  224. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_acceptance_of.tmSnippet +0 -16
  225. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_numericality_of.tmSnippet +0 -16
  226. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_presence_of.tmSnippet +0 -16
  227. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of with scope.tmSnippet +0 -16
  228. data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of.tmSnippet +0 -16
  229. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
  230. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/run_script.rb +0 -104
  231. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
  232. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/test.rb +0 -17
  233. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/todo.txt +0 -13
  234. data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/bin/yaml_to_shoulda.rb +0 -25
  235. data/vendor/TextMate/Ruby Shoulda.tmbundle/Syntaxes/Ruby on Rails (Shoulda).tmLanguage +0 -166
  236. data/vendor/TextMate/Ruby Shoulda.tmbundle/info.plist +0 -304
  237. data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +0 -37
  238. data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +0 -52
  239. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
  240. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +0 -118
  241. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
  242. data/vendor/TextMate/Zena.tmbundle/info.plist +0 -17
  243. data/vendor/plugins/selenium-on-rails/CHANGELOG +0 -125
  244. data/vendor/plugins/selenium-on-rails/LICENSE-2.0.txt +0 -202
  245. data/vendor/plugins/selenium-on-rails/README.md +0 -202
  246. data/vendor/plugins/selenium-on-rails/Rakefile +0 -38
  247. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumController.html +0 -265
  248. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumHelper.html +0 -148
  249. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails.html +0 -126
  250. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/FixtureLoader.html +0 -231
  251. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/PartialsSupport.html +0 -195
  252. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Paths.html +0 -295
  253. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/RSelenese.html +0 -219
  254. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Renderer.html +0 -156
  255. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Selenese.html +0 -179
  256. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/SuiteRenderer.html +0 -223
  257. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilder.html +0 -441
  258. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderAccessors.html +0 -3098
  259. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderActions.html +0 -2080
  260. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserAccessors.html +0 -116
  261. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserActions.html +0 -116
  262. data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRailsConfig.html +0 -150
  263. data/vendor/plugins/selenium-on-rails/doc/files/CHANGELOG.html +0 -422
  264. data/vendor/plugins/selenium-on-rails/doc/files/README.html +0 -321
  265. data/vendor/plugins/selenium-on-rails/doc/files/lib/controllers/selenium_controller_rb.html +0 -108
  266. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_helper_rb.html +0 -101
  267. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/acceptance_test_runner_rb.html +0 -222
  268. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/fixture_loader_rb.html +0 -109
  269. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/partials_support_rb.html +0 -111
  270. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/paths_rb.html +0 -101
  271. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/renderer_rb.html +0 -101
  272. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/rselenese_rb.html +0 -118
  273. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/selenese_rb.html +0 -101
  274. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/suite_renderer_rb.html +0 -101
  275. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_accessors_rb.html +0 -114
  276. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_actions_rb.html +0 -113
  277. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_rb.html +0 -120
  278. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_config_rb.html +0 -108
  279. data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_rb.html +0 -115
  280. data/vendor/plugins/selenium-on-rails/doc/fr_class_index.html +0 -42
  281. data/vendor/plugins/selenium-on-rails/doc/fr_file_index.html +0 -43
  282. data/vendor/plugins/selenium-on-rails/doc/fr_method_index.html +0 -182
  283. data/vendor/plugins/selenium-on-rails/doc/index.html +0 -24
  284. data/vendor/plugins/selenium-on-rails/doc/rdoc-style.css +0 -208
  285. data/vendor/plugins/selenium-on-rails/generators/selenium/USAGE +0 -19
  286. data/vendor/plugins/selenium-on-rails/generators/selenium/selenium_generator.rb +0 -50
  287. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rhtml.rhtml +0 -16
  288. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rselenese.rhtml +0 -14
  289. data/vendor/plugins/selenium-on-rails/generators/selenium/templates/selenese.rhtml +0 -11
  290. data/vendor/plugins/selenium-on-rails/init.rb +0 -15
  291. data/vendor/plugins/selenium-on-rails/lib/controllers/selenium_controller.rb +0 -122
  292. data/vendor/plugins/selenium-on-rails/lib/controllers/switch_environment_controller.rb +0 -16
  293. data/vendor/plugins/selenium-on-rails/lib/selenium_helper.rb +0 -8
  294. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails.rb +0 -11
  295. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/acceptance_test_runner.rb +0 -215
  296. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/fixture_loader.rb +0 -57
  297. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/partials_support.rb +0 -36
  298. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/paths.rb +0 -61
  299. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/renderer.rb +0 -20
  300. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/rselenese.rb +0 -44
  301. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/selenese.rb +0 -87
  302. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/suite_renderer.rb +0 -56
  303. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder.rb +0 -116
  304. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_accessors.rb +0 -1002
  305. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_actions.rb +0 -514
  306. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_accessors.rb.example +0 -91
  307. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_actions.rb.example +0 -24
  308. data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails_config.rb +0 -30
  309. data/vendor/plugins/selenium-on-rails/lib/views/layouts/layout.rhtml +0 -18
  310. data/vendor/plugins/selenium-on-rails/lib/views/record.rhtml +0 -5
  311. data/vendor/plugins/selenium-on-rails/lib/views/selenium_helper.rb +0 -9
  312. data/vendor/plugins/selenium-on-rails/lib/views/setup.rhtml +0 -67
  313. data/vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml +0 -26
  314. data/vendor/plugins/selenium-on-rails/routes.rb +0 -24
  315. data/vendor/plugins/selenium-on-rails/selenium-core/Blank.html +0 -7
  316. data/vendor/plugins/selenium-on-rails/selenium-core/InjectedRemoteRunner.html +0 -8
  317. data/vendor/plugins/selenium-on-rails/selenium-core/RemoteRunner.html +0 -110
  318. data/vendor/plugins/selenium-on-rails/selenium-core/SeleniumLog.html +0 -109
  319. data/vendor/plugins/selenium-on-rails/selenium-core/TestPrompt.html +0 -145
  320. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner-splash.html +0 -55
  321. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.hta +0 -177
  322. data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.html +0 -177
  323. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butmin.gif +0 -0
  324. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butplus.gif +0 -0
  325. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.css +0 -298
  326. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.html +0 -16
  327. data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/selenium-domviewer.js +0 -205
  328. data/vendor/plugins/selenium-on-rails/selenium-core/icons/all.png +0 -0
  329. data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue.png +0 -0
  330. data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue_disabled.png +0 -0
  331. data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause.png +0 -0
  332. data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause_disabled.png +0 -0
  333. data/vendor/plugins/selenium-on-rails/selenium-core/icons/selected.png +0 -0
  334. data/vendor/plugins/selenium-on-rails/selenium-core/icons/step.png +0 -0
  335. data/vendor/plugins/selenium-on-rails/selenium-core/icons/step_disabled.png +0 -0
  336. data/vendor/plugins/selenium-on-rails/selenium-core/iedoc-core.xml +0 -1759
  337. data/vendor/plugins/selenium-on-rails/selenium-core/iedoc.xml +0 -1800
  338. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
  339. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
  340. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
  341. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
  342. data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
  343. data/vendor/plugins/selenium-on-rails/selenium-core/lib/prototype.js +0 -2006
  344. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/builder.js +0 -101
  345. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/controls.js +0 -815
  346. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
  347. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/effects.js +0 -958
  348. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
  349. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/slider.js +0 -283
  350. data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/unittest.js +0 -383
  351. data/vendor/plugins/selenium-on-rails/selenium-core/lib/snapsie.js +0 -91
  352. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/find_matching_child.js +0 -69
  353. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/htmlutils.js +0 -1616
  354. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/injection.html +0 -72
  355. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-api.js +0 -3184
  356. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserbot.js +0 -2300
  357. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserdetect.js +0 -153
  358. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-commandhandlers.js +0 -377
  359. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-executionloop.js +0 -175
  360. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-logging.js +0 -148
  361. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-remoterunner.js +0 -695
  362. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-testrunner.js +0 -1362
  363. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-version.js +0 -5
  364. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-doc.html +0 -803
  365. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-element.js +0 -1537
  366. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-map-sample.js +0 -979
  367. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js +0 -3
  368. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js.sample +0 -75
  369. data/vendor/plugins/selenium-on-rails/selenium-core/scripts/xmlextras.js +0 -153
  370. data/vendor/plugins/selenium-on-rails/selenium-core/selenium-logo.png +0 -0
  371. data/vendor/plugins/selenium-on-rails/selenium-core/selenium-test.css +0 -43
  372. data/vendor/plugins/selenium-on-rails/selenium-core/selenium.css +0 -316
  373. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/dom.js +0 -566
  374. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/javascript-xpath-0.1.11.js +0 -2816
  375. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/util.js +0 -549
  376. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xmltoken.js +0 -149
  377. data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xpath.js +0 -2450
  378. data/vendor/plugins/selenium-on-rails/tasks/test_acceptance.rake +0 -8
  379. data/vendor/plugins/selenium-on-rails/test/fixtures/config.yml +0 -37
  380. data/vendor/plugins/selenium-on-rails/test/fixtures/selenium.yml +0 -27
  381. data/vendor/plugins/selenium-on-rails/test/paths_test.rb +0 -72
  382. data/vendor/plugins/selenium-on-rails/test/renderer_test.rb +0 -157
  383. data/vendor/plugins/selenium-on-rails/test/rselenese_test.rb +0 -708
  384. data/vendor/plugins/selenium-on-rails/test/selenese_test.rb +0 -242
  385. data/vendor/plugins/selenium-on-rails/test/selenium_controller_test.rb +0 -67
  386. data/vendor/plugins/selenium-on-rails/test/selenium_on_rails_config_test.rb +0 -43
  387. data/vendor/plugins/selenium-on-rails/test/selenium_support_test.rb +0 -35
  388. data/vendor/plugins/selenium-on-rails/test/setup_test.rb +0 -31
  389. data/vendor/plugins/selenium-on-rails/test/suite_renderer_test.rb +0 -109
  390. data/vendor/plugins/selenium-on-rails/test/switch_environment_controller_test.rb +0 -17
  391. data/vendor/plugins/selenium-on-rails/test/test_builder_functions_authortest.rb +0 -51
  392. data/vendor/plugins/selenium-on-rails/test/test_helper.rb +0 -101
  393. data/vendor/plugins/selenium-on-rails/test_data/_partial.rsel +0 -1
  394. data/vendor/plugins/selenium-on-rails/test_data/own_layout.html +0 -12
  395. data/vendor/plugins/selenium-on-rails/test_data/partials/_html.html +0 -6
  396. data/vendor/plugins/selenium-on-rails/test_data/partials/_nesting.rsel +0 -2
  397. data/vendor/plugins/selenium-on-rails/test_data/partials/_rhtml.rhtml +0 -6
  398. data/vendor/plugins/selenium-on-rails/test_data/partials/_rsel.rsel +0 -1
  399. data/vendor/plugins/selenium-on-rails/test_data/partials/_sel.sel +0 -5
  400. data/vendor/plugins/selenium-on-rails/test_data/partials/all_partials.rsel +0 -5
  401. data/vendor/plugins/selenium-on-rails/test_data/rhtml.rhtml +0 -7
  402. data/vendor/plugins/selenium-on-rails/test_data/rselenese.rsel +0 -8
  403. data/vendor/plugins/selenium-on-rails/test_data/selenese.sel +0 -7
  404. data/vendor/plugins/selenium-on-rails/test_data/suite_one/subsuite/suite_one_subsuite_testcase.sel +0 -1
  405. data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase1.sel +0 -1
  406. data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase2.sel +0 -1
  407. data/vendor/plugins/selenium-on-rails/test_data/suite_two/suite_two_testcase.sel +0 -1
@@ -1,514 +0,0 @@
1
- # The actions available for SeleniumOnRails::TestBuilder tests.
2
- #
3
- # For each action +foo+ there's also an action +foo_and_wait+.
4
- module SeleniumOnRails::TestBuilderActions
5
- # Tell Selenium on Rails to clear the session and load any fixtures. DO
6
- # NOT CALL THIS AGAINST NON-TEST DATABASES.
7
- # The supported +options+ are <code>:keep_session</code>,
8
- # <code>:fixtures</code> and <code>:clear_tables</code>
9
- # setup
10
- # setup :keep_session
11
- # setup :fixtures => :all
12
- # setup :keep_session, :fixtures => [:foo, :bar]
13
- # setup :clear_tables => [:foo, :bar]
14
- def setup options = {}
15
- options = {options => nil} unless options.is_a? Hash
16
-
17
- opts = {:controller => 'selenium', :action => 'setup'}
18
- opts[:keep_session] = true if options.has_key? :keep_session
19
-
20
- [:fixtures, :clear_tables].each do |key|
21
- if (f = options[key])
22
- f = [f] unless f.is_a? Array
23
- opts[key] = f.join ','
24
- end
25
- end
26
-
27
- open opts
28
- end
29
-
30
- # Includes a partial.
31
- # The path is relative to the Selenium tests root. The starting _ and the file
32
- # extension don't have to be specified.
33
- # #include test/selenium/_partial.*
34
- # include_partial 'partial'
35
- # #include test/selenium/suite/_partial.*
36
- # include_partial 'suite/partial'
37
- # #include test/selenium/suite/_partial.* and provide local assigns
38
- # include_partial 'suite/partial', :foo => bar
39
- def include_partial path, local_assigns = {}
40
- partial = @view.render :partial => path, :locals => local_assigns
41
- @output << partial
42
- end
43
-
44
- # Clicks on a link, button, checkbox or radio button. If the click action
45
- # causes a new page to load (like a link usually does), call
46
- # +wait_for_page_to_load+.
47
- def click locator
48
- command 'click', locator
49
- end
50
-
51
- # Clicks on a link, button, checkbox or radio button. If the click action causes
52
- # a new page to load (like a link usually does), call wait_for_page_to_load.
53
- def click_at locator, coord_string
54
- command 'clickAt', locator, coord_string
55
- end
56
-
57
- # Explicitly simulate an event (e.g. <tt>"focus"</tt>, <tt>"blur"</tt>), to
58
- # trigger the corresponding <tt>"on_event_"</tt> handler.
59
- def fire_event locator, event_name
60
- command 'fireEvent', locator, event_name
61
- end
62
-
63
- # Simulates a user pressing and releasing a key.
64
- #
65
- # +keycode+ is the numeric keycode of the key to be pressed, normally the
66
- # ASCII value of that key.
67
- def key_press locator, keycode
68
- command 'keyPress', locator, keycode
69
- end
70
-
71
- # Simulates a user pressing a key (without releasing it yet).
72
- #
73
- # +keycode+ is the numeric keycode of the key to be pressed, normally the
74
- # ASCII value of that key.
75
- def key_down locator, keycode
76
- command 'keyDown', locator, keycode
77
- end
78
-
79
- # Simulates a user releasing a key.
80
- #
81
- # +keycode+ is the numeric keycode of the key to be released, normally the
82
- # ASCII value of that key.
83
- def key_up locator, keycode
84
- command 'keyUp', locator, keycode
85
- end
86
-
87
- # Simulates a user hovering a mouse over the specified element.
88
- def mouse_over locator
89
- command 'mouseOver', locator
90
- end
91
-
92
- # Simulates a user pressing the mouse button (without releasing it yet) on the
93
- # specified element.
94
- def mouse_down locator
95
- command 'mouseDown', locator
96
- end
97
-
98
- # Sets the value of an input field, as though you typed it in.
99
- #
100
- # Can also be used to set the value of combo boxes, check boxes, etc. In these
101
- # cases, +value+ should be the value of the option selected, not the visible
102
- # text.
103
- def type locator, value
104
- command 'type', locator, value
105
- end
106
-
107
- # Check a toggle-button (checkbox/radio).
108
- def check locator
109
- command 'check', locator
110
- end
111
-
112
- # Uncheck a toggle-button (checkbox/radio).
113
- def uncheck locator
114
- command 'uncheck', locator
115
- end
116
-
117
- # Select an option from a drop-down using an option locator.
118
- #
119
- # Option locators provide different ways of specifying options of an HTML
120
- # Select element (e.g. for selecting a specific option, or for asserting that
121
- # the selected option satisfies a specification). There are several forms of
122
- # Select Option Locator.
123
- #
124
- # * label=labelPattern
125
- # matches options based on their labels, i.e. the visible text. (This is the
126
- # default.)
127
- # label=regexp:^[Oo]ther
128
- # * value=valuePattern
129
- # matches options based on their values.
130
- # value=other
131
- # * id=id
132
- # matches options based on their ids.
133
- # id=option1
134
- # * index=index
135
- # matches an option based on its index (offset from zero).
136
- # index=2
137
- #
138
- # If no option locator prefix is provided, the default behaviour is to match
139
- # on label.
140
- def select locator, option_locator
141
- command 'select', locator, option_locator
142
- end
143
-
144
- # Add a selection to the set of selected options in a multi-select element
145
- # using an option locator.
146
- #
147
- # See the <tt>#select</tt> command for more information about option locators.
148
- def add_selection locator, option_locator
149
- command 'addSelection', locator, option_locator
150
- end
151
-
152
- # Remove a selection from the set of selected options in a multi-select
153
- # element using an option locator.
154
- #
155
- # See the +select+ command for more information about option locators.
156
- def remove_selection locator, option_locator
157
- command 'removeSelection', locator, option_locator
158
- end
159
-
160
- # Submit the specified form. This is particularly useful for forms without
161
- # submit buttons, e.g. single-input "Search" forms.
162
- def submit locator
163
- command 'submit', locator
164
- end
165
-
166
- # Opens an URL in the test frame. This accepts both relative and absolute
167
- # URLs. The <tt>open</tt> command waits for the page to load before
168
- # proceeding, i.e. you don't have to call +wait_for_page_to_load+.
169
- #
170
- # Note: The URL must be on the same domain as the runner HTML due to security
171
- # restrictions in the browser (Same Origin Policy).
172
- def open url
173
- command 'open', url_arg(url)
174
- end
175
-
176
- # Selects a popup window; once a popup window has been selected, all commands
177
- # go to that window. To select the main window again, use +nil+ as the target.
178
- def select_window window_id
179
- command 'selectWindow', window_id||'null'
180
- end
181
-
182
- # Waits for a popup window to appear and load up.
183
- #
184
- # The +timeout+ is specified in milliseconds.
185
- def wait_for_popup window_id, timeout
186
- command 'waitForPopUp', window_id||'null', timeout
187
- end
188
-
189
- # By default, Selenium's overridden <tt>window.confirm()</tt> function will return
190
- # +true+, as if the user had manually clicked OK. After running this command,
191
- # the next call to <tt>confirm()</tt> will return +false+, as if the user had clicked
192
- # Cancel.
193
- def choose_cancel_on_next_confirmation
194
- command 'chooseCancelOnNextConfirmation'
195
- end
196
-
197
- # Instructs Selenium to return the specified answer string in response to the
198
- # next JavaScript prompt (<tt>window.prompt()</tt>).
199
- def answer_on_next_prompt answer
200
- command 'answerOnNextPrompt', answer
201
- end
202
-
203
- # Simulates the user clicking the "back" button on their browser.
204
- def go_back
205
- command 'goBack'
206
- end
207
-
208
- # Simulates the user clicking the "Refresh" button on their browser.
209
- def refresh
210
- command 'refresh'
211
- end
212
-
213
- # Simulates the user clicking the "close" button in the titlebar of a popup
214
- # window or tab.
215
- def close
216
- command 'close'
217
- end
218
-
219
- # Simulates the user pressing the alt key and hold it down until do_alt_up()
220
- # is called or a new page is loaded.
221
- def alt_key_down
222
- command 'altKeyDown'
223
- end
224
-
225
- # Simulates the user releasing the alt key.
226
- def alt_key_up
227
- command 'altKeyUp'
228
- end
229
-
230
- # Halt the currently running test, and wait for the user to press the Continue
231
- # button. This command is useful for debugging, but be careful when using it,
232
- # because it will force automated tests to hang until a user intervenes manually.
233
- #
234
- # NOTE: <tt>break</tt> is a reserved word in Ruby, so we have to simulate
235
- # Selenium core's <tt>break()</tt> with <tt>brake()</tt>
236
- def brake
237
- command 'break'
238
- end
239
-
240
- # Simulates the user pressing the alt key and hold it down until do_control_up()
241
- # is called or a new page is loaded.
242
- def control_key_down
243
- command 'controlKeyDown'
244
- end
245
-
246
- # Simulates the user releasing the control key.
247
- def control_key_up
248
- command 'controlKeyUp'
249
- end
250
-
251
- # Create a new cookie whose path and domain are same with those of current page
252
- # under test, unless you specified a path for this cookie explicitly.
253
- #
254
- # Arguments:
255
- # * <tt>name_value_pair</tt> - name and value of the cookie in a format "name=value"
256
- # * <tt>options_string</tt> - options for the cookie. Currently supported options
257
- # include 'path' and 'max_age'. The options_string's format is
258
- # <tt>"path=/path/, max_age=60"</tt>. The order of options are irrelevant, the
259
- # unit of the value of 'max_age' is second.
260
- def create_cookie name_value_pair, options_string
261
- command 'createCookie', name_value_pair, options_string
262
- end
263
-
264
- # Delete a named cookie with specified path.
265
- def delete_cookie name, path
266
- command 'deleteCookie', name, path
267
- end
268
-
269
- # Double clicks on a link, button, checkbox or radio button. If the double click action
270
- # causes a new page to load (like a link usually does), call <tt>wait_for_page_to_load</tt>.
271
- def double_click locator
272
- command 'doubleClick', locator
273
- end
274
-
275
- # Doubleclicks on a link, button, checkbox or radio button. If the action causes a new page
276
- # to load (like a link usually does), call <tt>wait_for_page_to_load</tt>.
277
- def double_click_at locator, coord_string
278
- command 'doubleClickAt', locator, coord_string
279
- end
280
-
281
- # Drags an element a certain distance and then drops it.
282
- def drag_and_drop locator, movements_string
283
- command 'dragAndDrop', locator, movements_string
284
- end
285
-
286
- # Drags an element and drops it on another element.
287
- def drag_and_drop_to_object locator_of_object_to_be_dragged, locator_of_drag_destination_object
288
- command 'dragAndDropToObject', locator_of_object_to_be_dragged, locator_of_drag_destination_object
289
- end
290
-
291
- # Prints the specified message into the third table cell in your Selenese
292
- # tables.
293
- # Useful for debugging.
294
- def echo message
295
- command 'echo', message
296
- end
297
-
298
- # Briefly changes the backgroundColor of the specified element yellow.
299
- # Useful for debugging.
300
- def highlight locator
301
- command 'highlight', locator
302
- end
303
-
304
- # Press the meta key and hold it down until <tt>doMetaUp()</tt> is called or
305
- # a new page is loaded.
306
- def meta_key_down
307
- command 'metaKeyDown'
308
- end
309
-
310
- # Release the meta key.
311
- def meta_key_up
312
- command 'metaKeyUp'
313
- end
314
-
315
- # Simulates a user pressing the mouse button (without releasing it yet) on the specified
316
- # element.
317
- def mouse_down_at locator, coord_string
318
- command 'mouseDownAt', locator, coord_string
319
- end
320
-
321
- # Simulates a user moving the mouse.
322
- def mouse_move locator
323
- command 'mouseMove', locator
324
- end
325
-
326
- # Simulates a user moving the mouse relative to the specified element.
327
- def mouse_move_at locator, coord_string
328
- command 'mouseMoveAt', locator, coord_string
329
- end
330
-
331
- # Simulates the user moving the mouse off the specified element.
332
- def mouse_out locator
333
- command 'mouseOut', locator
334
- end
335
-
336
- # Simulates the user releasing the mouse button on the specified element.
337
- def mouse_up locator
338
- command 'mouseUp', locator
339
- end
340
-
341
- # Simulates a user pressing the mouse button (without releasing it yet) on the
342
- # specified element.
343
- def mouse_up_at locator, coord_string
344
- command 'mouseUpAt', locator, coord_string
345
- end
346
-
347
- # Opens a popup window (if a window with that ID isn't already open). After opening the
348
- # window, you'll need to select it using the <tt>select_window</tt> command.
349
- #
350
- # This command can also be a useful workaround for bug SEL-339. In some cases, Selenium
351
- # will be unable to intercept a call to window.open (if the call occurs during or before
352
- # the "onLoad" event, for example). In those cases, you can force Selenium to notice the
353
- # open window's name by using the Selenium openWindow command, using an empty (blank) url,
354
- # like this: <tt>open_window("", "myFunnyWindow")</tt>.
355
- def open_window url, window_id
356
- command 'openWindow', url, window_id
357
- end
358
-
359
- # Wait for the specified amount of time (in milliseconds).
360
- def pause wait_time
361
- command 'pause', wait_time
362
- end
363
-
364
- # Unselects all of the selected options in a multi-select element.
365
- def remove_all_selections locator
366
- command 'removeAllSelections', locator
367
- end
368
-
369
- # Selects a frame within the current window. (You may invoke this command multiple times
370
- # to select nested frames.) To select the parent frame, use "relative=parent" as a
371
- # locator; to select the top frame, use "relative=top".
372
- #
373
- # You may also use a DOM expression to identify the frame you want directly, like this:
374
- # <tt>dom=frames["main"].frames["subframe"]</tt>
375
- def select_frame locator
376
- command 'selectFrame', locator
377
- end
378
-
379
- # Moves the text cursor to the specified position in the given input element or textarea.
380
- # This method will fail if the specified element isn't an input element or textarea.
381
- def set_cursor_position locator, position
382
- command 'setCursorPosition', locator, position
383
- end
384
-
385
- # Configure the number of pixels between "mousemove" events during dragAndDrop commands
386
- # (default=10).
387
- # Setting this value to 0 means that we'll send a "mousemove" event to every single pixel
388
- # in between the start location and the end location; that can be very slow, and may
389
- # cause some browsers to force the JavaScript to timeout.
390
- #
391
- # If the mouse speed is greater than the distance between the two dragged objects, we'll
392
- # just send one "mousemove" at the start location and then one final one at the end location.
393
- def set_mouse_speed pixels
394
- command 'setMouseSpeed', pixels
395
- end
396
-
397
- # Press the shift key and hold it down until <tt>doShiftUp()</tt> is called or a new page
398
- # is loaded.
399
- def shift_key_down
400
- command 'shiftKeyDown'
401
- end
402
-
403
- # Release the shift key.
404
- def shift_key_up
405
- command 'shiftKeyUp'
406
- end
407
-
408
- # This command is a synonym for <tt>store_expression</tt>.
409
- def store expression, variable_name
410
- command 'store', expression, variable_name
411
- end
412
-
413
- # Simulates keystroke events on the specified element, as though you typed the value
414
- # key-by-key.
415
- #
416
- # This is a convenience method for calling <tt>key_down</tt>, <tt>key_up</tt>,
417
- # <tt>key_press</tt> for every character in the specified string; this is useful for
418
- # dynamic UI widgets (like auto-completing combo boxes) that require explicit key events.
419
- #
420
- # Unlike the simple "type" command, which forces the specified value into the page directly,
421
- # this command may or may not have any visible effect, even in cases where typing keys would
422
- # normally have a visible effect. For example, if you use "<tt>type_keys</tt>" on a form
423
- # element, you may or may not see the results of what you typed in the field.
424
- #
425
- # In some cases, you may need to use the simple "type" command to set the value of the field
426
- # and then the "<tt>type_keys</tt>" command to send the keystroke events corresponding to
427
- # what you just typed.
428
- def type_keys locator, value
429
- command 'typeKeys', locator, value
430
- end
431
-
432
- # Gives focus to a window.
433
- def window_focus window_name
434
- command 'windowFocus', window_name
435
- end
436
-
437
- # Resize window to take up the entire screen.
438
- def window_maximize window_name
439
- command 'windowMaximize', window_name
440
- end
441
-
442
- # Writes a message to the status bar and adds a note to the browser-side log.
443
- #
444
- # +context+ is the message sent to the browser.
445
- #
446
- # +log_level_threshold+ can be +nil+, <tt>:debug</tt>, <tt>:info</tt>,
447
- # <tt>:warn</tt> or <tt>:error</tt>.
448
- def set_context context, log_level_threshold = nil
449
- if log_level_threshold
450
- command 'setContext', context, log_level_threshold.to_s
451
- else
452
- command 'setContext', context
453
- end
454
- end
455
-
456
- # Runs the specified JavaScript snippet repeatedly until it evaluates to
457
- # +true+. The snippet may have multiple lines, but only the result of the last
458
- # line will be considered.
459
- #
460
- # Note that, by default, the snippet will be run in the runner's test window,
461
- # not in the window of your application. To get the window of your
462
- # application, you can use the JavaScript snippet
463
- # <tt>selenium.browserbot.getCurrentWindow()</tt>, and then run your
464
- # JavaScript in there.
465
- #
466
- # +timeout+ is specified in milliseconds.
467
- def wait_for_condition script, timeout
468
- command 'waitForCondition', script, timeout
469
- end
470
-
471
- # Specifies the amount of time that Selenium will wait for actions to
472
- # complete.
473
- #
474
- # Actions that require waiting include +open+ and the <tt>wait_for*</tt>
475
- # actions.
476
- #
477
- # The default timeout is 30 seconds.
478
- #
479
- # +timeout+ is specified in milliseconds.
480
- def set_timeout timeout
481
- command 'setTimeout', timeout
482
- end
483
-
484
- # Waits for a new page to load.
485
- #
486
- # You can use this command instead of the +and_wait+ suffixes,
487
- # +click_and_wait+, +select_and_wait+, +type_and_wait+ etc. (which are only
488
- # available in the JS API).
489
- #
490
- # Selenium constantly keeps track of new pages loading, and sets a
491
- # +newPageLoaded+ flag when it first notices a page load. Running any other
492
- # Selenium command after turns the flag to +false+. Hence, if you want to wait
493
- # for a page to load, you must wait immediately after a Selenium command that
494
- # caused a page-load.
495
- #
496
- # +timeout+ is specified in milliseconds.
497
- def wait_for_page_to_load timeout
498
- command 'waitForPageToLoad', timeout
499
- end
500
-
501
- private
502
- # Generates the corresponding +_and_wait+ for each action.
503
- def self.generate_and_wait_actions
504
- public_instance_methods.each do |method|
505
- define_method method + '_and_wait' do |*args|
506
- methods_array = method.split("_")
507
- send 'command_and_wait', methods_array.first.downcase + methods_array[1..-1].collect{|part| part.camelize}.join, *args
508
- end
509
- end
510
- end
511
-
512
- generate_and_wait_actions
513
- end
514
-