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