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
|
@@ -1207,6 +1207,61 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
1207
1207
|
end # with relations
|
|
1208
1208
|
|
|
1209
1209
|
end
|
|
1210
|
+
|
|
1211
|
+
context 'with same classes in different sites' do
|
|
1212
|
+
|
|
1213
|
+
setup do
|
|
1214
|
+
@one = Site.create_for_host('one.host', 'secret')
|
|
1215
|
+
assert_equal 'one.host', current_site.host
|
|
1216
|
+
make_vclass_and_relations(current_site)
|
|
1217
|
+
check_relations(@one.id)
|
|
1218
|
+
|
|
1219
|
+
@two = Site.create_for_host('two.host', 'secret')
|
|
1220
|
+
assert_equal 'two.host', current_site.host
|
|
1221
|
+
assert_equal 'admin', visitor.login
|
|
1222
|
+
make_vclass_and_relations(current_site)
|
|
1223
|
+
check_relations(@two.id)
|
|
1224
|
+
end
|
|
1225
|
+
|
|
1226
|
+
subject do
|
|
1227
|
+
VirtualClass['Cat']
|
|
1228
|
+
end
|
|
1229
|
+
|
|
1230
|
+
should 'not make a mess on move' do
|
|
1231
|
+
assert_difference('Relation.count', 0) do
|
|
1232
|
+
assert subject.update_attributes(:superclass => 'Project')
|
|
1233
|
+
check_relations(@one.id)
|
|
1234
|
+
end
|
|
1235
|
+
end
|
|
1236
|
+
end
|
|
1210
1237
|
end # An admin
|
|
1238
|
+
|
|
1239
|
+
private
|
|
1240
|
+
|
|
1241
|
+
def make_vclass_and_relations(site)
|
|
1242
|
+
sub = VirtualClass.create(:superclass => 'Page', :name => 'Sub', :create_group_id => site.public_group_id)
|
|
1243
|
+
cat = VirtualClass.create(:superclass => 'Section', :name => 'Cat', :create_group_id => site.public_group_id)
|
|
1244
|
+
|
|
1245
|
+
Relation.create(
|
|
1246
|
+
:source_kpath => sub.kpath,
|
|
1247
|
+
:source_role => 'cat_sub',
|
|
1248
|
+
:target_kpath => cat.kpath,
|
|
1249
|
+
:target_role => 'sub_cat'
|
|
1250
|
+
)
|
|
1251
|
+
|
|
1252
|
+
Relation.create(
|
|
1253
|
+
:source_kpath => sub.kpath,
|
|
1254
|
+
:source_role => 'cat_page',
|
|
1255
|
+
:target_kpath => Page.kpath,
|
|
1256
|
+
:target_role => 'page_cat'
|
|
1257
|
+
)
|
|
1258
|
+
end
|
|
1211
1259
|
|
|
1260
|
+
def check_relations(site_id)
|
|
1261
|
+
assert cat = VirtualClass.find_by_site_id_and_name(site_id, 'Cat')
|
|
1262
|
+
assert sub = VirtualClass.find_by_site_id_and_name(site_id, 'Sub')
|
|
1263
|
+
assert cat_sub = Relation.find_by_site_id_and_source_role(site_id, 'cat_sub')
|
|
1264
|
+
assert cat_page = Relation.find_by_site_id_and_source_role(site_id, 'cat_page')
|
|
1265
|
+
assert_equal 2, Relation.count(:conditions => {:site_id => site_id})
|
|
1266
|
+
end
|
|
1212
1267
|
end
|
data/test/unit/workflow_test.rb
CHANGED
|
@@ -377,6 +377,181 @@ class WorkflowTest < Zena::Unit::TestCase
|
|
|
377
377
|
assert_equal 'Brazil', node.prop['country']
|
|
378
378
|
end
|
|
379
379
|
end
|
|
380
|
+
|
|
381
|
+
context 'with another user' do
|
|
382
|
+
setup do
|
|
383
|
+
login(:lion)
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
context 'saving without clone' do
|
|
387
|
+
|
|
388
|
+
should 'not create new version' do
|
|
389
|
+
node = secure!(Node) { nodes(:lake) }
|
|
390
|
+
assert_difference('Version.count', 0) do
|
|
391
|
+
assert node.update_attributes_without_clone(:first_name => 'Mea Lua', :country => 'Brazil')
|
|
392
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
393
|
+
assert_equal 'Mea Lua we love', node.title
|
|
394
|
+
assert_equal 'Brazil', node.prop['country']
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
should 'not change version author' do
|
|
399
|
+
node = secure!(Node) { nodes(:lake) }
|
|
400
|
+
orig_user = node.version.user_id
|
|
401
|
+
assert_not_equal visitor.id, orig_user
|
|
402
|
+
assert_difference('Version.count', 0) do
|
|
403
|
+
assert node.update_attributes_without_clone(:first_name => 'Mea Lua', :country => 'Brazil')
|
|
404
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
405
|
+
assert_equal orig_user, node.version.user_id
|
|
406
|
+
end
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
should 'not change node timestamp' do
|
|
410
|
+
node = secure!(Node) { nodes(:lake) }
|
|
411
|
+
updated_at = node.updated_at
|
|
412
|
+
assert_difference('Version.count', 0) do
|
|
413
|
+
assert node.update_attributes_without_clone(:first_name => 'Mea Lua', :country => 'Brazil')
|
|
414
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
415
|
+
assert_equal updated_at, node.updated_at
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
should 'not change version timestamp' do
|
|
420
|
+
node = secure!(Node) { nodes(:lake) }
|
|
421
|
+
updated_at = node.version.updated_at
|
|
422
|
+
assert_difference('Version.count', 0) do
|
|
423
|
+
assert node.update_attributes_without_clone(:first_name => 'Mea Lua', :country => 'Brazil')
|
|
424
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
425
|
+
assert_equal updated_at, node.version.updated_at
|
|
426
|
+
end
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
should 'evaluate prop_eval' do
|
|
430
|
+
node = secure!(Node) { nodes(:lake) }
|
|
431
|
+
assert_difference('Version.count', 0) do
|
|
432
|
+
assert node.update_attributes_without_clone(:first_name => 'Mea Lua', :country => 'Brazil')
|
|
433
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
434
|
+
assert_equal 'Mea Lua we love', node.title
|
|
435
|
+
end
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
should 'evaluate indices' do
|
|
439
|
+
node = secure!(Node) { nodes(:opening) }
|
|
440
|
+
assert_difference('Version.count', 0) do
|
|
441
|
+
t = Time.utc(2013, 8, 21, 10, 59)
|
|
442
|
+
assert node.update_attributes_without_clone(:date => t)
|
|
443
|
+
node = secure!(Node) { nodes(:opening) } # reload
|
|
444
|
+
assert_equal t, node.idx_datetime1
|
|
445
|
+
end
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
context 'with save cmd' do
|
|
449
|
+
|
|
450
|
+
should 'not create new version' do
|
|
451
|
+
node = secure!(Node) { nodes(:lake) }
|
|
452
|
+
assert_difference('Version.count', 0) do
|
|
453
|
+
node.attributes = {:first_name => 'Mea Lua', :country => 'Brazil'}
|
|
454
|
+
assert node.save_without_clone
|
|
455
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
456
|
+
assert_equal 'Mea Lua we love', node.title
|
|
457
|
+
assert_equal 'Brazil', node.prop['country']
|
|
458
|
+
end
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
should 'evaluate prop_eval' do
|
|
462
|
+
node = secure!(Node) { nodes(:lake) }
|
|
463
|
+
assert_difference('Version.count', 0) do
|
|
464
|
+
node.attributes = {:first_name => 'Mea Lua', :country => 'Brazil'}
|
|
465
|
+
assert node.save_without_clone
|
|
466
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
467
|
+
assert_equal 'Mea Lua we love', node.title
|
|
468
|
+
end
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
should 'evaluate indices' do
|
|
472
|
+
node = secure!(Node) { nodes(:opening) }
|
|
473
|
+
assert_difference('Version.count', 0) do
|
|
474
|
+
t = Time.utc(2013, 8, 21, 10, 59)
|
|
475
|
+
node.prop['date'] = t
|
|
476
|
+
assert node.save_without_clone
|
|
477
|
+
node = secure!(Node) { nodes(:opening) } # reload
|
|
478
|
+
assert_equal t, node.idx_datetime1
|
|
479
|
+
end
|
|
480
|
+
end
|
|
481
|
+
end
|
|
482
|
+
end
|
|
483
|
+
|
|
484
|
+
context 'updating not versioned props only' do
|
|
485
|
+
|
|
486
|
+
should 'not create new version' do
|
|
487
|
+
node = secure!(Node) { nodes(:lake) }
|
|
488
|
+
assert_difference('Version.count', 0) do
|
|
489
|
+
assert node.update_attributes(:'cart' => {'foo' => 'hello'})
|
|
490
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
491
|
+
assert_equal 'hello', node.cart['foo']
|
|
492
|
+
end
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
should 'not change version author' do
|
|
496
|
+
node = secure!(Node) { nodes(:lake) }
|
|
497
|
+
orig_user = node.version.user_id
|
|
498
|
+
assert_not_equal visitor.id, orig_user
|
|
499
|
+
assert_difference('Version.count', 0) do
|
|
500
|
+
assert node.update_attributes(:'cart' => {'foo' => 'hello'})
|
|
501
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
502
|
+
assert_equal orig_user, node.version.user_id
|
|
503
|
+
end
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
should 'not change node timestamp' do
|
|
507
|
+
node = secure!(Node) { nodes(:lake) }
|
|
508
|
+
updated_at = node.updated_at
|
|
509
|
+
assert_difference('Version.count', 0) do
|
|
510
|
+
assert node.update_attributes(:'cart' => {'foo' => 'hello'})
|
|
511
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
512
|
+
assert_equal updated_at, node.updated_at
|
|
513
|
+
end
|
|
514
|
+
end
|
|
515
|
+
|
|
516
|
+
should 'not change version timestamp' do
|
|
517
|
+
node = secure!(Node) { nodes(:lake) }
|
|
518
|
+
updated_at = node.version.updated_at
|
|
519
|
+
assert_difference('Version.count', 0) do
|
|
520
|
+
assert node.update_attributes(:'cart' => {'foo' => 'hello'})
|
|
521
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
522
|
+
assert_equal updated_at, node.version.updated_at
|
|
523
|
+
end
|
|
524
|
+
end
|
|
525
|
+
|
|
526
|
+
should 'evaluate prop_eval' do
|
|
527
|
+
node = secure!(Node) { nodes(:lake) }
|
|
528
|
+
|
|
529
|
+
c = secure(VirtualClass) { virtual_classes(:Contact) }
|
|
530
|
+
assert c.update_attributes(:prop_eval => %q[{'cart' => {'baz' => cart['foo']}}])
|
|
531
|
+
|
|
532
|
+
assert_difference('Version.count', 0) do
|
|
533
|
+
assert node.update_attributes(:'cart' => {'foo' => 'hello'})
|
|
534
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
535
|
+
assert_equal 'hello', node.cart['baz']
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
# Make sure to clear VirtualClass cache to avoid errors due to prop_eval propagation
|
|
539
|
+
VirtualClass.expire_cache!
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
should 'evaluate indices' do
|
|
543
|
+
|
|
544
|
+
c = secure(Column) { columns(:Contact_cart) }
|
|
545
|
+
assert c.update_attributes(:index => '.idx_string1', :ptype => 'string')
|
|
546
|
+
node = secure!(Node) { nodes(:lake) }
|
|
547
|
+
assert_difference('Version.count', 0) do
|
|
548
|
+
assert node.update_attributes(:'cart' => 'Hop', :v_status => Zena::Status::Pub)
|
|
549
|
+
node = secure!(Node) { nodes(:lake) } # reload
|
|
550
|
+
assert_equal 'Hop', node.idx_string1
|
|
551
|
+
end
|
|
552
|
+
end
|
|
553
|
+
end
|
|
554
|
+
end
|
|
380
555
|
|
|
381
556
|
should 'be able to create nodes using properties' do
|
|
382
557
|
node = secure!(Node) { Node.create(defaults.merge(:title => 'Pandeiro')) }
|
|
@@ -68,12 +68,12 @@ class AncestryTest < Zena::Unit::TestCase
|
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
should 'rebuild fullpath in new parent' do
|
|
71
|
-
assert_equal fullpath(:people, :lion, :secret), subject.fullpath
|
|
71
|
+
assert_equal fullpath(:zena, :people, :lion, :secret), subject.fullpath
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
should 'rebuild children fullpath' do
|
|
75
|
-
assert_equal fullpath(:people, :lion, :secret, :talk), nodes(:talk).fullpath
|
|
76
|
-
assert_equal fullpath(:people, :lion, :secret, :proposition), nodes(:proposition).fullpath
|
|
75
|
+
assert_equal fullpath(:zena, :people, :lion, :secret, :talk), nodes(:talk).fullpath
|
|
76
|
+
assert_equal fullpath(:zena, :people, :lion, :secret, :proposition), nodes(:proposition).fullpath
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
context 'with custom_base set' do
|
|
@@ -93,6 +93,31 @@ class AncestryTest < Zena::Unit::TestCase
|
|
|
93
93
|
|
|
94
94
|
end # Moving an object
|
|
95
95
|
|
|
96
|
+
context 'Moving a document' do
|
|
97
|
+
setup do
|
|
98
|
+
login(:lion)
|
|
99
|
+
# Move 'talk' inside 'tree_jpg'
|
|
100
|
+
talk = secure(Node) {nodes(:talk)}
|
|
101
|
+
|
|
102
|
+
assert talk.update_attributes(:parent_id => subject.id)
|
|
103
|
+
|
|
104
|
+
# Move 'tree_jpg' inside 'ant'
|
|
105
|
+
subject.update_attributes(:parent_id => nodes_id(:ant))
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
subject do
|
|
109
|
+
secure(Node) { nodes(:tree_jpg) }
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
should 'rebuild fullpath in new parent' do
|
|
113
|
+
assert_equal fullpath(:zena, :people, :ant, :tree_jpg), subject.fullpath
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
should 'rebuild children fullpath' do
|
|
117
|
+
assert_equal fullpath(:zena, :people, :ant, :tree_jpg, :talk), nodes(:talk).fullpath
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
96
121
|
context 'Finding an object from a path' do
|
|
97
122
|
setup do
|
|
98
123
|
login(:lion)
|
|
@@ -188,12 +213,12 @@ class AncestryTest < Zena::Unit::TestCase
|
|
|
188
213
|
end
|
|
189
214
|
|
|
190
215
|
should 'build fullpath' do
|
|
191
|
-
assert_equal [nodes_zip(:projects), subject.zip].join('/'), subject.fullpath
|
|
216
|
+
assert_equal [nodes_zip(:zena), nodes_zip(:projects), subject.zip].join('/'), subject.fullpath
|
|
192
217
|
end
|
|
193
218
|
|
|
194
219
|
should 'build basepath' do
|
|
195
220
|
err subject
|
|
196
|
-
assert_equal [nodes_zip(:projects), subject.zip].join('/'), subject.fullpath
|
|
221
|
+
assert_equal [nodes_zip(:zena), nodes_zip(:projects), subject.zip].join('/'), subject.fullpath
|
|
197
222
|
end
|
|
198
223
|
end # creating a node
|
|
199
224
|
|
|
@@ -205,16 +230,33 @@ class AncestryTest < Zena::Unit::TestCase
|
|
|
205
230
|
login(:ant)
|
|
206
231
|
Node.connection.execute "UPDATE nodes SET parent_id = #{nodes_id(:status)} WHERE id = #{nodes_id(:cleanWater)}"
|
|
207
232
|
end
|
|
208
|
-
|
|
233
|
+
|
|
209
234
|
subject do
|
|
210
|
-
secure(Node) { nodes(:
|
|
235
|
+
secure(Node) { nodes(:status) }
|
|
211
236
|
end
|
|
212
|
-
|
|
237
|
+
|
|
213
238
|
should 'raise Invalid record on site rebuild_fullpath' do
|
|
214
|
-
assert_raise(Zena::InvalidRecord)
|
|
239
|
+
assert_raise(Zena::InvalidRecord) do
|
|
240
|
+
Zena::Use::Ancestry.rebuild_all_paths(subject)
|
|
241
|
+
end
|
|
215
242
|
end
|
|
216
243
|
end # A node in an ancestry loop
|
|
217
|
-
|
|
244
|
+
|
|
245
|
+
context 'Rebuilding paths for site' do
|
|
246
|
+
setup do
|
|
247
|
+
Zena::Db.execute "UPDATE nodes SET fullpath = NULL, basepath = NULL"
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
should 'Rebuild paths for all nodes' do
|
|
251
|
+
login(:lion)
|
|
252
|
+
assert_nil s.fullpath
|
|
253
|
+
assert_nil s.basepath
|
|
254
|
+
current_site.rebuild_fullpath(nil, 1)
|
|
255
|
+
s = nodes(:status)
|
|
256
|
+
assert_equal '11/18/21/22', s.fullpath
|
|
257
|
+
assert_equal '18/21', s.basepath
|
|
258
|
+
end
|
|
259
|
+
end
|
|
218
260
|
|
|
219
261
|
private
|
|
220
262
|
def fullpath(*args)
|
|
@@ -36,6 +36,36 @@ class PropEvalTest < Zena::Unit::TestCase
|
|
|
36
36
|
end
|
|
37
37
|
end # with valid code
|
|
38
38
|
|
|
39
|
+
context 'with valid code creating empty title' do
|
|
40
|
+
setup do
|
|
41
|
+
assert subject.update_attributes(:prop_eval => %q[{'title' => ''}])
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
should 'save class name as title' do
|
|
45
|
+
letter = secure(Node) { nodes(:letter) }
|
|
46
|
+
assert_equal 'zena enhancements', nodes(:letter).title
|
|
47
|
+
letter.rebuild_index!
|
|
48
|
+
assert_equal 'Letter', nodes(:letter).title
|
|
49
|
+
assert letter.update_attributes(:date => Time.now)
|
|
50
|
+
assert_equal 'Letter', nodes(:letter).title
|
|
51
|
+
end
|
|
52
|
+
end # with valid code
|
|
53
|
+
|
|
54
|
+
context 'with valid code creating nil title' do
|
|
55
|
+
setup do
|
|
56
|
+
assert subject.update_attributes(:prop_eval => %q[{'title' => nil}])
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
should 'save class name as title' do
|
|
60
|
+
letter = secure(Node) { nodes(:letter) }
|
|
61
|
+
assert_equal 'zena enhancements', nodes(:letter).title
|
|
62
|
+
letter.rebuild_index!
|
|
63
|
+
assert_equal 'Letter', nodes(:letter).title
|
|
64
|
+
assert letter.update_attributes(:date => Time.now)
|
|
65
|
+
assert_equal 'Letter', nodes(:letter).title
|
|
66
|
+
end
|
|
67
|
+
end # with valid code
|
|
68
|
+
|
|
39
69
|
context 'with valid code using vclass methods' do
|
|
40
70
|
subject do
|
|
41
71
|
secure(VirtualClass) { virtual_classes(:Post) }
|
|
@@ -168,6 +198,20 @@ class PropEvalTest < Zena::Unit::TestCase
|
|
|
168
198
|
assert_equal 'LAST:Invicta FIRST:Solenopsis', idx_ml_value(subject.id, 'title')
|
|
169
199
|
assert_equal 'LAST:Invicta FIRST:Solenopsis', nodes(:ant).title
|
|
170
200
|
end
|
|
201
|
+
|
|
202
|
+
context 'with a rule yielding blank title' do
|
|
203
|
+
setup do
|
|
204
|
+
v = VirtualClass['Letter']
|
|
205
|
+
v.update_attributes(:prop_eval => %q[{'title' => ''}])
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
should 'use class name for title' do
|
|
209
|
+
l = secure(Node) { nodes(:letter) }
|
|
210
|
+
l.rebuild_index!
|
|
211
|
+
l = secure(Node) { nodes(:letter) }
|
|
212
|
+
assert_equal 'Letter', l.title
|
|
213
|
+
end
|
|
214
|
+
end
|
|
171
215
|
end # rebuilding index
|
|
172
216
|
|
|
173
217
|
end # from a class with evaluated properties
|
|
@@ -22,7 +22,53 @@ class RenderingTest < Zena::View::TestCase
|
|
|
22
22
|
assert File.exist?(fullpath)
|
|
23
23
|
FileUtils.rm(fullpath)
|
|
24
24
|
end
|
|
25
|
+
|
|
26
|
+
should 'build template partial on template_path_from_template_url' do
|
|
27
|
+
fullpath = fullpath_from_template_url('Default skin/Node/pages', false)
|
|
28
|
+
main_path = fullpath_from_template_url('Default skin/Node/_main', false)
|
|
29
|
+
FileUtils.rm(fullpath) if File.exist?(fullpath)
|
|
30
|
+
FileUtils.rm(main_path) if File.exist?(main_path)
|
|
31
|
+
assert_equal '/test.host/zafu/Default skin/Node/en/pages.erb', template_path_from_template_url('', 'Default skin/Node/pages', true)
|
|
32
|
+
assert File.exist?(main_path)
|
|
33
|
+
assert File.exist?(fullpath)
|
|
34
|
+
FileUtils.rm(fullpath)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'with an alias site' do
|
|
38
|
+
setup do
|
|
39
|
+
setup_visitor(visitor, Site.find_by_host('alias.host'))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
should 'build template on template_path_from_template_url' do
|
|
43
|
+
fullpath = fullpath_from_template_url('wiki skin/Page-changes/_main', false)
|
|
44
|
+
if File.exist?(fullpath)
|
|
45
|
+
FileUtils.rm(fullpath)
|
|
46
|
+
end
|
|
47
|
+
assert_equal '/test.host/zafu/wiki skin/Page-changes/en/foo.erb', template_path_from_template_url('', 'wiki skin/Page-changes/foo', true)
|
|
48
|
+
assert File.exist?(fullpath)
|
|
49
|
+
FileUtils.rm(fullpath)
|
|
50
|
+
end
|
|
25
51
|
|
|
52
|
+
should 'build template partial on template_path_from_template_url' do
|
|
53
|
+
fullpath = fullpath_from_template_url('Default skin/Node/pages', false)
|
|
54
|
+
main_path = fullpath_from_template_url('Default skin/Node/_main', false)
|
|
55
|
+
FileUtils.rm(fullpath) if File.exist?(fullpath)
|
|
56
|
+
FileUtils.rm(main_path) if File.exist?(main_path)
|
|
57
|
+
assert_equal '/test.host/zafu/Default skin/Node/en/pages.erb', template_path_from_template_url('', 'Default skin/Node/pages', true)
|
|
58
|
+
assert File.exist?(main_path)
|
|
59
|
+
assert File.exist?(fullpath)
|
|
60
|
+
FileUtils.rm(fullpath)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
should 'find site alias on visitor site' do
|
|
64
|
+
assert_equal 'alias.host', visitor.site.host
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
should 'find forced skin on any node' do
|
|
68
|
+
assert_equal 'wiki skin', visitor.get_skin(nodes(:zena)).title
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
26
72
|
should 'return a fullpath on fullpath_from_template_url' do
|
|
27
73
|
assert_equal "#{SITES_ROOT}/test.host/zafu/SKIN/TEMPLATE/en/DOM_ID.erb", fullpath_from_template_url('SKIN/TEMPLATE/DOM_ID', false)
|
|
28
74
|
end
|
|
@@ -168,7 +214,7 @@ class RenderingControllerTest < Zena::Controller::TestCase
|
|
|
168
214
|
:t_url => 'Default skin/Node-ins/foo',
|
|
169
215
|
:dom_id => 'foo',
|
|
170
216
|
}
|
|
171
|
-
assert_equal %Q{
|
|
217
|
+
assert_equal %Q{if (Zena.stampOk('foo', 0)) {\nElement.replace(\"foo\", \"\\u003Cdiv id='foo' data-z='12'\\u003Ehello people\\u003C/div\\u003E\");\n\n}}, @response.body
|
|
172
218
|
end
|
|
173
219
|
|
|
174
220
|
context 'with insert' do
|
|
@@ -179,7 +225,7 @@ class RenderingControllerTest < Zena::Controller::TestCase
|
|
|
179
225
|
:dom_id => 'foo',
|
|
180
226
|
:insert => 'bottom',
|
|
181
227
|
}
|
|
182
|
-
assert_equal %Q{Zena.insert_inner(\"foo\", \"bottom\", \"\\u003Cdiv id='foo' data-z='12'\\u003Ehello people\\u003C/div\\u003E\");\n}, @response.body
|
|
228
|
+
assert_equal %Q{if (Zena.stampOk('foo', 0)) {\nZena.insert_inner(\"foo\", \"bottom\", \"\\u003Cdiv id='foo' data-z='12'\\u003Ehello people\\u003C/div\\u003E\");\n\n}}, @response.body
|
|
183
229
|
end
|
|
184
230
|
end # with insert
|
|
185
231
|
end # to update
|