fortitude 0.0.4-java
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.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.rspec-local +4 -0
- data/.travis.yml +50 -0
- data/CHANGES.md +62 -0
- data/CONTRIBUTORS.md +6 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +22 -0
- data/README-erector.md +246 -0
- data/README.md +15 -0
- data/Rakefile +67 -0
- data/ext/FortitudeJrubyNativeExtService.java +11 -0
- data/ext/com/fortituderuby/ext/fortitude/FortitudeNativeLibrary.java +223 -0
- data/ext/fortitude_native_ext/extconf.rb +4 -0
- data/ext/fortitude_native_ext/fortitude_native_ext.c +333 -0
- data/fortitude.gemspec +42 -0
- data/lib/fortitude.rb +7 -0
- data/lib/fortitude/doctypes.rb +48 -0
- data/lib/fortitude/doctypes/base.rb +42 -0
- data/lib/fortitude/doctypes/html4.rb +21 -0
- data/lib/fortitude/doctypes/html4_frameset.rb +20 -0
- data/lib/fortitude/doctypes/html4_strict.rb +18 -0
- data/lib/fortitude/doctypes/html4_tags_frameset.rb +53 -0
- data/lib/fortitude/doctypes/html4_tags_strict.rb +274 -0
- data/lib/fortitude/doctypes/html4_tags_transitional.rb +115 -0
- data/lib/fortitude/doctypes/html4_transitional.rb +19 -0
- data/lib/fortitude/doctypes/html5.rb +373 -0
- data/lib/fortitude/doctypes/unknown_doctype.rb +20 -0
- data/lib/fortitude/doctypes/xhtml10.rb +20 -0
- data/lib/fortitude/doctypes/xhtml10_frameset.rb +18 -0
- data/lib/fortitude/doctypes/xhtml10_strict.rb +18 -0
- data/lib/fortitude/doctypes/xhtml10_transitional.rb +18 -0
- data/lib/fortitude/doctypes/xhtml11.rb +30 -0
- data/lib/fortitude/errors.rb +153 -0
- data/lib/fortitude/extensions/fortitude_ruby_ext.rb +76 -0
- data/lib/fortitude/extensions/native_extensions.rb +33 -0
- data/lib/fortitude/method_templates/assign_locals_from_template.rb.smpl +22 -0
- data/lib/fortitude/method_templates/need_assignment_template.rb.smpl +16 -0
- data/lib/fortitude/method_templates/need_method_template.rb.smpl +4 -0
- data/lib/fortitude/method_templates/simple_template.rb +50 -0
- data/lib/fortitude/method_templates/tag_method_template.rb.smpl +68 -0
- data/lib/fortitude/method_templates/text_method_template.rb.smpl +17 -0
- data/lib/fortitude/rails.rb +26 -0
- data/lib/fortitude/rails/helpers.rb +153 -0
- data/lib/fortitude/rails/railtie.rb +256 -0
- data/lib/fortitude/rails/renderer.rb +43 -0
- data/lib/fortitude/rails/template_handler.rb +23 -0
- data/lib/fortitude/rails/widget_methods.rb +13 -0
- data/lib/fortitude/rails/yielded_object_outputter.rb +31 -0
- data/lib/fortitude/rendering_context.rb +205 -0
- data/lib/fortitude/support/assigns_proxy.rb +77 -0
- data/lib/fortitude/support/class_inheritable_attributes.rb +98 -0
- data/lib/fortitude/support/instance_variable_set.rb +76 -0
- data/lib/fortitude/support/staticized_method.rb +87 -0
- data/lib/fortitude/tags/partial_tag_placeholder.rb +19 -0
- data/lib/fortitude/tags/tag.rb +189 -0
- data/lib/fortitude/tags/tag_return_value.rb +13 -0
- data/lib/fortitude/tags/tag_store.rb +53 -0
- data/lib/fortitude/tags/tag_support.rb +51 -0
- data/lib/fortitude/tags/tags_module.rb +16 -0
- data/lib/fortitude/tilt.rb +17 -0
- data/lib/fortitude/tilt/fortitude_template.rb +169 -0
- data/lib/fortitude/version.rb +3 -0
- data/lib/fortitude/widget.rb +54 -0
- data/lib/fortitude/widget/around_content.rb +53 -0
- data/lib/fortitude/widget/capturing.rb +37 -0
- data/lib/fortitude/widget/content.rb +61 -0
- data/lib/fortitude/widget/doctypes.rb +53 -0
- data/lib/fortitude/widget/helpers.rb +62 -0
- data/lib/fortitude/widget/integration.rb +76 -0
- data/lib/fortitude/widget/localization.rb +63 -0
- data/lib/fortitude/widget/modules_and_subclasses.rb +58 -0
- data/lib/fortitude/widget/needs.rb +164 -0
- data/lib/fortitude/widget/non_rails_widget_methods.rb +13 -0
- data/lib/fortitude/widget/rendering.rb +98 -0
- data/lib/fortitude/widget/start_and_end_comments.rb +69 -0
- data/lib/fortitude/widget/staticization.rb +50 -0
- data/lib/fortitude/widget/tag_like_methods.rb +102 -0
- data/lib/fortitude/widget/tags.rb +55 -0
- data/lib/fortitude/widget/temporary_overrides.rb +28 -0
- data/lib/fortitude/widget/widget_class_inheritable_attributes.rb +35 -0
- data/lib/fortitude/widgets.rb +12 -0
- data/lib/fortitude/widgets/html4_frameset.rb +9 -0
- data/lib/fortitude/widgets/html4_strict.rb +9 -0
- data/lib/fortitude/widgets/html4_transitional.rb +9 -0
- data/lib/fortitude/widgets/html5.rb +9 -0
- data/lib/fortitude/widgets/xhtml10_frameset.rb +9 -0
- data/lib/fortitude/widgets/xhtml10_strict.rb +9 -0
- data/lib/fortitude/widgets/xhtml10_transitional.rb +9 -0
- data/lib/fortitude/widgets/xhtml11.rb +9 -0
- data/lib/fortitude_jruby_native_ext.jar +0 -0
- data/spec/helpers/global_helper.rb +8 -0
- data/spec/helpers/rails_helpers.rb +85 -0
- data/spec/helpers/rails_server.rb +386 -0
- data/spec/helpers/system_helpers.rb +117 -0
- data/spec/rails/basic_rails_system_spec.rb +7 -0
- data/spec/rails/capture_system_spec.rb +75 -0
- data/spec/rails/class_loading_system_spec.rb +63 -0
- data/spec/rails/complex_helpers_system_spec.rb +33 -0
- data/spec/rails/data_passing_system_spec.rb +96 -0
- data/spec/rails/default_layout_system_spec.rb +15 -0
- data/spec/rails/development_mode_system_spec.rb +67 -0
- data/spec/rails/erb_integration_system_spec.rb +23 -0
- data/spec/rails/helpers_include_all_off_system_spec.rb +7 -0
- data/spec/rails/helpers_system_spec.rb +79 -0
- data/spec/rails/helpers_unrefined_system_spec.rb +7 -0
- data/spec/rails/layouts_system_spec.rb +60 -0
- data/spec/rails/localization_system_spec.rb +38 -0
- data/spec/rails/production_mode_system_spec.rb +13 -0
- data/spec/rails/rendering_context_system_spec.rb +64 -0
- data/spec/rails/rendering_system_spec.rb +158 -0
- data/spec/rails/rules_system_spec.rb +23 -0
- data/spec/rails/static_method_system_spec.rb +12 -0
- data/spec/rails/templates/base/app/controllers/application_controller.rb +15 -0
- data/spec/rails/templates/base/app/controllers/working_controller.rb +5 -0
- data/spec/rails/templates/base/app/views/layouts/application.html.erb +11 -0
- data/spec/rails/templates/base/config/routes.rb +4 -0
- data/spec/rails/templates/base/config/secrets.yml +22 -0
- data/spec/rails/templates/basic_rails_system_spec/app/controllers/basic_rails_system_spec_controller.rb +8 -0
- data/spec/rails/templates/basic_rails_system_spec/app/views/basic_rails_system_spec/trivial_widget.rb +5 -0
- data/spec/rails/templates/capture_system_spec/app/controllers/capture_system_spec_controller.rb +37 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/_some_erb_partial.html.erb +1 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/another_widget.rb +7 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_erb_from_widget.rb +11 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_widget_from_erb.html.erb +9 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_widget_from_widget.rb +17 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/some_widget.rb +5 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_content_for.rb +19 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_layout_needing_content_yield_with_erb.html.erb +13 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_provide.rb +13 -0
- data/spec/rails/templates/capture_system_spec/app/views/layouts/erb_layout_needing_content.html.erb +15 -0
- data/spec/rails/templates/capture_system_spec/app/views/layouts/widget_layout_needing_content_content_for.rb +23 -0
- data/spec/rails/templates/capture_system_spec/app/views/layouts/widget_layout_needing_content_yield.rb +23 -0
- data/spec/rails/templates/class_loading_system_spec/app/controllers/class_loading_system_spec_controller.rb +74 -0
- data/spec/rails/templates/class_loading_system_spec/app/models/views/app_models_helper.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/app/models/views/models_widget.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/autoload_namespace/autoload_widget.rb +11 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_loaded_underscore_widget.rb +11 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_underscore_view.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_underscore_widget.rb +11 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/app_models.rb +6 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/autoload_one_widget_from_another.rb +7 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/class_should_not_load.rb +9 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/lib_views.rb +8 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/use_lib_widget_from_view_widget.rb +9 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/use_models_widget_from_view_widget.rb +7 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/some_namespace/some_other_namespace/.git_keep +0 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/sub_widget.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/lib/arbitrary_name/some_widget.rb +7 -0
- data/spec/rails/templates/class_loading_system_spec/lib/views/class_loading_system_spec/lib_views_helper.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/lib/views/class_loading_system_spec/widget_defined_outside_app_views.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/lib/views/lib_widget.rb +5 -0
- data/spec/rails/templates/complex_helpers_system_spec/app/controllers/complex_helpers_system_spec_controller.rb +14 -0
- data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/cache_test.rb +12 -0
- data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/fields_for_test.rb +14 -0
- data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/form_for_test.rb +14 -0
- data/spec/rails/templates/complex_helpers_system_spec/config/environments/development.rb +31 -0
- data/spec/rails/templates/data_passing_system_spec/app/controllers/data_passing_system_spec_controller.rb +101 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_erb_to_parallel_widget_handoff_erb.html.erb +3 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_implicit_erb_to_widget_handoff_erb.html.erb +3 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_implicit_variable_write_erb.html.erb +1 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_widget_to_parallel_erb_handoff_erb.html.erb +1 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_copied_variables.html.erb +1 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_to_parallel_widget_handoff.html.erb +2 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_to_parallel_widget_handoff_widget.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/explicit_controller_variable_read.rb +6 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/extra_variables.rb +23 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/extra_variables_requested.rb +24 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_erb_to_widget_handoff.html.erb +2 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_erb_to_widget_handoff_widget.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance.rb +6 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_child_one.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_child_two.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_parent.rb +3 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inner.rb +8 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_read.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_read_inner.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_write.html.erb +2 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_write_widget.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_child.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_partial.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_partial_child.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_data_widget.rb +8 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_locals_and_controller_variables_widget.rb +9 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_locals_widget.rb +8 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/variables_to_layout.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_copied_variables.rb +9 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_to_parallel_erb_handoff.html.erb +2 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_to_parallel_erb_handoff_widget.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/layouts/data_layout.rb +14 -0
- data/spec/rails/templates/default_layout_system_spec/app/controllers/default_layout_system_spec_controller.rb +9 -0
- data/spec/rails/templates/default_layout_system_spec/app/views/default_layout_system_spec/erb_with_widget_default_layout.html.erb +1 -0
- data/spec/rails/templates/default_layout_system_spec/app/views/default_layout_system_spec/widget_with_widget_default_layout.rb +5 -0
- data/spec/rails/templates/default_layout_system_spec/app/views/layouts/application.rb +12 -0
- data/spec/rails/templates/development_mode_system_spec/app/controllers/development_mode_system_spec_controller.rb +9 -0
- data/spec/rails/templates/development_mode_system_spec/app/views/development_mode_system_spec/reload_widget.rb +7 -0
- data/spec/rails/templates/development_mode_system_spec/app/views/development_mode_system_spec/sample_output.rb +9 -0
- data/spec/rails/templates/erb_integration_system_spec/app/controllers/erb_integration_system_spec_controller.rb +10 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_erb_partial_from_widget_partial.html.erb +1 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_fortitude_partial_with_underscore_partial.rb +5 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_prefers_erb_partial_partial.html.erb +1 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_partial_from_widget.rb +7 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_to_widget_with_render_partial.html.erb +3 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_to_widget_with_render_partial_widget.rb +5 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/fortitude_partial_with_underscore.html.erb +3 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/prefers_erb_partial.html.erb +3 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/prefers_erb_partial_partial.rb +5 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/app/controllers/helpers_include_all_off_system_spec_controller.rb +13 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/app/helpers/application_helper.rb +5 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/app/helpers/some_helper.rb +5 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/app/views/helpers_include_all_off_system_spec/include_all_off.rb +23 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/config/application.rb +28 -0
- data/spec/rails/templates/helpers_system_spec/app/controllers/helpers_system_spec_controller.rb +86 -0
- data/spec/rails/templates/helpers_system_spec/app/helpers/some_helper.rb +21 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_disabled.rb +37 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance.rb +6 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_child_one.rb +34 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_child_two.rb +36 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_parent.rb +4 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/basic_helpers.rb +13 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/block_helpers.rb +7 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_outputting_helpers.rb +13 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_outputting_to_returning.rb +8 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_returning_to_outputting.rb +10 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/controller_helper_method.rb +5 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/controller_helper_module.rb +5 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helper_outputs.rb +6 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helpers_basic.rb +5 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helpers_with_a_block.rb +6 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_outputting_to_returning.rb +7 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_returning_to_outputting.rb +10 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helper_settings_inheritance.rb +10 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helper_settings_inheritance_parent.rb +4 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helpers_that_output_when_refined.rb +9 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/private_helper_erb.html.erb +1 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/private_helper_fortitude.rb +5 -0
- data/spec/rails/templates/helpers_system_spec/lib/some_stuff.rb +5 -0
- data/spec/rails/templates/helpers_unrefined_system_spec/app/controllers/helpers_unrefined_system_spec_controller.rb +7 -0
- data/spec/rails/templates/helpers_unrefined_system_spec/app/views/helpers_unrefined_system_spec/helpers_that_output_when_refined.rb +9 -0
- data/spec/rails/templates/helpers_unrefined_system_spec/config/environments/production.rb +31 -0
- data/spec/rails/templates/layouts_system_spec/app/controllers/layouts_system_spec_controller.rb +31 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts/alternate.html.erb +11 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts/application.html.erb +26 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts/explicit_yield.rb +12 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts/widget_layout.rb +22 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/erb_inside_widget_layout.html.erb +8 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/the_render_widget.rb +5 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/widget_inside_erb_layout.rb +8 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/widget_inside_widget_layout.rb +8 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/yield_from_widget_explicitly.rb +5 -0
- data/spec/rails/templates/localization_system_spec/app/controllers/localization_system_spec_controller.rb +31 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/content_method.rb +13 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/dot_notation.rb +5 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/explicit_html.rb +13 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/i18n_t.rb +5 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/native_support.rb +7 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/readjust_base.rb +7 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/t.rb +5 -0
- data/spec/rails/templates/localization_system_spec/config/locales/en.yml +21 -0
- data/spec/rails/templates/localization_system_spec/config/locales/fr.yml +14 -0
- data/spec/rails/templates/localization_system_spec/config/locales/pt.yml +2 -0
- data/spec/rails/templates/production_mode_system_spec/app/controllers/production_mode_system_spec_controller.rb +5 -0
- data/spec/rails/templates/production_mode_system_spec/app/views/production_mode_system_spec/sample_output.rb +9 -0
- data/spec/rails/templates/rendering_context_system_spec/app/controllers/rendering_context_system_spec_controller.rb +72 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_start_end_widget_through_partials_partial.html.erb +1 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_uses_direct_context_for_all_widgets_partial.html.erb +1 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_uses_specified_context_through_nesting_partial.html.erb +2 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/render_widget.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_basic.rb +12 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_basic_inner.rb +7 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_through_partials.rb +16 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_through_partials_partial_widget.rb +7 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_for_all_widgets.rb +7 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_for_all_widgets_widget.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_in_view.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_partials.html.erb +3 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_partials_partial.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_view.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_through_nesting.rb +6 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_through_nesting_inner_partial.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/lib/simple_rc.rb +17 -0
- data/spec/rails/templates/rendering_system_spec/app/controllers/rendering_system_spec_controller.rb +111 -0
- data/spec/rails/templates/rendering_system_spec/app/views/layouts/application.html.erb +19 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/_layout_for_partial.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/_the_partial.html.erb +1 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/partial_with_layout.rb +5 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_collection.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_collection_as.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_file_from_widget.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_html_safe_strings.rb +16 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_inline_from_widget.rb +11 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_object.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_from_widget.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_with_layout.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_with_widget_layout.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_template_from_widget.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_text_from_widget.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/stream_widget.rb +13 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/trivial_widget.rb +5 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/widget_layout_for_partial.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/widget_with_name.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/word.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/widget_to_render.rb +7 -0
- data/spec/rails/templates/rules_system_spec/app/controllers/rules_system_spec_controller.rb +22 -0
- data/spec/rails/templates/rules_system_spec/app/views/layouts/fortitude_layout_with_p.rb +19 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/_intervening_partial_erb_partial.html.erb +1 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/intervening_partial.rb +9 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/intervening_partial_fortitude_partial.rb +9 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_partial.html.erb +3 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_partial_partial.rb +9 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_view.rb +9 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag.rb +11 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag_in_partial.html.erb +3 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag_in_partial_partial.rb +11 -0
- data/spec/rails/templates/static_method_system_spec/app/controllers/static_method_system_spec_controller.rb +15 -0
- data/spec/rails/templates/static_method_system_spec/app/helpers/some_helper.rb +10 -0
- data/spec/rails/templates/static_method_system_spec/app/views/static_method_system_spec/allows_helper_access.rb +8 -0
- data/spec/rails/templates/static_method_system_spec/app/views/static_method_system_spec/localization.rb +7 -0
- data/spec/rails/templates/static_method_system_spec/config/locales/en.yml +4 -0
- data/spec/rails/templates/static_method_system_spec/config/locales/fr.yml +4 -0
- data/spec/system/around_content_system_spec.rb +399 -0
- data/spec/system/assigns_system_spec.rb +316 -0
- data/spec/system/attribute_rules_system_spec.rb +227 -0
- data/spec/system/basic_system_spec.rb +9 -0
- data/spec/system/content_inheritance_system_spec.rb +13 -0
- data/spec/system/convenience_methods_system_spec.rb +30 -0
- data/spec/system/doctypes_system_spec.rb +228 -0
- data/spec/system/erector_compatibility_system_spec.rb +84 -0
- data/spec/system/escaping_system_spec.rb +43 -0
- data/spec/system/formatting_system_spec.rb +63 -0
- data/spec/system/helpers_system_spec.rb +235 -0
- data/spec/system/id_uniqueness_system_spec.rb +205 -0
- data/spec/system/inline_system_spec.rb +58 -0
- data/spec/system/localization_system_spec.rb +94 -0
- data/spec/system/method_precedence_system_spec.rb +48 -0
- data/spec/system/needs_system_spec.rb +381 -0
- data/spec/system/other_outputters_system_spec.rb +117 -0
- data/spec/system/rails_not_available_spec.rb +11 -0
- data/spec/system/rebuild_notifications_system_spec.rb +208 -0
- data/spec/system/rendering_context_system_spec.rb +83 -0
- data/spec/system/setting_inheritance_system_spec.rb +585 -0
- data/spec/system/shared_variable_system_spec.rb +120 -0
- data/spec/system/start_end_comments_system_spec.rb +363 -0
- data/spec/system/static_method_system_spec.rb +348 -0
- data/spec/system/tag_rendering_system_spec.rb +260 -0
- data/spec/system/tag_return_value_system_spec.rb +41 -0
- data/spec/system/tag_rules_system_spec.rb +196 -0
- data/spec/system/tag_updating_system_spec.rb +171 -0
- data/spec/system/tilt_system_spec.rb +382 -0
- data/spec/system/unparsed_data_system_spec.rb +16 -0
- data/spec/system/void_tags_system_spec.rb +90 -0
- data/spec/system/widget_return_values_system_spec.rb +107 -0
- metadata +759 -0
@@ -0,0 +1,117 @@
|
|
1
|
+
describe "Fortitude other outputting methods", :type => :system do
|
2
|
+
def r(&block)
|
3
|
+
render(widget_class_with_content(&block))
|
4
|
+
end
|
5
|
+
|
6
|
+
def should_render_to(value, &block)
|
7
|
+
expect(r(&block)).to eq(value)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "comments" do
|
11
|
+
it "should render a simple comment" do
|
12
|
+
should_render_to("<!-- foo -->") { comment "foo" }
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should escape anything potentially comment-ending in a comment" do
|
16
|
+
[ "fo --> oo", "fo -- oo", "fo --", "--", "-----", "---", " -- ", "-- ", " --", "- -",
|
17
|
+
">", " > ", ">>", "-->" ].each do |string|
|
18
|
+
text = render(widget_class_with_content { comment string })
|
19
|
+
if text =~ /^<!--(.*)-->$/
|
20
|
+
contents = $1
|
21
|
+
else
|
22
|
+
raise "Not a comment?!? #{text.inspect}"
|
23
|
+
end
|
24
|
+
|
25
|
+
# From http://www.w3.org/TR/html5/syntax.html#comments:
|
26
|
+
#
|
27
|
+
# Comments must start with the four character sequence U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK,
|
28
|
+
# U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS (<!--). Following this sequence, the comment may have text,
|
29
|
+
# with the additional restriction that the text must not start with a single ">" (U+003E) character,
|
30
|
+
# nor start with a U+002D HYPHEN-MINUS character (-) followed by a ">" (U+003E) character, nor contain
|
31
|
+
# two consecutive U+002D HYPHEN-MINUS characters (--), nor end with a U+002D HYPHEN-MINUS character (-).
|
32
|
+
# Finally, the comment must be ended by the three character sequence U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS,
|
33
|
+
# U+003E GREATER-THAN SIGN (-->).
|
34
|
+
expect(contents).not_to match(/\-\-/)
|
35
|
+
expect(contents).not_to match(/^\s*>/)
|
36
|
+
expect(contents).not_to match(/^\s*\->/)
|
37
|
+
expect(contents).not_to match(/>$/)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should not escape standard HTML escape characters inside a comment" do
|
42
|
+
expect(render(widget_class_with_content { comment 'mind your "p"s & "q"s' })).to eq('<!-- mind your "p"s & "q"s -->')
|
43
|
+
expect(render(widget_class_with_content { comment 'is 3 < 4, or is 4 > 3?' })).to eq('<!-- is 3 < 4, or is 4 > 3? -->')
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should not allow passing a block" do
|
47
|
+
expect { render { comment { text "hi" } } }.to raise_error(ArgumentError)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should put comments on their own lines if we're formatting output, and indent them properly" do
|
51
|
+
wc = widget_class do
|
52
|
+
format_output true
|
53
|
+
|
54
|
+
def content
|
55
|
+
div do
|
56
|
+
text "this is really cool"
|
57
|
+
comment "isn't it?"
|
58
|
+
text "man?"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
expect(render(wc)).to eq(%{<div>
|
64
|
+
this is really cool
|
65
|
+
<!-- isn't it? -->
|
66
|
+
man?
|
67
|
+
</div>})
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "cdata" do
|
72
|
+
it "should output data inside CDATA" do
|
73
|
+
wc = widget_class_with_content { cdata "hi there" }
|
74
|
+
expect(render(wc)).to eq(%{<![CDATA[hi there]]>})
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should properly split up a CDATA section if necessary" do
|
78
|
+
wc = widget_class_with_content { cdata "this contains a ]]> cdata end in it" }
|
79
|
+
expect(render(wc)).to eq(%{<![CDATA[this contains a ]]]]><![CDATA[> cdata end in it]]>})
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should properly split up a CDATA section into several pieces if necessary" do
|
83
|
+
wc = widget_class_with_content { cdata "this contains a ]]> cdata end in it and ]]> again" }
|
84
|
+
expect(render(wc)).to eq(%{<![CDATA[this contains a ]]]]><![CDATA[> cdata end in it and ]]]]><![CDATA[> again]]>})
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should not indent CDATA contents or ending, even if we're formatting output" do
|
88
|
+
wc = widget_class do
|
89
|
+
format_output true
|
90
|
+
|
91
|
+
def content
|
92
|
+
div do
|
93
|
+
div do
|
94
|
+
cdata %{hi
|
95
|
+
there
|
96
|
+
man}
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
expect(render(wc)).to eq(%{<div>
|
103
|
+
<div>
|
104
|
+
<![CDATA[hi
|
105
|
+
there
|
106
|
+
man]]>
|
107
|
+
</div>
|
108
|
+
</div>})
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe "doctype instance method" do
|
113
|
+
it "should output a doctype with any string if asked" do
|
114
|
+
should_render_to("<!DOCTYPE foobar>") { doctype 'foobar' }
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
describe "Fortitude spec environment" do
|
2
|
+
# This may seem like a weird spec, but we REALLY don't want to be running Fortitude's built-in specs with Rails
|
3
|
+
# available -- because we want to make really sure Fortitude doesn't end up with any kind of Rails dependency
|
4
|
+
# in it. So we added this spec to make sure the specs fail if Rails somehow *is* available.
|
5
|
+
#
|
6
|
+
# Fortitude has lots and lots of Rails-specific tests, but those run in a separate process with a separate Gemfile,
|
7
|
+
# and thus don't need Rails available at the overall Fortitude level.
|
8
|
+
it "should not have Rails available" do
|
9
|
+
expect { ::Rails }.to raise_error(NameError, /Rails/i)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,208 @@
|
|
1
|
+
describe "Fortitude rebuilding notifications", :type => :system do
|
2
|
+
before :each do
|
3
|
+
@notifications = [ ]
|
4
|
+
n = @notifications
|
5
|
+
ActiveSupport::Notifications.subscribe("fortitude.rebuilding") do |*args|
|
6
|
+
n << args
|
7
|
+
end
|
8
|
+
|
9
|
+
@wc = widget_class
|
10
|
+
end
|
11
|
+
|
12
|
+
def expect_notification(expected_payload)
|
13
|
+
expected_payload = { :class => @wc, :originating_class => @wc }.merge(expected_payload)
|
14
|
+
notification = @notifications.detect do |(name, start, finish, id, payload)|
|
15
|
+
payload == expected_payload
|
16
|
+
end
|
17
|
+
raise "Can't find notification with payload #{expected_payload.inspect}; have: #{@notifications.inspect}" unless notification
|
18
|
+
@notifications.delete(notification)
|
19
|
+
end
|
20
|
+
|
21
|
+
def expect_no_more_notifications!(what = nil)
|
22
|
+
remaining = @notifications
|
23
|
+
remaining = remaining.select { |n| n[4][:what] == what } if what
|
24
|
+
|
25
|
+
if remaining.length > 0
|
26
|
+
raise "Had more notifications that we didn't expect: #{remaining.inspect}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "text methods" do
|
31
|
+
it "should fire a notification when rebuilding because format_output has changed" do
|
32
|
+
@wc.format_output true
|
33
|
+
expect_notification(:what => :text_methods, :why => :format_output_changed)
|
34
|
+
expect_no_more_notifications!(:text_methods)
|
35
|
+
|
36
|
+
@wc.format_output false
|
37
|
+
expect_notification(:what => :text_methods, :why => :format_output_changed)
|
38
|
+
expect_no_more_notifications!(:text_methods)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "needs" do
|
43
|
+
it "should fire a notification when rebuilding because a need was declared" do
|
44
|
+
@wc.needs :foo
|
45
|
+
expect_notification(:what => :needs, :why => :need_declared)
|
46
|
+
expect_no_more_notifications!(:needs)
|
47
|
+
|
48
|
+
@wc.needs :bar => :baz
|
49
|
+
expect_notification(:what => :needs, :why => :need_declared)
|
50
|
+
expect_no_more_notifications!(:needs)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should fire a notification when rebuilding because extra_assigns was changed" do
|
54
|
+
@wc.extra_assigns :use
|
55
|
+
expect_notification(:what => :needs, :why => :extra_assigns_changed)
|
56
|
+
expect_no_more_notifications!(:needs)
|
57
|
+
|
58
|
+
@wc.extra_assigns :error
|
59
|
+
expect_notification(:what => :needs, :why => :extra_assigns_changed)
|
60
|
+
expect_no_more_notifications!(:needs)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should fire a notification when rebuilding because use_instance_variables_for_assigns was changed" do
|
64
|
+
@wc.use_instance_variables_for_assigns true
|
65
|
+
expect_notification(:what => :needs, :why => :use_instance_variables_for_assigns_changed)
|
66
|
+
expect_no_more_notifications!(:needs)
|
67
|
+
|
68
|
+
@wc.use_instance_variables_for_assigns false
|
69
|
+
expect_notification(:what => :needs, :why => :use_instance_variables_for_assigns_changed)
|
70
|
+
expect_no_more_notifications!(:needs)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "run_content" do
|
75
|
+
it "should fire a notification when rebuilding because an around_content filter was added" do
|
76
|
+
@wc.around_content :around1
|
77
|
+
expect_notification(:what => :run_content, :why => :around_content_added)
|
78
|
+
expect_no_more_notifications!(:run_content)
|
79
|
+
|
80
|
+
@wc.around_content :around2
|
81
|
+
expect_notification(:what => :run_content, :why => :around_content_added)
|
82
|
+
expect_no_more_notifications!(:run_content)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should fire a notification when rebuilding because an around_content filter was removed" do
|
86
|
+
@wc.around_content :around1
|
87
|
+
expect_notification(:what => :run_content, :why => :around_content_added)
|
88
|
+
expect_no_more_notifications!(:run_content)
|
89
|
+
|
90
|
+
@wc.remove_around_content :around1
|
91
|
+
expect_notification(:what => :run_content, :why => :around_content_removed)
|
92
|
+
expect_no_more_notifications!(:run_content)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should fire a notification when rebuilding because a localized content method was added" do
|
96
|
+
@wc.class_eval do
|
97
|
+
def localized_content_en
|
98
|
+
text "foo"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
expect_notification(:what => :run_content, :why => :localized_methods_presence_changed)
|
102
|
+
expect_no_more_notifications!(:run_content)
|
103
|
+
|
104
|
+
@wc.send(:remove_method, :localized_content_en)
|
105
|
+
expect_notification(:what => :run_content, :why => :localized_methods_presence_changed)
|
106
|
+
expect_no_more_notifications!(:run_content)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "tag_methods" do
|
111
|
+
it "should fire a notification when rebuilding because a tag was added" do
|
112
|
+
@wc.tag :foo
|
113
|
+
expect_notification(:what => :tag_methods, :why => :tags_declared)
|
114
|
+
expect_no_more_notifications!(:tag_methods)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should fire a notification when rebuilding because format_output has changed" do
|
118
|
+
@wc.format_output true
|
119
|
+
expect_notification(:what => :tag_methods, :why => :format_output_changed)
|
120
|
+
expect_no_more_notifications!(:tag_methods)
|
121
|
+
|
122
|
+
@wc.format_output false
|
123
|
+
expect_notification(:what => :tag_methods, :why => :format_output_changed)
|
124
|
+
expect_no_more_notifications!(:tag_methods)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should fire a notification when rebuilding because enforce_element_nesting_rules has changed" do
|
128
|
+
@wc.enforce_element_nesting_rules true
|
129
|
+
expect_notification(:what => :tag_methods, :why => :enforce_element_nesting_rules_changed)
|
130
|
+
expect_no_more_notifications!(:tag_methods)
|
131
|
+
|
132
|
+
@wc.enforce_element_nesting_rules false
|
133
|
+
expect_notification(:what => :tag_methods, :why => :enforce_element_nesting_rules_changed)
|
134
|
+
expect_no_more_notifications!(:tag_methods)
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should fire a notification when rebuilding because enforce_attribute_rules has changed" do
|
138
|
+
@wc.enforce_attribute_rules true
|
139
|
+
expect_notification(:what => :tag_methods, :why => :enforce_attribute_rules_changed)
|
140
|
+
expect_no_more_notifications!(:tag_methods)
|
141
|
+
|
142
|
+
@wc.enforce_attribute_rules false
|
143
|
+
expect_notification(:what => :tag_methods, :why => :enforce_attribute_rules_changed)
|
144
|
+
expect_no_more_notifications!(:tag_methods)
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should fire a notification when rebuilding because enforce_id_uniqueness has changed" do
|
148
|
+
@wc.enforce_id_uniqueness true
|
149
|
+
expect_notification(:what => :tag_methods, :why => :enforce_id_uniqueness_changed)
|
150
|
+
expect_no_more_notifications!(:tag_methods)
|
151
|
+
|
152
|
+
@wc.enforce_id_uniqueness false
|
153
|
+
expect_notification(:what => :tag_methods, :why => :enforce_id_uniqueness_changed)
|
154
|
+
expect_no_more_notifications!(:tag_methods)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe "with a subclass" do
|
159
|
+
before :each do
|
160
|
+
@wc = widget_class
|
161
|
+
@wc_subclass = widget_class(:superclass => @wc)
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should fire with the right class for text methods" do
|
165
|
+
@wc_subclass.format_output true
|
166
|
+
expect_notification(:what => :text_methods, :why => :format_output_changed, :class => @wc_subclass, :originating_class => @wc_subclass)
|
167
|
+
expect_no_more_notifications!(:text_methods)
|
168
|
+
|
169
|
+
@wc.format_output true
|
170
|
+
expect_notification(:what => :text_methods, :why => :format_output_changed, :class => @wc, :originating_class => @wc)
|
171
|
+
expect_notification(:what => :text_methods, :why => :format_output_changed, :class => @wc_subclass, :originating_class => @wc)
|
172
|
+
expect_no_more_notifications!(:text_methods)
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should fire with the right class for needs" do
|
176
|
+
@wc_subclass.extra_assigns :use
|
177
|
+
expect_notification(:what => :needs, :why => :extra_assigns_changed, :class => @wc_subclass, :originating_class => @wc_subclass)
|
178
|
+
expect_no_more_notifications!(:needs)
|
179
|
+
|
180
|
+
@wc.extra_assigns :error
|
181
|
+
expect_notification(:what => :needs, :why => :extra_assigns_changed, :class => @wc, :originating_class => @wc)
|
182
|
+
expect_notification(:what => :needs, :why => :extra_assigns_changed, :class => @wc_subclass, :originating_class => @wc)
|
183
|
+
expect_no_more_notifications!(:needs)
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should fire with the right class for run_content" do
|
187
|
+
@wc_subclass.around_content :around1
|
188
|
+
expect_notification(:what => :run_content, :why => :around_content_added, :class => @wc_subclass, :originating_class => @wc_subclass)
|
189
|
+
expect_no_more_notifications!(:run_content)
|
190
|
+
|
191
|
+
@wc.around_content :around2
|
192
|
+
expect_notification(:what => :run_content, :why => :around_content_added, :class => @wc, :originating_class => @wc)
|
193
|
+
expect_notification(:what => :run_content, :why => :around_content_added, :class => @wc_subclass, :originating_class => @wc)
|
194
|
+
expect_no_more_notifications!(:run_content)
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should fire with the right class for tag_methods" do
|
198
|
+
@wc_subclass.format_output true
|
199
|
+
expect_notification(:what => :tag_methods, :why => :format_output_changed, :class => @wc_subclass, :originating_class => @wc_subclass)
|
200
|
+
expect_no_more_notifications!(:tag_methods)
|
201
|
+
|
202
|
+
@wc.format_output true
|
203
|
+
expect_notification(:what => :tag_methods, :why => :format_output_changed, :class => @wc, :originating_class => @wc)
|
204
|
+
expect_notification(:what => :tag_methods, :why => :format_output_changed, :class => @wc_subclass, :originating_class => @wc)
|
205
|
+
expect_no_more_notifications!(:tag_methods)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
describe "Fortitude rendering context interactions", :type => :system do
|
2
|
+
class RcSubclass < Fortitude::RenderingContext
|
3
|
+
attr_reader :widget_calls
|
4
|
+
|
5
|
+
def initialize(*args)
|
6
|
+
super(*args)
|
7
|
+
@widget_calls = [ ]
|
8
|
+
end
|
9
|
+
|
10
|
+
def start_widget!(widget)
|
11
|
+
@widget_calls << [ :start, widget ]
|
12
|
+
end
|
13
|
+
|
14
|
+
def end_widget!(widget)
|
15
|
+
@widget_calls << [ :end, widget ]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def render(widget_or_class, options = { })
|
20
|
+
@rc = RcSubclass.new({ })
|
21
|
+
super(widget_or_class, options.merge(:rendering_context => @rc))
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should call start_widget! and end_widget! on the context when starting and ending a simple widget" do
|
25
|
+
wc = widget_class_with_content { p "foo" }
|
26
|
+
instance = wc.new
|
27
|
+
expect(render(instance)).to eq("<p>foo</p>")
|
28
|
+
expect(@rc.widget_calls).to eq([ [ :start, instance ], [ :end, instance ] ])
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should call start_widget! and end_widget! in the right order with a deeply-nested example" do
|
32
|
+
bottom = widget_class do
|
33
|
+
needs :value
|
34
|
+
def content
|
35
|
+
text "bottom-#{value}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
mid = widget_class do
|
40
|
+
attr_accessor :bottom1, :bottom2
|
41
|
+
def content
|
42
|
+
widget bottom1 if bottom1
|
43
|
+
widget bottom2 if bottom2
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
top = widget_class do
|
48
|
+
attr_accessor :mid1, :mid2
|
49
|
+
def content
|
50
|
+
widget mid1
|
51
|
+
widget mid2
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
bottom_a1 = bottom.new(:value => 12345)
|
56
|
+
bottom_a2 = bottom.new(:value => 23456)
|
57
|
+
bottom_b2 = bottom.new(:value => 34567)
|
58
|
+
mid_a = mid.new
|
59
|
+
mid_a.bottom1 = bottom_a1
|
60
|
+
mid_a.bottom2 = bottom_a2
|
61
|
+
mid_b = mid.new
|
62
|
+
mid_b.bottom2 = bottom_b2
|
63
|
+
top = top.new
|
64
|
+
top.mid1 = mid_a
|
65
|
+
top.mid2 = mid_b
|
66
|
+
|
67
|
+
expect(render(top)).to eq("bottom-12345bottom-23456bottom-34567")
|
68
|
+
expect(@rc.widget_calls).to eq([
|
69
|
+
[ :start, top ],
|
70
|
+
[ :start, mid_a ],
|
71
|
+
[ :start, bottom_a1 ],
|
72
|
+
[ :end, bottom_a1 ],
|
73
|
+
[ :start, bottom_a2 ],
|
74
|
+
[ :end, bottom_a2 ],
|
75
|
+
[ :end, mid_a ],
|
76
|
+
[ :start, mid_b ],
|
77
|
+
[ :start, bottom_b2 ],
|
78
|
+
[ :end, bottom_b2 ],
|
79
|
+
[ :end, mid_b ],
|
80
|
+
[ :end, top ]
|
81
|
+
])
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,585 @@
|
|
1
|
+
describe "Fortitude setting inheritance", :type => :system do
|
2
|
+
# The settings we test here:
|
3
|
+
# - extra_assigns
|
4
|
+
# - automatic_helper_access
|
5
|
+
# - implicit_shared_variable_access
|
6
|
+
# - use_instance_variables_for_assigns
|
7
|
+
# - format_output
|
8
|
+
# - enforce_element_nesting_rules
|
9
|
+
# - enforce_attribute_rules
|
10
|
+
# - start_and_end_comments
|
11
|
+
# - translation_base
|
12
|
+
# - enforce_id_uniqueness
|
13
|
+
# - debug
|
14
|
+
#
|
15
|
+
# needs are covered by the needs_system_spec, and around_content is covered by the around_content_system_spec;
|
16
|
+
# these are not tested here because their semantics are quite a bit more complex than the settings here.
|
17
|
+
|
18
|
+
def translation_base_should_be(expected_result, *klasses)
|
19
|
+
klasses.each do |klass|
|
20
|
+
expect(klass.translation_base).to eq(expected_result)
|
21
|
+
send("translation_base_should_be_for_class", expected_result, klass)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def translation_base_should_be_for_class(expected_result, klass)
|
26
|
+
expect(klass.translation_base).to eq(expected_result)
|
27
|
+
ho_class = Class.new do
|
28
|
+
def t(x)
|
29
|
+
"translation_for:#{x}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
ho = ho_class.new
|
33
|
+
|
34
|
+
rendering_context = rc(:helpers_object => ho)
|
35
|
+
expect(render(klass, :rendering_context => rendering_context)).to eq("translation: translation_for:#{expected_result}.foo.bar.baz")
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def enforce_id_uniqueness_should_be(expected_result, *klasses)
|
40
|
+
klasses.each do |klass|
|
41
|
+
expect(klass.enforce_id_uniqueness).to eq(expected_result)
|
42
|
+
send("enforce_id_uniqueness_should_be_#{expected_result}", klass)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def enforce_id_uniqueness_should_be_true(klass)
|
47
|
+
expect { render(klass) }.to raise_error(Fortitude::Errors::DuplicateId)
|
48
|
+
end
|
49
|
+
|
50
|
+
def enforce_id_uniqueness_should_be_false(klass)
|
51
|
+
expect(render(klass)).to eq('<p id="foo"></p><p id="foo"></p>')
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
def start_and_end_comments_should_be(expected_result, *klasses)
|
56
|
+
klasses.each do |klass|
|
57
|
+
expect(klass.start_and_end_comments).to eq(expected_result)
|
58
|
+
send("start_and_end_comments_should_be_#{expected_result}", klass)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def start_and_end_comments_should_be_true(klass)
|
63
|
+
result = render(klass)
|
64
|
+
if result =~ /^(.*BEGIN?)\s*\S+\s*(depth.*END)\s*\S+\s*(depth.*)$/i
|
65
|
+
expect($1).to eq("<!-- BEGIN")
|
66
|
+
expect($2).to eq("depth 0: :baz => (DEFAULT) \"default_baz\" --><p></p><!-- END")
|
67
|
+
expect($3).to eq("depth 0 -->")
|
68
|
+
else
|
69
|
+
raise "result does not match expected pattern: #{result.inspect}"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def start_and_end_comments_should_be_false(klass)
|
74
|
+
expect(render(klass)).to eq("<p></p>")
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
def debug_should_be(expected_result, *klasses)
|
79
|
+
klasses.each do |klass|
|
80
|
+
expect(klass.debug).to eq(expected_result)
|
81
|
+
send("debug_should_be_#{expected_result}", klass)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def debug_should_be_true(klass)
|
86
|
+
expect { render(klass) }.to raise_error(Fortitude::Errors::BlockPassedToNeedMethod)
|
87
|
+
end
|
88
|
+
|
89
|
+
def debug_should_be_false(klass)
|
90
|
+
expect(render(klass)).to eq("p is: abc")
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
def enforce_attribute_rules_should_be(expected_result, *klasses)
|
95
|
+
klasses.each do |klass|
|
96
|
+
expect(klass.enforce_attribute_rules).to eq(expected_result)
|
97
|
+
send("enforce_attribute_rules_should_be_#{expected_result}", klass)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def enforce_attribute_rules_should_be_true(klass)
|
102
|
+
expect { render(klass) }.to raise_error(Fortitude::Errors::InvalidElementAttributes)
|
103
|
+
end
|
104
|
+
|
105
|
+
def enforce_attribute_rules_should_be_false(klass)
|
106
|
+
expect(render(klass)).to eq("<p foo=\"bar\"></p>")
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
def close_void_tags_should_be(expected_result, *klasses)
|
111
|
+
klasses.each do |klass|
|
112
|
+
expect(klass.close_void_tags).to eq(expected_result)
|
113
|
+
send("close_void_tags_should_be_#{expected_result}", klass)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def close_void_tags_should_be_true(klass)
|
118
|
+
expect(render(klass)).to eq("<br/>")
|
119
|
+
end
|
120
|
+
|
121
|
+
def close_void_tags_should_be_false(klass)
|
122
|
+
expect(render(klass)).to eq("<br>")
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
def enforce_element_nesting_rules_should_be(expected_result, *klasses)
|
127
|
+
klasses.each do |klass|
|
128
|
+
expect(klass.enforce_element_nesting_rules).to eq(expected_result)
|
129
|
+
send("enforce_element_nesting_rules_should_be_#{expected_result}", klass)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def enforce_element_nesting_rules_should_be_true(klass)
|
134
|
+
expect { render(klass) }.to raise_error(Fortitude::Errors::InvalidElementNesting)
|
135
|
+
end
|
136
|
+
|
137
|
+
def enforce_element_nesting_rules_should_be_false(klass)
|
138
|
+
expect(render(klass)).to eq("<p><div></div></p>")
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
def format_output_should_be(expected_result, *klasses)
|
143
|
+
klasses.each do |klass|
|
144
|
+
expect(klass.format_output).to eq(expected_result)
|
145
|
+
send("format_output_should_be_#{expected_result}", klass)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def format_output_should_be_true(klass)
|
150
|
+
expect(render(klass)).to eq(%{<div>
|
151
|
+
<p>
|
152
|
+
<span class="foo"></span>
|
153
|
+
</p>
|
154
|
+
</div>})
|
155
|
+
end
|
156
|
+
|
157
|
+
def format_output_should_be_false(klass)
|
158
|
+
expect(render(klass)).to eq('<div><p><span class="foo"></span></p></div>')
|
159
|
+
end
|
160
|
+
|
161
|
+
|
162
|
+
def extra_assigns_should_be(expected_result, *klasses)
|
163
|
+
klasses.each do |klass|
|
164
|
+
expect(klass.extra_assigns).to eq(expected_result)
|
165
|
+
send("extra_assigns_should_be_#{expected_result}", klass)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
def extra_assigns_should_be_use(klass)
|
170
|
+
expect(render(klass.new(:foo => 'the_foo'))).to match(/foo: the_foo/)
|
171
|
+
end
|
172
|
+
|
173
|
+
def extra_assigns_should_be_ignore(klass)
|
174
|
+
expect(render(klass.new(:foo => 'the_foo'))).to match(/foo: NameError/)
|
175
|
+
end
|
176
|
+
|
177
|
+
def extra_assigns_should_be_error(klass)
|
178
|
+
expect { klass.new(:foo => 'the_foo') }.to raise_error(Fortitude::Errors::ExtraAssigns)
|
179
|
+
end
|
180
|
+
|
181
|
+
|
182
|
+
def automatic_helper_access_should_be(expected_result, *klasses)
|
183
|
+
klasses.each do |klass|
|
184
|
+
expect(klass.automatic_helper_access).to eq(expected_result)
|
185
|
+
send("automatic_helper_access_should_be_#{expected_result}", klass)
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
def rc_for_automatic_helper_access
|
190
|
+
@aha_helpers_class ||= Class.new do
|
191
|
+
def helper1
|
192
|
+
"this is helper1!"
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
rc(:helpers_object => @aha_helpers_class.new)
|
197
|
+
end
|
198
|
+
|
199
|
+
def automatic_helper_access_should_be_true(klass)
|
200
|
+
expect(render(klass.new, :rendering_context => rc_for_automatic_helper_access)).to match(/helper1: this is helper1!/)
|
201
|
+
end
|
202
|
+
|
203
|
+
def automatic_helper_access_should_be_false(klass)
|
204
|
+
expect(render(klass.new, :rendering_context => rc_for_automatic_helper_access)).to match(/helper1: NameError/)
|
205
|
+
end
|
206
|
+
|
207
|
+
|
208
|
+
def implicit_shared_variable_access_should_be(expected_result, *klasses)
|
209
|
+
klasses.each do |klass|
|
210
|
+
expect(klass.implicit_shared_variable_access).to eq(expected_result)
|
211
|
+
send("implicit_shared_variable_access_should_be_#{expected_result}", klass)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
def rc_for_implicit_shared_variable_access
|
216
|
+
@isva_obj = Object.new
|
217
|
+
@isva_obj.instance_variable_set("@bar", "this is bar!")
|
218
|
+
rc(:instance_variables_object => @isva_obj)
|
219
|
+
end
|
220
|
+
|
221
|
+
def implicit_shared_variable_access_should_be_true(klass)
|
222
|
+
expect(render(klass.new, :rendering_context => rc_for_implicit_shared_variable_access)).to match(/bar: "this is bar!"/)
|
223
|
+
end
|
224
|
+
|
225
|
+
def implicit_shared_variable_access_should_be_false(klass)
|
226
|
+
expect(render(klass.new, :rendering_context => rc_for_implicit_shared_variable_access)).to match(/bar: nil/)
|
227
|
+
end
|
228
|
+
|
229
|
+
|
230
|
+
def use_instance_variables_for_assigns_should_be(expected_result, *klasses)
|
231
|
+
klasses.each do |klass|
|
232
|
+
expect(klass.use_instance_variables_for_assigns).to eq(expected_result)
|
233
|
+
send("use_instance_variables_for_assigns_should_be_#{expected_result}", klass)
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
def use_instance_variables_for_assigns_should_be_true(klass)
|
238
|
+
expect(render(klass.new(:baz => 'some_baz'))).to match(/baz: "some_baz"/)
|
239
|
+
end
|
240
|
+
|
241
|
+
def use_instance_variables_for_assigns_should_be_false(klass)
|
242
|
+
expect(render(klass.new(:baz => 'some_baz'))).to match(/baz: nil/)
|
243
|
+
end
|
244
|
+
|
245
|
+
before :each do
|
246
|
+
@grandparent = widget_class do
|
247
|
+
needs :baz => 'default_baz'
|
248
|
+
|
249
|
+
def content
|
250
|
+
foo_value = begin
|
251
|
+
foo
|
252
|
+
rescue => e
|
253
|
+
e.class.name
|
254
|
+
end
|
255
|
+
|
256
|
+
text "foo: #{foo_value}\n"
|
257
|
+
|
258
|
+
helper1_value = begin
|
259
|
+
helper1
|
260
|
+
rescue => e
|
261
|
+
e.class.name
|
262
|
+
end
|
263
|
+
|
264
|
+
text "helper1: #{helper1_value}\n"
|
265
|
+
text "bar: #{@bar.inspect}\n"
|
266
|
+
text "baz: #{@baz.inspect}"
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
@parent1 = widget_class(:superclass => @grandparent)
|
271
|
+
@child11 = widget_class(:superclass => @parent1)
|
272
|
+
@child12 = widget_class(:superclass => @parent1)
|
273
|
+
|
274
|
+
@parent2 = widget_class(:superclass => @grandparent)
|
275
|
+
@child21 = widget_class(:superclass => @parent2)
|
276
|
+
@child22 = widget_class(:superclass => @parent2)
|
277
|
+
end
|
278
|
+
|
279
|
+
it "should properly inherit extra_assigns" do
|
280
|
+
extra_assigns_should_be(:ignore, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
281
|
+
|
282
|
+
@parent1.extra_assigns :use
|
283
|
+
extra_assigns_should_be(:ignore, @grandparent, @parent2, @child21, @child22)
|
284
|
+
extra_assigns_should_be(:use, @parent1, @child11, @child12)
|
285
|
+
|
286
|
+
@parent2.extra_assigns :error
|
287
|
+
extra_assigns_should_be(:ignore, @grandparent)
|
288
|
+
extra_assigns_should_be(:error, @parent2, @child21, @child22)
|
289
|
+
extra_assigns_should_be(:use, @parent1, @child11, @child12)
|
290
|
+
|
291
|
+
@grandparent.extra_assigns :use
|
292
|
+
extra_assigns_should_be(:error, @parent2, @child21, @child22)
|
293
|
+
extra_assigns_should_be(:use, @grandparent, @parent1, @child11, @child12)
|
294
|
+
|
295
|
+
@grandparent.extra_assigns :ignore
|
296
|
+
extra_assigns_should_be(:error, @parent2, @child21, @child22)
|
297
|
+
extra_assigns_should_be(:use, @parent1, @child11, @child12)
|
298
|
+
extra_assigns_should_be(:ignore, @grandparent)
|
299
|
+
|
300
|
+
@child22.extra_assigns :ignore
|
301
|
+
extra_assigns_should_be(:error, @parent2, @child21)
|
302
|
+
extra_assigns_should_be(:use, @parent1, @child11, @child12)
|
303
|
+
extra_assigns_should_be(:ignore, @grandparent, @child22)
|
304
|
+
end
|
305
|
+
|
306
|
+
it "should properly inherit automatic_helper_access" do
|
307
|
+
automatic_helper_access_should_be(true, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
308
|
+
|
309
|
+
@parent1.automatic_helper_access false
|
310
|
+
automatic_helper_access_should_be(true, @grandparent, @parent2, @child21, @child22)
|
311
|
+
automatic_helper_access_should_be(false, @parent1, @child11, @child12)
|
312
|
+
|
313
|
+
@parent2.automatic_helper_access true
|
314
|
+
automatic_helper_access_should_be(true, @grandparent, @parent2, @child21, @child22)
|
315
|
+
automatic_helper_access_should_be(false, @parent1, @child11, @child12)
|
316
|
+
|
317
|
+
@grandparent.automatic_helper_access false
|
318
|
+
automatic_helper_access_should_be(true, @parent2, @child21, @child22)
|
319
|
+
automatic_helper_access_should_be(false, @grandparent, @parent1, @child11, @child12)
|
320
|
+
|
321
|
+
@grandparent.automatic_helper_access true
|
322
|
+
automatic_helper_access_should_be(true, @grandparent, @parent2, @child21, @child22)
|
323
|
+
automatic_helper_access_should_be(false, @parent1, @child11, @child12)
|
324
|
+
end
|
325
|
+
|
326
|
+
it "should properly inherit close_void_tags" do
|
327
|
+
@grandparent.class_eval do
|
328
|
+
def content
|
329
|
+
br
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
close_void_tags_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
334
|
+
|
335
|
+
@parent1.close_void_tags true
|
336
|
+
close_void_tags_should_be(false, @grandparent, @parent2, @child21, @child22)
|
337
|
+
close_void_tags_should_be(true, @parent1, @child11, @child12)
|
338
|
+
|
339
|
+
@parent2.close_void_tags false
|
340
|
+
close_void_tags_should_be(false, @grandparent, @parent2, @child21, @child22)
|
341
|
+
close_void_tags_should_be(true, @parent1, @child11, @child12)
|
342
|
+
|
343
|
+
@grandparent.close_void_tags true
|
344
|
+
close_void_tags_should_be(false, @parent2, @child21, @child22)
|
345
|
+
close_void_tags_should_be(true, @grandparent, @parent1, @child11, @child12)
|
346
|
+
|
347
|
+
@grandparent.close_void_tags false
|
348
|
+
close_void_tags_should_be(false, @grandparent, @parent2, @child21, @child22)
|
349
|
+
close_void_tags_should_be(true, @parent1, @child11, @child12)
|
350
|
+
end
|
351
|
+
|
352
|
+
it "should properly inherit format_output" do
|
353
|
+
@grandparent.class_eval do
|
354
|
+
def content
|
355
|
+
div do
|
356
|
+
p do
|
357
|
+
span :class => 'foo'
|
358
|
+
end
|
359
|
+
end
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
format_output_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
364
|
+
|
365
|
+
@parent1.format_output true
|
366
|
+
format_output_should_be(false, @grandparent, @parent2, @child21, @child22)
|
367
|
+
format_output_should_be(true, @parent1, @child11, @child12)
|
368
|
+
|
369
|
+
@parent2.format_output false
|
370
|
+
format_output_should_be(false, @grandparent, @parent2, @child21, @child22)
|
371
|
+
format_output_should_be(true, @parent1, @child11, @child12)
|
372
|
+
|
373
|
+
@grandparent.format_output true
|
374
|
+
format_output_should_be(false, @parent2, @child21, @child22)
|
375
|
+
format_output_should_be(true, @grandparent, @parent1, @child11, @child12)
|
376
|
+
|
377
|
+
@grandparent.format_output false
|
378
|
+
format_output_should_be(false, @grandparent, @parent2, @child21, @child22)
|
379
|
+
format_output_should_be(true, @parent1, @child11, @child12)
|
380
|
+
end
|
381
|
+
|
382
|
+
it "should properly inherit enforce_element_nesting_rules" do
|
383
|
+
@grandparent.class_eval do
|
384
|
+
def content
|
385
|
+
p { div }
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
enforce_element_nesting_rules_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
390
|
+
|
391
|
+
@parent1.enforce_element_nesting_rules true
|
392
|
+
enforce_element_nesting_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
|
393
|
+
enforce_element_nesting_rules_should_be(true, @parent1, @child11, @child12)
|
394
|
+
|
395
|
+
@parent2.enforce_element_nesting_rules false
|
396
|
+
enforce_element_nesting_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
|
397
|
+
enforce_element_nesting_rules_should_be(true, @parent1, @child11, @child12)
|
398
|
+
|
399
|
+
@grandparent.enforce_element_nesting_rules true
|
400
|
+
enforce_element_nesting_rules_should_be(false, @parent2, @child21, @child22)
|
401
|
+
enforce_element_nesting_rules_should_be(true, @grandparent, @parent1, @child11, @child12)
|
402
|
+
|
403
|
+
@grandparent.enforce_element_nesting_rules false
|
404
|
+
enforce_element_nesting_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
|
405
|
+
enforce_element_nesting_rules_should_be(true, @parent1, @child11, @child12)
|
406
|
+
end
|
407
|
+
|
408
|
+
it "should properly inherit translation_base" do
|
409
|
+
@grandparent.class_eval do
|
410
|
+
def content
|
411
|
+
text "translation: #{t(".foo.bar.baz")}"
|
412
|
+
end
|
413
|
+
end
|
414
|
+
|
415
|
+
translation_base_should_be(nil, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
416
|
+
|
417
|
+
@parent1.translation_base "aaa.bbb"
|
418
|
+
translation_base_should_be(nil, @grandparent, @parent2, @child21, @child22)
|
419
|
+
translation_base_should_be("aaa.bbb", @parent1, @child11, @child12)
|
420
|
+
|
421
|
+
@child22.translation_base "ccc.ddd"
|
422
|
+
translation_base_should_be(nil, @grandparent, @parent2, @child21)
|
423
|
+
translation_base_should_be("aaa.bbb", @parent1, @child11, @child12)
|
424
|
+
translation_base_should_be("ccc.ddd", @child22)
|
425
|
+
|
426
|
+
@grandparent.translation_base "eee.fff"
|
427
|
+
translation_base_should_be("eee.fff", @grandparent, @parent2, @child21)
|
428
|
+
translation_base_should_be("aaa.bbb", @parent1, @child11, @child12)
|
429
|
+
translation_base_should_be("ccc.ddd", @child22)
|
430
|
+
|
431
|
+
@parent2.translation_base "ggg.hhh"
|
432
|
+
translation_base_should_be("eee.fff", @grandparent)
|
433
|
+
translation_base_should_be("ggg.hhh", @parent2, @child21)
|
434
|
+
translation_base_should_be("aaa.bbb", @parent1, @child11, @child12)
|
435
|
+
translation_base_should_be("ccc.ddd", @child22)
|
436
|
+
end
|
437
|
+
|
438
|
+
it "should properly inherit enforce_id_uniqueness" do
|
439
|
+
@grandparent.class_eval do
|
440
|
+
def content
|
441
|
+
p :id => 'foo'
|
442
|
+
p :id => 'foo'
|
443
|
+
end
|
444
|
+
end
|
445
|
+
|
446
|
+
enforce_id_uniqueness_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
447
|
+
|
448
|
+
@parent1.enforce_id_uniqueness true
|
449
|
+
enforce_id_uniqueness_should_be(false, @grandparent, @parent2, @child21, @child22)
|
450
|
+
enforce_id_uniqueness_should_be(true, @parent1, @child11, @child12)
|
451
|
+
|
452
|
+
@parent2.enforce_id_uniqueness false
|
453
|
+
enforce_id_uniqueness_should_be(false, @grandparent, @parent2, @child21, @child22)
|
454
|
+
enforce_id_uniqueness_should_be(true, @parent1, @child11, @child12)
|
455
|
+
|
456
|
+
@grandparent.enforce_id_uniqueness true
|
457
|
+
enforce_id_uniqueness_should_be(false, @parent2, @child21, @child22)
|
458
|
+
enforce_id_uniqueness_should_be(true, @grandparent, @parent1, @child11, @child12)
|
459
|
+
|
460
|
+
@grandparent.enforce_id_uniqueness false
|
461
|
+
enforce_id_uniqueness_should_be(false, @grandparent, @parent2, @child21, @child22)
|
462
|
+
enforce_id_uniqueness_should_be(true, @parent1, @child11, @child12)
|
463
|
+
end
|
464
|
+
|
465
|
+
it "should properly inherit start_and_end_comments" do
|
466
|
+
@grandparent.class_eval do
|
467
|
+
def content
|
468
|
+
p
|
469
|
+
end
|
470
|
+
end
|
471
|
+
|
472
|
+
start_and_end_comments_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
473
|
+
|
474
|
+
@parent1.start_and_end_comments true
|
475
|
+
start_and_end_comments_should_be(false, @grandparent, @parent2, @child21, @child22)
|
476
|
+
start_and_end_comments_should_be(true, @parent1, @child11, @child12)
|
477
|
+
|
478
|
+
@parent2.start_and_end_comments false
|
479
|
+
start_and_end_comments_should_be(false, @grandparent, @parent2, @child21, @child22)
|
480
|
+
start_and_end_comments_should_be(true, @parent1, @child11, @child12)
|
481
|
+
|
482
|
+
@grandparent.start_and_end_comments true
|
483
|
+
start_and_end_comments_should_be(false, @parent2, @child21, @child22)
|
484
|
+
start_and_end_comments_should_be(true, @grandparent, @parent1, @child11, @child12)
|
485
|
+
|
486
|
+
@grandparent.start_and_end_comments false
|
487
|
+
start_and_end_comments_should_be(false, @grandparent, @parent2, @child21, @child22)
|
488
|
+
start_and_end_comments_should_be(true, @parent1, @child11, @child12)
|
489
|
+
end
|
490
|
+
|
491
|
+
it "should properly inherit debug" do
|
492
|
+
@grandparent.class_eval do
|
493
|
+
needs :p => 'abc'
|
494
|
+
|
495
|
+
def content
|
496
|
+
p { text "hi" }
|
497
|
+
text "p is: #{p}"
|
498
|
+
end
|
499
|
+
end
|
500
|
+
|
501
|
+
debug_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
502
|
+
|
503
|
+
@parent1.debug true
|
504
|
+
debug_should_be(false, @grandparent, @parent2, @child21, @child22)
|
505
|
+
debug_should_be(true, @parent1, @child11, @child12)
|
506
|
+
|
507
|
+
@parent2.debug false
|
508
|
+
debug_should_be(false, @grandparent, @parent2, @child21, @child22)
|
509
|
+
debug_should_be(true, @parent1, @child11, @child12)
|
510
|
+
|
511
|
+
@grandparent.debug true
|
512
|
+
debug_should_be(false, @parent2, @child21, @child22)
|
513
|
+
debug_should_be(true, @grandparent, @parent1, @child11, @child12)
|
514
|
+
|
515
|
+
@grandparent.debug false
|
516
|
+
debug_should_be(false, @grandparent, @parent2, @child21, @child22)
|
517
|
+
debug_should_be(true, @parent1, @child11, @child12)
|
518
|
+
end
|
519
|
+
|
520
|
+
it "should properly inherit enforce_attribute_rules" do
|
521
|
+
@grandparent.class_eval do
|
522
|
+
def content
|
523
|
+
p :foo => 'bar'
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
527
|
+
enforce_attribute_rules_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
528
|
+
|
529
|
+
@parent1.enforce_attribute_rules true
|
530
|
+
enforce_attribute_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
|
531
|
+
enforce_attribute_rules_should_be(true, @parent1, @child11, @child12)
|
532
|
+
|
533
|
+
@parent2.enforce_attribute_rules false
|
534
|
+
enforce_attribute_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
|
535
|
+
enforce_attribute_rules_should_be(true, @parent1, @child11, @child12)
|
536
|
+
|
537
|
+
@grandparent.enforce_attribute_rules true
|
538
|
+
enforce_attribute_rules_should_be(false, @parent2, @child21, @child22)
|
539
|
+
enforce_attribute_rules_should_be(true, @grandparent, @parent1, @child11, @child12)
|
540
|
+
|
541
|
+
@grandparent.enforce_attribute_rules false
|
542
|
+
enforce_attribute_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
|
543
|
+
enforce_attribute_rules_should_be(true, @parent1, @child11, @child12)
|
544
|
+
end
|
545
|
+
|
546
|
+
it "should properly inherit implicit_shared_variable_access" do
|
547
|
+
implicit_shared_variable_access_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
548
|
+
|
549
|
+
@parent1.implicit_shared_variable_access true
|
550
|
+
implicit_shared_variable_access_should_be(false, @grandparent, @parent2, @child21, @child22)
|
551
|
+
implicit_shared_variable_access_should_be(true, @parent1, @child11, @child12)
|
552
|
+
|
553
|
+
@parent2.implicit_shared_variable_access false
|
554
|
+
implicit_shared_variable_access_should_be(false, @grandparent, @parent2, @child21, @child22)
|
555
|
+
implicit_shared_variable_access_should_be(true, @parent1, @child11, @child12)
|
556
|
+
|
557
|
+
@grandparent.implicit_shared_variable_access true
|
558
|
+
implicit_shared_variable_access_should_be(false, @parent2, @child21, @child22)
|
559
|
+
implicit_shared_variable_access_should_be(true, @grandparent, @parent1, @child11, @child12)
|
560
|
+
|
561
|
+
@grandparent.implicit_shared_variable_access false
|
562
|
+
implicit_shared_variable_access_should_be(false, @grandparent, @parent2, @child21, @child22)
|
563
|
+
implicit_shared_variable_access_should_be(true, @parent1, @child11, @child12)
|
564
|
+
end
|
565
|
+
|
566
|
+
it "should properly inherit use_instance_variables_for_assigns" do
|
567
|
+
use_instance_variables_for_assigns_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
|
568
|
+
|
569
|
+
@parent1.use_instance_variables_for_assigns true
|
570
|
+
use_instance_variables_for_assigns_should_be(false, @grandparent, @parent2, @child21, @child22)
|
571
|
+
use_instance_variables_for_assigns_should_be(true, @parent1, @child11, @child12)
|
572
|
+
|
573
|
+
@parent2.use_instance_variables_for_assigns false
|
574
|
+
use_instance_variables_for_assigns_should_be(false, @grandparent, @parent2, @child21, @child22)
|
575
|
+
use_instance_variables_for_assigns_should_be(true, @parent1, @child11, @child12)
|
576
|
+
|
577
|
+
@grandparent.use_instance_variables_for_assigns true
|
578
|
+
use_instance_variables_for_assigns_should_be(false, @parent2, @child21, @child22)
|
579
|
+
use_instance_variables_for_assigns_should_be(true, @grandparent, @parent1, @child11, @child12)
|
580
|
+
|
581
|
+
@grandparent.use_instance_variables_for_assigns false
|
582
|
+
use_instance_variables_for_assigns_should_be(false, @grandparent, @parent2, @child21, @child22)
|
583
|
+
use_instance_variables_for_assigns_should_be(true, @parent1, @child11, @child12)
|
584
|
+
end
|
585
|
+
end
|