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.
- data/History.txt +80 -25
- data/Rakefile +2 -2
- data/app/controllers/columns_controller.rb +2 -2
- data/app/controllers/nodes_controller.rb +22 -29
- data/app/controllers/user_sessions_controller.rb +35 -10
- data/app/controllers/users_controller.rb +2 -2
- data/app/controllers/versions_controller.rb +2 -2
- data/app/models/group.rb +15 -1
- data/app/models/node.rb +109 -8
- data/app/models/role.rb +4 -0
- data/app/models/site.rb +64 -58
- data/app/models/template.rb +1 -1
- data/app/models/user.rb +135 -29
- data/app/models/user_session.rb +0 -1
- data/app/models/virtual_class.rb +11 -6
- data/app/views/columns/_form.html.erb +3 -1
- data/app/views/columns/_li.html.erb +1 -1
- data/app/views/columns/create.rjs +1 -1
- data/app/views/groups/_form.rhtml +16 -13
- data/app/views/relations/_form.erb +18 -6
- data/app/views/sites/_form.erb +12 -6
- data/app/views/users/_form.rhtml +23 -8
- data/app/views/users/_li.rhtml +14 -3
- data/app/views/users/index.rhtml +1 -1
- data/app/views/virtual_classes/_form.erb +12 -2
- data/app/views/zafu/default/Node-+login.zafu +8 -1
- data/app/views/zafu/default/Node-+search.zafu +1 -1
- data/bricks/acls/lib/bricks/acls.rb +1 -0
- data/bricks/acls/zena/migrate/20130903150356_longer_names_for_acl.rb +9 -0
- data/bricks/acls/zena/test/integration/acl_integration_test.rb +2 -2
- data/bricks/currency/lib/bricks/currency.rb +120 -0
- data/bricks/currency/zena/test/unit/currency_test.rb +43 -0
- data/bricks/fs_skin/lib/bricks/fs_skin.rb +1 -1
- data/bricks/fs_skin/zena/skins/blog/Node-+search.zafu +1 -1
- data/bricks/fs_skin/zena/skins/blog/Node.zafu +1 -1
- data/bricks/fs_skin/zena/test/unit/fs_skin_view_test.rb +35 -0
- data/bricks/pdf/lib/bricks/pdf.rb +1 -1
- data/bricks/sphinx/lib/bricks/sphinx.rb +2 -0
- data/bricks/sphinx/zena/init.rb +14 -0
- data/bricks/tags/zena/test/zafu/tags.yml +5 -1
- data/bricks/worker/lib/bricks/worker.rb +3 -2
- data/bricks/zena/zena/migrate/20130829093753_add_versioned_flag_to_column.rb +10 -0
- data/bricks/zena/zena/migrate/20130903084909_count_login_attempts.rb +11 -0
- data/bricks/zena/zena/migrate/20131104153126_index_fullpath.rb +10 -0
- data/bricks/zena/zena/migrate/20131104210011_rebuild_fullpath_after_change.rb +10 -0
- data/bricks/zena/zena/migrate/20131105160420_add_skin_id_to_sites.rb +9 -0
- data/bricks/zena/zena/migrate/20131105175822_add_profile_to_users.rb +11 -0
- data/bricks/zena/zena/migrate/20140213120038_fix_idx_scope.rb +13 -0
- data/bricks/zena/zena/migrate/20140628140247_add_site_readonly.rb +9 -0
- data/config/bricks.yml +8 -4
- data/config/gems.yml +5 -3
- data/db/init/base/skins/default/Node-+login.zafu +8 -1
- data/db/init/base/skins/default/Node-+search.zafu +1 -1
- data/lib/bricks/loader.rb +5 -5
- data/lib/gettext_strings.rb +3 -0
- data/lib/tasks/zena.rake +25 -22
- data/lib/zafu/process/context.rb +4 -0
- data/lib/zena/acts/secure_node.rb +3 -3
- data/lib/zena/app.rb +1 -0
- data/lib/zena/deploy.rb +1 -1
- data/lib/zena/deploy/template.rb +1 -1
- data/lib/zena/foxy_parser.rb +5 -2
- data/lib/zena/info.rb +1 -1
- data/lib/zena/site_worker.rb +2 -2
- data/lib/zena/test_controller.rb +5 -2
- data/lib/zena/use/action.rb +9 -2
- data/lib/zena/use/ajax.rb +20 -4
- data/lib/zena/use/ancestry.rb +89 -15
- data/lib/zena/use/authlogic.rb +8 -2
- data/lib/zena/use/context.rb +1 -0
- data/lib/zena/use/display.rb +1 -97
- data/lib/zena/use/forms.rb +28 -8
- data/lib/zena/use/html_tags.rb +16 -7
- data/lib/zena/use/i18n.rb +1 -1
- data/lib/zena/use/prop_eval.rb +6 -1
- data/lib/zena/use/query_node.rb +69 -4
- data/lib/zena/use/recursion.rb +1 -1
- data/lib/zena/use/refactor.rb +5 -2
- data/lib/zena/use/relations.rb +1 -0
- data/lib/zena/use/rendering.rb +7 -4
- data/lib/zena/use/test_helper.rb +8 -4
- data/lib/zena/use/upload.rb +14 -0
- data/lib/zena/use/urls.rb +39 -23
- data/lib/zena/use/version_hash.rb +5 -2
- data/lib/zena/use/workflow.rb +116 -70
- data/lib/zena/use/zafu_eval.rb +41 -0
- data/lib/zena/use/zafu_safe_definitions.rb +1 -0
- data/lib/zena/use/zafu_templates.rb +32 -26
- data/lib/zena/use/zazen.rb +8 -7
- data/locale/app.pot +5 -1
- data/locale/de/LC_MESSAGES/zena.mo +0 -0
- data/locale/de/zena.po +385 -281
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +378 -271
- data/locale/fr/LC_MESSAGES/zena.mo +0 -0
- data/locale/fr/zena.po +387 -272
- data/locale/it/LC_MESSAGES/zena.mo +0 -0
- data/locale/it/zena.po +433 -404
- data/locale/zena.pot +362 -268
- data/public/javascripts/grid.js +280 -104
- data/public/javascripts/zena.js +43 -15
- data/public/stylesheets/admin.css +8 -2
- data/public/stylesheets/grid.css +5 -2
- data/public/stylesheets/popup.css +1 -1
- data/test/fixtures/files/TestNode.zafu +51 -0
- data/test/functional/nodes_controller_test.rb +20 -5
- data/test/functional/user_sessions_controller_test.rb +41 -6
- data/test/functional/users_controller_test.rb +1 -2
- data/test/integration/navigation_test.rb +22 -4
- data/test/integration/query_node/basic.yml +7 -0
- data/test/integration/query_node/complex.yml +1 -1
- data/test/integration/query_node/errors.yml +1 -1
- data/test/integration/query_node/filters.yml +34 -1
- data/test/integration/query_node/relations.yml +6 -13
- data/test/integration/query_node_test.rb +22 -3
- data/test/integration/zafu_compiler/action.yml +1 -1
- data/test/integration/zafu_compiler/alias_site.yml +52 -0
- data/test/integration/zafu_compiler/complex.yml +1 -1
- data/test/integration/zafu_compiler/complex_ok.yml +5 -5
- data/test/integration/zafu_compiler/context.yml +1 -1
- data/test/integration/zafu_compiler/display.yml +56 -5
- data/test/integration/zafu_compiler/forms.yml +35 -2
- data/test/integration/zafu_compiler/meta.yml +4 -0
- data/test/integration/zafu_compiler/rubyless.yml +1 -1
- data/test/integration/zafu_compiler/safe_definitions.yml +4 -0
- data/test/integration/zafu_compiler/security.yml +10 -0
- data/test/integration/zafu_compiler/site.yml +5 -1
- data/test/integration/zafu_compiler/urls.yml +8 -2
- data/test/integration/zafu_compiler/zafu_attributes.yml +2 -1
- data/test/integration/zafu_compiler/zazen.yml +4 -0
- data/test/integration/zafu_compiler_test.rb +47 -4
- data/test/selenium/Grid/grid1.rsel +8 -8
- data/test/sites/complex/sites.yml +2 -2
- data/test/sites/complex/users.yml +1 -0
- data/test/sites/zena/columns.yml +4 -0
- data/test/sites/zena/sites.yml +1 -0
- data/test/sites/zena/users.yml +1 -0
- data/test/unit/node_test.rb +53 -5
- data/test/unit/note_test.rb +1 -1
- data/test/unit/relation_proxy_test.rb +20 -0
- data/test/unit/role_test.rb +2 -0
- data/test/unit/site_test.rb +28 -6
- data/test/unit/user_test.rb +332 -1
- data/test/unit/virtual_class_test.rb +55 -0
- data/test/unit/workflow_test.rb +175 -0
- data/test/unit/zena/use/ancestry_test.rb +52 -10
- data/test/unit/zena/use/prop_eval_test.rb +44 -0
- data/test/unit/zena/use/rendering_test.rb +48 -2
- data/test/unit/zena/use/upload_test.rb +15 -13
- data/test/unit/zena/use/urls_test.rb +1 -0
- data/vendor/plugins/ar_mysql_full_text/lib/ar_mysql_full_text.rb +39 -25
- data/zena.gemspec +69 -307
- metadata +143 -368
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run 2.tmCommand +0 -24
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Context.tmCommand +0 -58
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Focused Should.tmCommand +0 -88
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run.tmCommand +0 -27
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/YAML to Shoulda.tmCommand +0 -23
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Context.tmPreferences +0 -19
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Should.tmPreferences +0 -19
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory attributes for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory build.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define with class.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_next.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_sequence.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_bad_value.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_contains.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_does_not_contain.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_good_value.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_same_elements.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_save.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_sent_email.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_valid.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/association.tmSnippet +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/attribute.tmSnippet +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/before_should block.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block get.tmSnippet +0 -22
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block post.tmSnippet +0 -23
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block with setup.tmSnippet +0 -25
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/setup.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block with before proc.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_allow_values_for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_assign_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful denied.tmSnippet +0 -20
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful.tmSnippet +0 -20
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_belong_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change by.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change from to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_at_least.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_in_range.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_is.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_value_in_range.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_eventually.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_filter_params.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_and_belong_to_many.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_class_methods.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_column.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_columns.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_index.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_indices.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_instance_methods.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_many.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_named_scope.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_one.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_readonly_attributes.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_mass_assignment_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_values_for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_assign_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_change.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_set_the_flash.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_redirect_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_a_form.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_template.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_with_layout.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_without_layout.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with_content_type.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_return_from_session.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_route.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_set_the_flash_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_acceptance_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_numericality_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_presence_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of with scope.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/run_script.rb +0 -104
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/test.rb +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/todo.txt +0 -13
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/bin/yaml_to_shoulda.rb +0 -25
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Syntaxes/Ruby on Rails (Shoulda).tmLanguage +0 -166
- data/vendor/TextMate/Ruby Shoulda.tmbundle/info.plist +0 -304
- data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +0 -37
- data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +0 -52
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +0 -118
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
- data/vendor/TextMate/Zena.tmbundle/info.plist +0 -17
- data/vendor/plugins/selenium-on-rails/CHANGELOG +0 -125
- data/vendor/plugins/selenium-on-rails/LICENSE-2.0.txt +0 -202
- data/vendor/plugins/selenium-on-rails/README.md +0 -202
- data/vendor/plugins/selenium-on-rails/Rakefile +0 -38
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumController.html +0 -265
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumHelper.html +0 -148
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails.html +0 -126
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/FixtureLoader.html +0 -231
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/PartialsSupport.html +0 -195
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Paths.html +0 -295
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/RSelenese.html +0 -219
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Renderer.html +0 -156
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Selenese.html +0 -179
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/SuiteRenderer.html +0 -223
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilder.html +0 -441
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderAccessors.html +0 -3098
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderActions.html +0 -2080
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserAccessors.html +0 -116
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserActions.html +0 -116
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRailsConfig.html +0 -150
- data/vendor/plugins/selenium-on-rails/doc/files/CHANGELOG.html +0 -422
- data/vendor/plugins/selenium-on-rails/doc/files/README.html +0 -321
- data/vendor/plugins/selenium-on-rails/doc/files/lib/controllers/selenium_controller_rb.html +0 -108
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_helper_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/acceptance_test_runner_rb.html +0 -222
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/fixture_loader_rb.html +0 -109
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/partials_support_rb.html +0 -111
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/paths_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/renderer_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/rselenese_rb.html +0 -118
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/selenese_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/suite_renderer_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_accessors_rb.html +0 -114
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_actions_rb.html +0 -113
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_rb.html +0 -120
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_config_rb.html +0 -108
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_rb.html +0 -115
- data/vendor/plugins/selenium-on-rails/doc/fr_class_index.html +0 -42
- data/vendor/plugins/selenium-on-rails/doc/fr_file_index.html +0 -43
- data/vendor/plugins/selenium-on-rails/doc/fr_method_index.html +0 -182
- data/vendor/plugins/selenium-on-rails/doc/index.html +0 -24
- data/vendor/plugins/selenium-on-rails/doc/rdoc-style.css +0 -208
- data/vendor/plugins/selenium-on-rails/generators/selenium/USAGE +0 -19
- data/vendor/plugins/selenium-on-rails/generators/selenium/selenium_generator.rb +0 -50
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rhtml.rhtml +0 -16
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rselenese.rhtml +0 -14
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/selenese.rhtml +0 -11
- data/vendor/plugins/selenium-on-rails/init.rb +0 -15
- data/vendor/plugins/selenium-on-rails/lib/controllers/selenium_controller.rb +0 -122
- data/vendor/plugins/selenium-on-rails/lib/controllers/switch_environment_controller.rb +0 -16
- data/vendor/plugins/selenium-on-rails/lib/selenium_helper.rb +0 -8
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails.rb +0 -11
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/acceptance_test_runner.rb +0 -215
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/fixture_loader.rb +0 -57
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/partials_support.rb +0 -36
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/paths.rb +0 -61
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/renderer.rb +0 -20
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/rselenese.rb +0 -44
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/selenese.rb +0 -87
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/suite_renderer.rb +0 -56
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder.rb +0 -116
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_accessors.rb +0 -1002
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_actions.rb +0 -514
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_accessors.rb.example +0 -91
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_actions.rb.example +0 -24
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails_config.rb +0 -30
- data/vendor/plugins/selenium-on-rails/lib/views/layouts/layout.rhtml +0 -18
- data/vendor/plugins/selenium-on-rails/lib/views/record.rhtml +0 -5
- data/vendor/plugins/selenium-on-rails/lib/views/selenium_helper.rb +0 -9
- data/vendor/plugins/selenium-on-rails/lib/views/setup.rhtml +0 -67
- data/vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml +0 -26
- data/vendor/plugins/selenium-on-rails/routes.rb +0 -24
- data/vendor/plugins/selenium-on-rails/selenium-core/Blank.html +0 -7
- data/vendor/plugins/selenium-on-rails/selenium-core/InjectedRemoteRunner.html +0 -8
- data/vendor/plugins/selenium-on-rails/selenium-core/RemoteRunner.html +0 -110
- data/vendor/plugins/selenium-on-rails/selenium-core/SeleniumLog.html +0 -109
- data/vendor/plugins/selenium-on-rails/selenium-core/TestPrompt.html +0 -145
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner-splash.html +0 -55
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.hta +0 -177
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.html +0 -177
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butmin.gif +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butplus.gif +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.css +0 -298
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.html +0 -16
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/selenium-domviewer.js +0 -205
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/all.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/selected.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/step.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/step_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/iedoc-core.xml +0 -1759
- data/vendor/plugins/selenium-on-rails/selenium-core/iedoc.xml +0 -1800
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/prototype.js +0 -2006
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/builder.js +0 -101
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/controls.js +0 -815
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/effects.js +0 -958
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/slider.js +0 -283
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/unittest.js +0 -383
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/snapsie.js +0 -91
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/find_matching_child.js +0 -69
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/htmlutils.js +0 -1616
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/injection.html +0 -72
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-api.js +0 -3184
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserbot.js +0 -2300
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserdetect.js +0 -153
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-commandhandlers.js +0 -377
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-executionloop.js +0 -175
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-logging.js +0 -148
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-remoterunner.js +0 -695
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-testrunner.js +0 -1362
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-version.js +0 -5
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-doc.html +0 -803
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-element.js +0 -1537
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-map-sample.js +0 -979
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js +0 -3
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js.sample +0 -75
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/xmlextras.js +0 -153
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium-logo.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium-test.css +0 -43
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium.css +0 -316
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/dom.js +0 -566
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/javascript-xpath-0.1.11.js +0 -2816
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/util.js +0 -549
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xmltoken.js +0 -149
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xpath.js +0 -2450
- data/vendor/plugins/selenium-on-rails/tasks/test_acceptance.rake +0 -8
- data/vendor/plugins/selenium-on-rails/test/fixtures/config.yml +0 -37
- data/vendor/plugins/selenium-on-rails/test/fixtures/selenium.yml +0 -27
- data/vendor/plugins/selenium-on-rails/test/paths_test.rb +0 -72
- data/vendor/plugins/selenium-on-rails/test/renderer_test.rb +0 -157
- data/vendor/plugins/selenium-on-rails/test/rselenese_test.rb +0 -708
- data/vendor/plugins/selenium-on-rails/test/selenese_test.rb +0 -242
- data/vendor/plugins/selenium-on-rails/test/selenium_controller_test.rb +0 -67
- data/vendor/plugins/selenium-on-rails/test/selenium_on_rails_config_test.rb +0 -43
- data/vendor/plugins/selenium-on-rails/test/selenium_support_test.rb +0 -35
- data/vendor/plugins/selenium-on-rails/test/setup_test.rb +0 -31
- data/vendor/plugins/selenium-on-rails/test/suite_renderer_test.rb +0 -109
- data/vendor/plugins/selenium-on-rails/test/switch_environment_controller_test.rb +0 -17
- data/vendor/plugins/selenium-on-rails/test/test_builder_functions_authortest.rb +0 -51
- data/vendor/plugins/selenium-on-rails/test/test_helper.rb +0 -101
- data/vendor/plugins/selenium-on-rails/test_data/_partial.rsel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/own_layout.html +0 -12
- data/vendor/plugins/selenium-on-rails/test_data/partials/_html.html +0 -6
- data/vendor/plugins/selenium-on-rails/test_data/partials/_nesting.rsel +0 -2
- data/vendor/plugins/selenium-on-rails/test_data/partials/_rhtml.rhtml +0 -6
- data/vendor/plugins/selenium-on-rails/test_data/partials/_rsel.rsel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/partials/_sel.sel +0 -5
- data/vendor/plugins/selenium-on-rails/test_data/partials/all_partials.rsel +0 -5
- data/vendor/plugins/selenium-on-rails/test_data/rhtml.rhtml +0 -7
- data/vendor/plugins/selenium-on-rails/test_data/rselenese.rsel +0 -8
- data/vendor/plugins/selenium-on-rails/test_data/selenese.sel +0 -7
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/subsuite/suite_one_subsuite_testcase.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase1.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase2.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_two/suite_two_testcase.sel +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
require 'test/unit'
|
|
2
|
-
require 'active_record'
|
|
3
|
-
require 'active_record/fixtures'
|
|
4
|
-
|
|
5
|
-
module SeleniumOnRails::FixtureLoader
|
|
6
|
-
include SeleniumOnRails::Paths
|
|
7
|
-
|
|
8
|
-
def available_fixtures
|
|
9
|
-
fixtures = {}
|
|
10
|
-
path = fixtures_path + '/'
|
|
11
|
-
files = Dir["#{path}**/*.{yml,csv}"]
|
|
12
|
-
files.each do |file|
|
|
13
|
-
rel_path = file.sub(path, '')
|
|
14
|
-
next if skip_file? rel_path
|
|
15
|
-
fixture_set = File.dirname(rel_path)
|
|
16
|
-
fixture_set = '' if fixture_set == '.'
|
|
17
|
-
fixture = rel_path.sub /\.[^.]*$/, ''
|
|
18
|
-
fixtures[fixture_set] ||= []
|
|
19
|
-
fixtures[fixture_set] << fixture
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
fixtures
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def load_fixtures fixtures_param
|
|
26
|
-
available = nil
|
|
27
|
-
fixtures = fixtures_param.split(/\s*,\s*/).collect do |f|
|
|
28
|
-
fixture_set = File.dirname f
|
|
29
|
-
fixture_set = '' if fixture_set == '.'
|
|
30
|
-
fixture = File.basename f
|
|
31
|
-
if fixture == 'all'
|
|
32
|
-
available ||= available_fixtures
|
|
33
|
-
available[fixture_set]
|
|
34
|
-
else
|
|
35
|
-
f
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
fixtures.flatten!
|
|
39
|
-
fixtures.reject! {|f| f.blank? }
|
|
40
|
-
|
|
41
|
-
if fixtures.any?
|
|
42
|
-
Fixtures.reset_cache # in case they've already been loaded and things have changed
|
|
43
|
-
Fixtures.create_fixtures fixtures_path, fixtures
|
|
44
|
-
end
|
|
45
|
-
fixtures
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def clear_tables tables
|
|
49
|
-
table_names = tables.split /\s*,\s*/
|
|
50
|
-
connection = ActiveRecord::Base.connection
|
|
51
|
-
table_names.each do |table|
|
|
52
|
-
connection.execute "DELETE FROM #{table}"
|
|
53
|
-
end
|
|
54
|
-
table_names
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require 'selenium_on_rails/paths'
|
|
2
|
-
|
|
3
|
-
module SeleniumOnRails::PartialsSupport
|
|
4
|
-
include SeleniumOnRails::Paths
|
|
5
|
-
|
|
6
|
-
# Overrides where the partial is searched for, and returns only the command table rows.
|
|
7
|
-
def render_partial(options)
|
|
8
|
-
pattern = partial_pattern options[:partial]
|
|
9
|
-
filename = Dir[pattern].first
|
|
10
|
-
raise "Partial '#{partial_path}' cannot be found! (Looking for file: '#{pattern}')" unless filename
|
|
11
|
-
partial = render :file => filename, :use_full_path => false, :locals => options[:locals]
|
|
12
|
-
extract_commands_from_partial partial
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Extracts the commands from a partial. The partial must contain a html table
|
|
16
|
-
# and the first row is ignored since it cannot contain a command.
|
|
17
|
-
def extract_commands_from_partial partial
|
|
18
|
-
partial = partial.match(/.*<table>.*?<tr>.*?<\/tr>(.*?)<\/table>/im)[1]
|
|
19
|
-
raise "Partial '#{name}' doesn't contain any table" unless partial
|
|
20
|
-
partial
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
private
|
|
24
|
-
# Generates the file pattern from the provided partial path.
|
|
25
|
-
# The starting _ and file extension don't have too be provided.
|
|
26
|
-
def partial_pattern partial_path
|
|
27
|
-
path = partial_path.split '/'
|
|
28
|
-
filename = path.delete_at(-1)
|
|
29
|
-
filename = '_' + filename unless filename.starts_with? '_'
|
|
30
|
-
filename << '.*' unless filename.include? '.'
|
|
31
|
-
pattern = selenium_tests_path + '/'
|
|
32
|
-
pattern << path.join('/') + '/' if path
|
|
33
|
-
pattern << filename
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
end
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
require 'selenium_on_rails_config'
|
|
2
|
-
|
|
3
|
-
module SeleniumOnRails
|
|
4
|
-
module Paths
|
|
5
|
-
|
|
6
|
-
def selenium_path
|
|
7
|
-
@@selenium_path ||= find_selenium_path
|
|
8
|
-
@@selenium_path
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def selenium_tests_path
|
|
12
|
-
return SeleniumOnRailsConfig.get("selenium_tests_path") if SeleniumOnRailsConfig.get("selenium_tests_path")
|
|
13
|
-
File.expand_path(File.join(RAILS_ROOT, 'test/selenium'))
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def view_path view
|
|
17
|
-
File.expand_path(File.dirname(__FILE__) + '/../views/' + view)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# Returns the path to the layout template. The path is relative in relation
|
|
21
|
-
# to the app/views/ directory since Rails doesn't support absolute paths
|
|
22
|
-
# to layout templates.
|
|
23
|
-
def layout_path
|
|
24
|
-
'layout.rhtml'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def fixtures_path
|
|
28
|
-
return SeleniumOnRailsConfig.get("fixtures_path") if SeleniumOnRailsConfig.get("fixtures_path")
|
|
29
|
-
File.expand_path File.join(RAILS_ROOT, 'test/fixtures')
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def log_path log_file
|
|
33
|
-
File.expand_path(File.dirname(__FILE__) + '/../../log/' + File.basename(log_file))
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def skip_file? file
|
|
37
|
-
file.split('/').each do |f|
|
|
38
|
-
return true if f.upcase == 'CVS' or f.starts_with?('.') or f.ends_with?('~') or f.starts_with?('_')
|
|
39
|
-
end
|
|
40
|
-
false
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
private ###############################################
|
|
44
|
-
|
|
45
|
-
def find_selenium_path
|
|
46
|
-
sel_dirs = SeleniumOnRailsConfig.get :selenium_path do
|
|
47
|
-
File.expand_path(File.dirname(__FILE__) + '/../../selenium-core')
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
sel_dirs.to_a.each do |seleniumdir|
|
|
51
|
-
['', 'core', 'selenium', 'javascript'].each do |subdir|
|
|
52
|
-
path = File.join seleniumdir, subdir
|
|
53
|
-
return path if File.exist?(File.join(path, 'TestRunner.html'))
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
raise 'Could not find Selenium Core installation'
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module SeleniumOnRails::Renderer
|
|
2
|
-
include SeleniumOnRails::Paths
|
|
3
|
-
|
|
4
|
-
def render_test_case filename
|
|
5
|
-
@template.extend SeleniumOnRails::PartialsSupport
|
|
6
|
-
@page_title = test_case_name filename
|
|
7
|
-
output = render_to_string :file => filename, :locals => {"page_title" => @page_title}
|
|
8
|
-
layout = (output =~ /<html>/i ? false : layout_path)
|
|
9
|
-
render :text => output, :layout => layout
|
|
10
|
-
|
|
11
|
-
headers['Cache-control'] = 'no-cache'
|
|
12
|
-
headers['Pragma'] = 'no-cache'
|
|
13
|
-
headers['Expires'] = '-1'
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_case_name filename
|
|
17
|
-
File.basename(filename).sub(/\..*/,'').humanize
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Renders Selenium test templates in a fashion analogous to +rxml+ and
|
|
2
|
-
# +rjs+ templates.
|
|
3
|
-
#
|
|
4
|
-
# setup
|
|
5
|
-
# open :controller => 'customer', :action => 'list'
|
|
6
|
-
# assert_title 'Customers'
|
|
7
|
-
#
|
|
8
|
-
# See SeleniumOnRails::TestBuilder for a list of available commands.
|
|
9
|
-
class SeleniumOnRails::RSelenese < SeleniumOnRails::TestBuilder
|
|
10
|
-
end
|
|
11
|
-
ActionView::Template.register_template_handler 'rsel', SeleniumOnRails::RSelenese
|
|
12
|
-
|
|
13
|
-
class SeleniumOnRails::RSelenese
|
|
14
|
-
attr_accessor :view
|
|
15
|
-
|
|
16
|
-
def initialize view
|
|
17
|
-
super view
|
|
18
|
-
@view = view
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def render template, local_assigns = {}
|
|
22
|
-
title = (@view.assigns['page_title'] or local_assigns['page_title'])
|
|
23
|
-
|
|
24
|
-
evaluator = Evaluator.new(@view)
|
|
25
|
-
evaluator.run_script title, assign_locals_code_from(local_assigns) + "\n" + template.source, local_assigns
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def assign_locals_code_from(local_assigns)
|
|
29
|
-
return local_assigns.keys.collect {|key| "#{key} = local_assigns[#{key.inspect}];"}.join
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def self.call(template)
|
|
33
|
-
"#{name}.new(self).render(template, local_assigns)"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
class Evaluator < SeleniumOnRails::TestBuilder
|
|
37
|
-
def run_script(title, script, local_assigns)
|
|
38
|
-
table(title) do
|
|
39
|
-
test = self #to enable test.command
|
|
40
|
-
eval script
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
require 'selenium_on_rails/partials_support'
|
|
2
|
-
|
|
3
|
-
class SeleniumOnRails::Selenese
|
|
4
|
-
end
|
|
5
|
-
ActionView::Template.register_template_handler 'sel', SeleniumOnRails::Selenese
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class SeleniumOnRails::Selenese
|
|
9
|
-
def initialize view
|
|
10
|
-
@view = view
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def render template, local_assigns = {}
|
|
14
|
-
name = (@view.assigns['page_title'] or local_assigns['page_title'])
|
|
15
|
-
lines = template.source.strip.split "\n"
|
|
16
|
-
html = ''
|
|
17
|
-
html << extract_comments(lines)
|
|
18
|
-
html << extract_commands(lines, name)
|
|
19
|
-
html << extract_comments(lines)
|
|
20
|
-
raise 'You cannot have comments in the middle of commands!' if next_line lines, :any
|
|
21
|
-
html
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
private
|
|
25
|
-
def next_line lines, expects
|
|
26
|
-
while lines.any?
|
|
27
|
-
l = lines.shift.strip
|
|
28
|
-
next if (l.empty? and expects != :comment)
|
|
29
|
-
comment = (l =~ /^\|.*\|$/).nil?
|
|
30
|
-
if (comment and expects == :command) or (!comment and expects == :comment)
|
|
31
|
-
lines.unshift l
|
|
32
|
-
return nil
|
|
33
|
-
end
|
|
34
|
-
return l
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def self.call(template)
|
|
39
|
-
"#{name}.new(self).render(template, local_assigns)"
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def extract_comments lines
|
|
43
|
-
comments = ''
|
|
44
|
-
while (line = next_line lines, :comment)
|
|
45
|
-
comments << line + "\n"
|
|
46
|
-
end
|
|
47
|
-
if defined? RedCloth
|
|
48
|
-
comments = RedCloth.new(comments).to_html
|
|
49
|
-
end
|
|
50
|
-
comments += "\n" unless comments.empty?
|
|
51
|
-
comments
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def extract_commands lines, name
|
|
55
|
-
html = "<table>\n<tr><th colspan=\"3\">#{name}</th></tr>\n"
|
|
56
|
-
while (line = next_line lines, :command)
|
|
57
|
-
line = line[1..-2] #remove starting and ending |
|
|
58
|
-
cells = line.split '|'
|
|
59
|
-
if cells.first == 'includePartial'
|
|
60
|
-
html << include_partial(cells[1..-1])
|
|
61
|
-
next
|
|
62
|
-
end
|
|
63
|
-
raise 'There might only be a maximum of three cells!' if cells.length > 3
|
|
64
|
-
html << '<tr>'
|
|
65
|
-
(1..3).each do
|
|
66
|
-
cell = cells.shift
|
|
67
|
-
cell = (cell ? CGI.escapeHTML(cell.strip) : ' ')
|
|
68
|
-
html << "<td>#{cell}</td>"
|
|
69
|
-
end
|
|
70
|
-
html << "</tr>\n"
|
|
71
|
-
end
|
|
72
|
-
html << "</table>\n"
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def include_partial params
|
|
76
|
-
partial = params.shift
|
|
77
|
-
locals = {}
|
|
78
|
-
params.each do |assignment|
|
|
79
|
-
next if assignment.empty?
|
|
80
|
-
_, var, value = assignment.split(/^([a-z_][a-zA-Z0-9_]*)\s*=\s*(.*)$/)
|
|
81
|
-
raise "Invalid format '#{assignment}'. Should be '|includePartial|partial|var1=value|var2=value|." unless var
|
|
82
|
-
locals[var.to_sym] = value or ''
|
|
83
|
-
end
|
|
84
|
-
@view.render :partial => partial, :locals => locals
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
end
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
require 'selenium_on_rails'
|
|
2
|
-
|
|
3
|
-
module SeleniumOnRails
|
|
4
|
-
module SuiteRenderer
|
|
5
|
-
def test_suite_name path
|
|
6
|
-
return 'All test cases' if [nil, '/'].include? path_to_relative_url(path)
|
|
7
|
-
File.split(path)[-1].humanize
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_suites path
|
|
11
|
-
suites = []
|
|
12
|
-
|
|
13
|
-
parent_path = File.join(File.split(path).slice(0..-2)) #all but last
|
|
14
|
-
parent_path = path_to_relative_url parent_path
|
|
15
|
-
suites << ['..', parent_path] unless parent_path.nil?
|
|
16
|
-
|
|
17
|
-
visit_all_tests path, '', Proc.new {|n, p| suites << [n,path_to_relative_url(p)]}, nil
|
|
18
|
-
suites
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_cases path
|
|
22
|
-
tests = []
|
|
23
|
-
visit_all_tests path, '', nil, Proc.new {|n, p| tests << [n,p]}
|
|
24
|
-
tests
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def link_to_test_case suite_name, filename
|
|
28
|
-
name = suite_name + test_case_name(filename)
|
|
29
|
-
link_to name, :action => :test_file, :testname => path_to_relative_url(filename).sub(/^\//,'')
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
private ###############################################
|
|
33
|
-
|
|
34
|
-
def path_to_relative_url path
|
|
35
|
-
slt = @controller.selenium_tests_path
|
|
36
|
-
return nil unless path.index slt
|
|
37
|
-
path.sub slt, ''
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def visit_all_tests path, suite_name, suite_consumer, test_consumer
|
|
41
|
-
dirs = [] #add dirs to an array in order for files to be processed before dirs
|
|
42
|
-
Dir.entries(path).sort.each do |e|
|
|
43
|
-
next if skip_file?(e) or ['.','..'].include?(e)
|
|
44
|
-
filename = File.join path, e
|
|
45
|
-
if File.directory? filename
|
|
46
|
-
dirs << [filename, "#{suite_name}#{e.humanize}."]
|
|
47
|
-
suite_consumer.call("#{suite_name}#{e.humanize}", filename) if suite_consumer
|
|
48
|
-
else
|
|
49
|
-
test_consumer.call(suite_name, filename) if test_consumer
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
#recurse through dirs
|
|
53
|
-
dirs.each {|p, n| visit_all_tests p, n, suite_consumer, test_consumer }
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
require 'selenium_on_rails/test_builder_actions'
|
|
2
|
-
require 'selenium_on_rails/test_builder_accessors'
|
|
3
|
-
|
|
4
|
-
# Create test_builder_user_actions.rb to support actions included
|
|
5
|
-
# in selenium-core's user-extensions.js
|
|
6
|
-
#
|
|
7
|
-
# See test_builder_user_actions.rb.example for examples matching
|
|
8
|
-
# selenium-core's user-extensions.js.sample
|
|
9
|
-
module SeleniumOnRails::TestBuilderUserActions
|
|
10
|
-
end
|
|
11
|
-
require 'selenium_on_rails/test_builder_user_actions' if File.exist?(File.expand_path(File.join(File.dirname(__FILE__), 'test_builder_user_actions.rb')))
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# Create test_builder_user_accessors.rb to support accessors
|
|
15
|
-
# included in selenium-core's user-extensions.js
|
|
16
|
-
#
|
|
17
|
-
# See test_builder_user_accessors.rb.example for examples matching
|
|
18
|
-
# selenium-core's user-extensions.js.sample
|
|
19
|
-
module SeleniumOnRails::TestBuilderUserAccessors
|
|
20
|
-
end
|
|
21
|
-
require 'selenium_on_rails/test_builder_user_accessors' if File.exist?(File.expand_path(File.join(File.dirname(__FILE__), 'test_builder_user_accessors.rb')))
|
|
22
|
-
|
|
23
|
-
# Builds Selenium test table using a high-level Ruby interface. Normally
|
|
24
|
-
# invoked through SeleniumOnRails::RSelenese.
|
|
25
|
-
#
|
|
26
|
-
# See SeleniumOnRails::TestBuilderActions for the available actions and
|
|
27
|
-
# SeleniumOnRails::TestBuilderAccessors for the available checks.
|
|
28
|
-
#
|
|
29
|
-
# For more information on the commands supported by TestBuilder, see the
|
|
30
|
-
# Selenium Commands Documentation at
|
|
31
|
-
# http://release.openqa.org/selenium-core/nightly/reference.html.
|
|
32
|
-
class SeleniumOnRails::TestBuilder
|
|
33
|
-
include SeleniumOnRails::TestBuilderActions
|
|
34
|
-
include SeleniumOnRails::TestBuilderAccessors
|
|
35
|
-
include SeleniumOnRails::TestBuilderUserActions
|
|
36
|
-
include SeleniumOnRails::TestBuilderUserAccessors
|
|
37
|
-
|
|
38
|
-
# Convert _str_ to a Selenium command name.
|
|
39
|
-
def self.selenize str
|
|
40
|
-
str.camelize.gsub(/^[A-Z]/) {|s| s.downcase }
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Prepends _pattern_ with 'exact:' if it would be considered containing
|
|
44
|
-
# string-match pattern otherwise.
|
|
45
|
-
def exactize pattern
|
|
46
|
-
pattern.include?(':') ? "exact:#{pattern}" : pattern
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Create a new TestBuilder for _view_.
|
|
50
|
-
def initialize view
|
|
51
|
-
@view = view
|
|
52
|
-
@output = ''
|
|
53
|
-
@xml = Builder::XmlMarkup.new :indent => 2, :target => @output
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Add a new table of tests, and return the HTML.
|
|
57
|
-
def table title
|
|
58
|
-
@xml.table do
|
|
59
|
-
@xml.tr do @xml.th(title, :colspan => 3) end
|
|
60
|
-
yield self
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Add a new test command using _cmd_, _target_ and _value_.
|
|
65
|
-
def command cmd, target=nil, value=nil
|
|
66
|
-
@xml.tr do
|
|
67
|
-
_tdata cmd
|
|
68
|
-
_tdata target
|
|
69
|
-
_tdata value
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
# :nodoc
|
|
73
|
-
alias_method :command_verbatim, :command
|
|
74
|
-
|
|
75
|
-
# Same as _command_ but add _AndWait_ to the name of _cmd_.
|
|
76
|
-
def command_and_wait cmd, target=nil, value=nil
|
|
77
|
-
command_verbatim cmd.to_s + 'AndWait', target, value
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# Re routes commands in the provided block to #command_and_wait instead of
|
|
81
|
-
# #command.
|
|
82
|
-
def make_command_waiting
|
|
83
|
-
self.class.send :alias_method, :command, :command_and_wait
|
|
84
|
-
yield
|
|
85
|
-
self.class.send :alias_method, :command, :command_verbatim
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
protected
|
|
89
|
-
|
|
90
|
-
# If _url_ is a string, return unchanged. Otherwise, pass it to
|
|
91
|
-
# ActionView#UrlHelper#url_for.
|
|
92
|
-
def url_arg url
|
|
93
|
-
if url.instance_of?(String) then url else exactize(@view.url_for(url)) end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
# If _arg_ is an array formats _arg_ to a textual representation.
|
|
97
|
-
# Otherwise return unchanged.
|
|
98
|
-
def collection_arg arg
|
|
99
|
-
if arg.is_a? Array
|
|
100
|
-
arg.collect {|e| e.gsub(/[\\,]/) {|s| "\\#{s}" } }.join(',')
|
|
101
|
-
else
|
|
102
|
-
arg
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
private
|
|
107
|
-
|
|
108
|
-
# Output a single TD element.
|
|
109
|
-
def _tdata value
|
|
110
|
-
if value
|
|
111
|
-
@xml.td(value.to_s)
|
|
112
|
-
else
|
|
113
|
-
@xml.td do @xml.target! << ' ' end
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|