zena 1.2.7 → 1.2.8

Sign up to get free protection for your applications and to get access to all the features.
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
-