fortitude 0.0.1
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 +26 -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 +37 -0
- data/lib/fortitude/assign_locals_from_template.rb.smpl +22 -0
- data/lib/fortitude/assigns_proxy.rb +75 -0
- data/lib/fortitude/class_inheritable_attributes.rb +96 -0
- data/lib/fortitude/doctypes/base.rb +38 -0
- data/lib/fortitude/doctypes/html4.rb +20 -0
- data/lib/fortitude/doctypes/html4_frameset.rb +18 -0
- data/lib/fortitude/doctypes/html4_strict.rb +17 -0
- data/lib/fortitude/doctypes/html4_tags_frameset.rb +52 -0
- data/lib/fortitude/doctypes/html4_tags_strict.rb +273 -0
- data/lib/fortitude/doctypes/html4_tags_transitional.rb +114 -0
- data/lib/fortitude/doctypes/html4_transitional.rb +18 -0
- data/lib/fortitude/doctypes/html5.rb +372 -0
- data/lib/fortitude/doctypes/unknown_doctype.rb +19 -0
- data/lib/fortitude/doctypes/xhtml10.rb +19 -0
- data/lib/fortitude/doctypes/xhtml10_frameset.rb +17 -0
- data/lib/fortitude/doctypes/xhtml10_strict.rb +17 -0
- data/lib/fortitude/doctypes/xhtml10_transitional.rb +17 -0
- data/lib/fortitude/doctypes/xhtml11.rb +29 -0
- data/lib/fortitude/doctypes.rb +46 -0
- data/lib/fortitude/errors.rb +153 -0
- data/lib/fortitude/fortitude_ruby_ext.rb +71 -0
- data/lib/fortitude/instance_variable_set.rb +74 -0
- data/lib/fortitude/need_assignment_template.rb.smpl +16 -0
- data/lib/fortitude/need_method_template.rb.smpl +4 -0
- data/lib/fortitude/non_rails_widget_methods.rb +15 -0
- data/lib/fortitude/partial_tag_placeholder.rb +17 -0
- data/lib/fortitude/rails/helpers.rb +153 -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 +17 -0
- data/lib/fortitude/rails/yielded_object_outputter.rb +31 -0
- data/lib/fortitude/railtie.rb +254 -0
- data/lib/fortitude/rendering_context.rb +205 -0
- data/lib/fortitude/simple_template.rb +45 -0
- data/lib/fortitude/staticized_method.rb +85 -0
- data/lib/fortitude/tag.rb +162 -0
- data/lib/fortitude/tag_method_template.rb.smpl +68 -0
- data/lib/fortitude/tag_return_value.rb +11 -0
- data/lib/fortitude/tag_store.rb +48 -0
- data/lib/fortitude/tag_support.rb +48 -0
- data/lib/fortitude/tags_module.rb +14 -0
- data/lib/fortitude/text_method_template.rb.smpl +17 -0
- data/lib/fortitude/tilt/fortitude_template.rb +169 -0
- data/lib/fortitude/version.rb +3 -0
- data/lib/fortitude/widget.rb +904 -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.rb +93 -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 +213 -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/localization_system_spec.rb +94 -0
- data/spec/system/method_precedence_system_spec.rb +48 -0
- data/spec/system/needs_system_spec.rb +368 -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 +253 -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 +378 -0
- data/spec/system/unparsed_data_system_spec.rb +16 -0
- data/spec/system/void_tags_system_spec.rb +51 -0
- data/spec/system/widget_return_values_system_spec.rb +89 -0
- metadata +736 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
describe "basic Rails support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :localization_system_spec
|
|
3
|
+
|
|
4
|
+
it "should allow you to provide localized content methods" do
|
|
5
|
+
expect_match("content_method?locale=en", /wassup\? this is english/mi)
|
|
6
|
+
expect_match("content_method?locale=fr", /bienvenue, les mecs/mi)
|
|
7
|
+
expect_match("content_method?locale=pt", /i don&#(39|x27);t know that language/mi)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should let you translate strings with I18n.t" do
|
|
11
|
+
expect_match("i18n_t?locale=en", /a house is: house/)
|
|
12
|
+
expect_match("i18n_t?locale=fr", /a house is: maison/)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should let you translate strings with just t" do
|
|
16
|
+
expect_match("t?locale=en", /a house is: house/)
|
|
17
|
+
expect_match("t?locale=fr", /a house is: maison/)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should support dot-notation for I18n translation naming" do
|
|
21
|
+
expect_match("dot_notation?locale=en", /awesome is: awesome!/)
|
|
22
|
+
expect_match("dot_notation?locale=fr", /awesome is: formidable!/)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should let you translate strings with Fortitude translation support" do
|
|
26
|
+
expect_match("native_support?locale=en", /not translated; also awesome 127!; also not translated/i)
|
|
27
|
+
expect_match("native_support?locale=fr", /not translated; encore formidable 127!; also not translated/i)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should let you readjust the translation base" do
|
|
31
|
+
expect_match("readjust_base?locale=en", /SUPA-awesome 127!/)
|
|
32
|
+
expect_match("readjust_base?locale=fr", /TOUS formidable, 127!/)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should not escape explicitly-HTML translations" do
|
|
36
|
+
expect_match("explicit_html", /one: foo<bar>, two: bar<baz>, one again: foo<bar>, two again: bar<baz>/i)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
describe "Rails production-mode support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :production_mode_system_spec
|
|
3
|
+
|
|
4
|
+
it "should not, by default, format output" do
|
|
5
|
+
expect_match("sample_output", %r{<section class="one"><p>hello, Jessica</p></section>}i)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should not, by default, output BEGIN/END debugging tags" do
|
|
9
|
+
data = get_success("sample_output")
|
|
10
|
+
expect(data).not_to match(%r{<!--\s*BEGIN}mi)
|
|
11
|
+
expect(data).not_to match(%r{<!--\s*END}mi)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
describe "Rails RenderingContext support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :rendering_context_system_spec
|
|
3
|
+
|
|
4
|
+
it "should use the context returned by create_fortitude_rendering_context in the view" do
|
|
5
|
+
expect_match("uses_specified_context_in_view", /context is: SimpleRc, value 12345/)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should still use that context even for partials invoked by ERb" do
|
|
9
|
+
expect_match("uses_specified_context_in_partials", /before partial.*context is: SimpleRc, value 23456.*after partial/mi)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should use that context for partials through multiple layers of nesting" do
|
|
13
|
+
text = get_success("uses_specified_context_through_nesting")
|
|
14
|
+
if text =~ /view rc: SimpleRc, 34567, (\d+).*partial.*inner partial rc: SimpleRc, 34567, (\d+)/mi
|
|
15
|
+
first_value, second_value = Integer($1), Integer($2)
|
|
16
|
+
expect(first_value).to eq(second_value)
|
|
17
|
+
else
|
|
18
|
+
raise "Text did not match: #{text.inspect}"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should use that context for widgets rendered with render :widget" do
|
|
23
|
+
expect_match("uses_specified_context_in_render_widget", /context is: SimpleRc, value 45678/)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should use that context for widgets rendered with render :inline" do
|
|
27
|
+
expect_match("uses_specified_context_in_render_inline", /context is: SimpleRc, value 56789/)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should use the context returned by just plain fortitude_rendering_context in the view" do
|
|
31
|
+
expect_match("uses_direct_context_in_view", /context is: SimpleRc, value 67890/)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should still call that method for all widgets" do
|
|
35
|
+
expect_match("uses_direct_context_for_all_widgets", /context is: SimpleRc, value 67890.*context is: SimpleRc, value 67891.*context is: SimpleRc, value 67890/mi)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should call start_widget! and end_widget! properly on widgets in Rails" do
|
|
39
|
+
text = get_success("start_end_widget_basic")
|
|
40
|
+
lines = text.split(/[\r\n]+/)
|
|
41
|
+
lines = lines.select { |l| l =~ /^\d:/ }.map { |l| l.strip }
|
|
42
|
+
expect(lines[0]).to eq("0: start Views::RenderingContextSystemSpec::StartEndWidgetBasic")
|
|
43
|
+
expect(lines[1]).to eq("1: start Views::RenderingContextSystemSpec::StartEndWidgetBasicInner 1")
|
|
44
|
+
expect(lines[2]).to eq("2: end Views::RenderingContextSystemSpec::StartEndWidgetBasicInner 1")
|
|
45
|
+
expect(lines[3]).to eq("3: start Views::RenderingContextSystemSpec::StartEndWidgetBasicInner 2")
|
|
46
|
+
expect(lines[4]).to eq("4: start Views::RenderingContextSystemSpec::StartEndWidgetBasicInner")
|
|
47
|
+
expect(lines[5]).to eq("5: end Views::RenderingContextSystemSpec::StartEndWidgetBasicInner")
|
|
48
|
+
expect(lines[6]).to eq("6: end Views::RenderingContextSystemSpec::StartEndWidgetBasicInner 2")
|
|
49
|
+
expect(lines.length).to eq(7)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should call start_widget! and end_widget! through ERb partials, passing them as hashes" do
|
|
53
|
+
text = get_success("start_end_widget_through_partials")
|
|
54
|
+
lines = text.split(/[\r\n]+/)
|
|
55
|
+
lines = lines.select { |l| l =~ /^\d:/ }.map { |l| l.strip }
|
|
56
|
+
|
|
57
|
+
expect(lines[0]).to eq("0: start Views::RenderingContextSystemSpec::StartEndWidgetThroughPartials")
|
|
58
|
+
expect(lines[1]).to eq("1: start [{:partial=>\"start_end_widget_through_partials_partial\"}]")
|
|
59
|
+
expect(lines[2]).to eq("2: start Views::RenderingContextSystemSpec::StartEndWidgetThroughPartialsPartialWidget 12345")
|
|
60
|
+
expect(lines[3]).to eq("3: end Views::RenderingContextSystemSpec::StartEndWidgetThroughPartialsPartialWidget 12345")
|
|
61
|
+
expect(lines[4]).to eq("4: end [{:partial=>\"start_end_widget_through_partials_partial\"}]")
|
|
62
|
+
expect(lines.length).to eq(5)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
describe "Rails rendering support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :rendering_system_spec
|
|
3
|
+
|
|
4
|
+
describe "rendering from a controller" do
|
|
5
|
+
it "should let you specify a widget with 'render :action =>'" do
|
|
6
|
+
expect_match("render_with_colon_action", /hello, world/)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should let you specify a widget with 'render :template =>'" do
|
|
10
|
+
expect_match("render_with_colon_template", /hello, world/)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should let you specify a widget with 'render :widget =>', which should use a layout by default" do
|
|
14
|
+
data = expect_match("render_widget", /hello from a widget named Fred/)
|
|
15
|
+
expect(data).to match(/rails_spec_application/)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should let you omit the layout with 'render :widget =>', if you ask for it" do
|
|
19
|
+
data = expect_match("render_widget_without_layout", /hello from a widget named Fred/, :no_layout => true)
|
|
20
|
+
expect(data).not_to match(/rails_spec_application/)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should let you render a widget with 'render \"foo\"'" do
|
|
24
|
+
expect_match("render_widget_via_file_path", /hello from a widget named Fred/)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should let you render a widget with 'render :file =>'" do
|
|
28
|
+
expect_match("render_widget_via_colon_file", /hello from a widget named Fred/)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should let you render a widget inline with 'render :inline =>'" do
|
|
32
|
+
expect_match("render_widget_via_inline", /this is an inline widget named Fred/)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should let you render a widget inline, and use all instance and local variables, with locals overriding instance variables" do
|
|
36
|
+
expect_match("render_widget_via_inline_with_var_access", /this is an inline widget named Fred, and it is 27 years old, and friends with Mary/)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe "rendering in a widget" do
|
|
41
|
+
it "should let you render a partial in a widget" do
|
|
42
|
+
expect_match("render_partial_from_widget", /this is the widget.*this is the_partial.*this is the widget again/mi)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should let you render :text in a widget" do
|
|
46
|
+
expect_match("render_text_from_widget", /this is the widget.*this is render_text.*this is the widget again/mi)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should let you render :template in a widget" do
|
|
50
|
+
expect_match("render_template_from_widget", /this is the widget.*widget_with_name: Fred.*this is the widget again/mi)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should let you render :inline in a widget" do
|
|
54
|
+
expect_match("render_inline_from_widget", /this is the widget.*widget_with_name: Fred.*this is the widget again/mi)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "should let you render :file in a widget" do
|
|
58
|
+
expect_match("render_file_from_widget", /this is the widget.*widget_with_name: Fred.*this is the widget again/mi)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe "render options" do
|
|
63
|
+
it "should let you set the content-type" do
|
|
64
|
+
data = get_response("render_with_content_type")
|
|
65
|
+
expect(data.body.strip).to match(/hello, world/)
|
|
66
|
+
content_type = data.header['content-type']
|
|
67
|
+
expect(content_type).to match(%r{^boo/yeah(;.*)?$})
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "should let you set the location" do
|
|
71
|
+
data = get_response("render_with_location")
|
|
72
|
+
expect(data.body.strip).to match(/hello, world/)
|
|
73
|
+
location = data.header['location']
|
|
74
|
+
expect(location).to eq("http://somewhere/over/the/rainbow")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should let you set the status" do
|
|
78
|
+
data = get_response("render_with_status", :ignore_status_code => true)
|
|
79
|
+
expect(data.code.to_s).to eq("768")
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe "rendering partial invocation" do
|
|
84
|
+
it "should render a collection correctly if so invoked" do
|
|
85
|
+
expect_match("render_collection", /collection is:.*word: apple.*word: pie.*word: is.*word: nice.*and that's all!/mi)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should support :as for rendering" do
|
|
89
|
+
expect_match("render_collection_as", /collection is:.*widget_with_name: bonita.*widget_with_name: applebaum.*widget_with_name: the.*widget_with_name: dude.*and that's all!/mi)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "should support :object for rendering" do
|
|
93
|
+
expect_match("render_object", /partial is:.*word: donkey.*and that's all!/mi)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "should support ERb partial layouts" do
|
|
97
|
+
expect_match("render_partial_with_layout", /this is the partial:.*partial_layout before.*partial_with_layout.*partial_layout after.*done!/mi)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "should support using a widget as an ERb partial layout" do
|
|
101
|
+
expect_match("render_partial_with_widget_layout", /this is the partial:.*widget_partial_layout before.*partial_with_layout.*widget_partial_layout after.*done!/mi)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
describe "HTML escaping" do
|
|
106
|
+
it "should only escape strings that aren't raw() or html_safe(), and do the right thing with h()" do
|
|
107
|
+
expect_match("render_html_safe_strings", /a: foo<bar, b: bar<baz, c: baz<quux, d: quux<marph, e: marph>foo/)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
describe "streaming support" do
|
|
112
|
+
# Actually trying to get streaming working completely is a VERY finicky business, and we don't want to fail
|
|
113
|
+
# our tests just because (e.g.) we can't get buffering 100% disabled on this platform. So, we:
|
|
114
|
+
#
|
|
115
|
+
# * Use Net::HTTP to collect the HTTP/1.1 transfer chunks of the response; there should be more than one if
|
|
116
|
+
# we're actually streaming (and there ends up being just 1 if you don't tell it to stream, or if Rails
|
|
117
|
+
# detects that your template engine doesn't support streaming);
|
|
118
|
+
# * Collect the rendering order server-side and output it; if streaming, we'll render the top of the layout,
|
|
119
|
+
# then the widget, then the bottom of the layout, completely differently from Rails' default mechanism of
|
|
120
|
+
# rendering the view first, then the layout.
|
|
121
|
+
def collect_chunks(path)
|
|
122
|
+
chunks = [ ]
|
|
123
|
+
|
|
124
|
+
uri = rails_server.uri_for(full_path(path))
|
|
125
|
+
Net::HTTP.start(uri.host, uri.port) do |http|
|
|
126
|
+
request = Net::HTTP::Get.new uri.request_uri
|
|
127
|
+
|
|
128
|
+
http.request(request) do |response|
|
|
129
|
+
response.read_body do |chunk|
|
|
130
|
+
chunks << chunk
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
chunks
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "should let you stream a pure widget" do
|
|
139
|
+
skip "currently, we can't figure out a way to test this for certain -- we get just one chunk no matter what we do"
|
|
140
|
+
|
|
141
|
+
chunks = collect_chunks("stream_widget")
|
|
142
|
+
expect(chunks.length).to be > 1
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "should let you stream from a widget that's in an ERb layout" do
|
|
146
|
+
skip("Fortitude streaming test is not supported under Rails 3.0.x") if @rails_server.rails_version =~ /^3\.0\./
|
|
147
|
+
skip("Fortitude streaming test is not supported under Ruby 1.8") if RUBY_VERSION =~ /^1\.8\./
|
|
148
|
+
|
|
149
|
+
chunks = collect_chunks("stream_widget_with_layout")
|
|
150
|
+
expect(chunks.length).to be > 1
|
|
151
|
+
|
|
152
|
+
full_text = chunks.join("")
|
|
153
|
+
expect(full_text).to match(/start_of_layout order:\s+\[:layout_start\]/mi)
|
|
154
|
+
expect(full_text).to match(/end_of_widget order:\s+\[:layout_start, :widget\]/mi)
|
|
155
|
+
expect(full_text).to match(/end_of_layout order:\s+\[:layout_start, :widget, :layout_end\]/mi)
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
describe "Rails rules support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :rules_system_spec
|
|
3
|
+
|
|
4
|
+
it "should be able to enforce tag-nesting rules in Rails" do
|
|
5
|
+
expect_exception('invalidly_nested_tag', Fortitude::Errors::InvalidElementNesting, /div/)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should still enforce tag-nesting rules inside a partial" do
|
|
9
|
+
expect_exception('invalidly_nested_tag_in_partial', Fortitude::Errors::InvalidElementNesting, /div/)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should not enforce tag-nesting rules at the start of a partial rendered from ERb" do
|
|
13
|
+
expect_match("invalid_start_tag_in_partial", /we got there\!/)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should not enforce tag-nesting rules from layout to view, even if both are in Fortitude" do
|
|
17
|
+
expect_match('invalid_start_tag_in_view', /we got there\!/)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should not enforce tag-nesting rules across an intervening partial" do
|
|
21
|
+
expect_match('intervening_partial', /we got there\!/)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
describe "Fortitude static-method behavior in Rails", :type => :rails do
|
|
2
|
+
uses_rails_with_template :static_method_system_spec
|
|
3
|
+
|
|
4
|
+
it "should allow access to helpers in methods made static" do
|
|
5
|
+
expect_match("allows_helper_access", /foo is: fooaaafoobarbbb!/)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should respect localization in methods made static" do
|
|
9
|
+
expect_match("localization?locale=en", /hello is: hello/)
|
|
10
|
+
expect_match("localization?locale=fr", /hello is: bonjour/)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class ApplicationController < ActionController::Base
|
|
2
|
+
# Prevent CSRF attacks by raising an exception.
|
|
3
|
+
# For APIs, you may want to use :null_session instead.
|
|
4
|
+
protect_from_forgery :with => :exception
|
|
5
|
+
|
|
6
|
+
rescue_from Exception do |exception|
|
|
7
|
+
render :json => {
|
|
8
|
+
:exception => {
|
|
9
|
+
:class => exception.class.name,
|
|
10
|
+
:message => exception.message,
|
|
11
|
+
:backtrace => exception.backtrace
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
|
2
|
+
|
|
3
|
+
# Your secret key is used for verifying the integrity of signed cookies.
|
|
4
|
+
# If you change this key, all old signed cookies will become invalid!
|
|
5
|
+
|
|
6
|
+
# Make sure the secret is at least 30 characters and all random,
|
|
7
|
+
# no regular words or you'll be exposed to dictionary attacks.
|
|
8
|
+
# You can use `rake secret` to generate a secure secret key.
|
|
9
|
+
|
|
10
|
+
# Make sure the secrets in this file are kept private
|
|
11
|
+
# if you're sharing your code publicly.
|
|
12
|
+
|
|
13
|
+
development:
|
|
14
|
+
secret_key_base: 0985fb529eab373cecb28150a410855320b217fad4e79cdf343e3b81d667f380f6c7f2c1e9943cd4786eb0ba15ae5de0e7004b28453515dcace3dcbfcc93eca7
|
|
15
|
+
|
|
16
|
+
test:
|
|
17
|
+
secret_key_base: 6783078d4dc326633f90f560efef22b743b79289d1370baa89857eb252a0cb36c45ef4a0a6aa959b22c9a15ffa62ebfd5aa933c2253a071c568e2464db683bd0
|
|
18
|
+
|
|
19
|
+
# Do not keep production secrets in the repository,
|
|
20
|
+
# instead read values from the environment.
|
|
21
|
+
production:
|
|
22
|
+
secret_key_base: 0985fb529eab373cecb28150a410855320b217fad4e79cdf343e3b81d667f380f6c7f2c1e9943cd4786eb0ba15ae5de0e7004b28453515dcace3dcbfcc93eca7
|
data/spec/rails/templates/capture_system_spec/app/controllers/capture_system_spec_controller.rb
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
class CaptureSystemSpecController < ApplicationController
|
|
2
|
+
def capture_widget_from_erb
|
|
3
|
+
# nothing here
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def capture_erb_from_widget
|
|
7
|
+
# nothing here
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def capture_widget_from_widget
|
|
11
|
+
# nothing here
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def widget_content_for
|
|
15
|
+
render :layout => 'erb_layout_needing_content'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def widget_provide
|
|
19
|
+
render :layout => 'erb_layout_needing_content'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def widget_layout_needing_content_yield_with_erb
|
|
23
|
+
render :layout => 'widget_layout_needing_content_yield'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def widget_layout_needing_content_yield_with_widget
|
|
27
|
+
render :action => 'widget_content_for', :layout => 'widget_layout_needing_content_yield'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def widget_layout_needing_content_content_for_with_erb
|
|
31
|
+
render :action => 'widget_layout_needing_content_yield_with_erb', :layout => 'widget_layout_needing_content_content_for'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def widget_layout_needing_content_content_for_with_widget
|
|
35
|
+
render :action => 'widget_content_for', :layout => 'widget_layout_needing_content_content_for'
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<h3>this is some_erb_partial</h3>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class Views::CaptureSystemSpec::CaptureWidgetFromWidget < Fortitude::Widgets::Html5
|
|
2
|
+
def content
|
|
3
|
+
widget_text_1 = capture do
|
|
4
|
+
widget Views::CaptureSystemSpec::AnotherWidget.new(:name => "rendered_with_widget")
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
widget_text_2 = capture do
|
|
8
|
+
render :partial => 'another_widget', :locals => { :name => "rendered_with_render_partial" }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
text "Rendered with widget:"
|
|
12
|
+
text widget_text_1
|
|
13
|
+
text "Rendered with render_partial:"
|
|
14
|
+
text widget_text_2
|
|
15
|
+
text "END"
|
|
16
|
+
end
|
|
17
|
+
end
|
data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_content_for.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class Views::CaptureSystemSpec::WidgetContentFor < Fortitude::Widgets::Html5
|
|
2
|
+
def content
|
|
3
|
+
content_for :bar do
|
|
4
|
+
h3 "this is content for bar!"
|
|
5
|
+
end
|
|
6
|
+
content_for :foo do
|
|
7
|
+
h5 "this is content for foo!"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
h4 "this is main_content!"
|
|
11
|
+
|
|
12
|
+
content_for :foo do
|
|
13
|
+
h5 "this is more content for foo!"
|
|
14
|
+
end
|
|
15
|
+
content_for :bar do
|
|
16
|
+
h3 "this is more content for bar!"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% content_for :bar do %>
|
|
2
|
+
<h3>this is content for bar!</h3>
|
|
3
|
+
<% end %>
|
|
4
|
+
<% content_for :foo do %>
|
|
5
|
+
<h5>this is content for foo!</h5>
|
|
6
|
+
<% end %>
|
|
7
|
+
<h4>this is main_content!</h4>
|
|
8
|
+
<% content_for :foo do %>
|
|
9
|
+
<h5>this is more content for foo!</h5>
|
|
10
|
+
<% end %>
|
|
11
|
+
<% content_for :bar do %>
|
|
12
|
+
<h3>this is more content for bar!</h3>
|
|
13
|
+
<% end %>
|
data/spec/rails/templates/capture_system_spec/app/views/layouts/erb_layout_needing_content.html.erb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>erb_layout_needing_content</title>
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
|
|
8
|
+
<p>Foo content is: <%= yield :foo %></p>
|
|
9
|
+
|
|
10
|
+
<p>Main content is: <%= yield %></p>
|
|
11
|
+
|
|
12
|
+
<p>Bar content is: <%= yield :bar %></p>
|
|
13
|
+
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
class Views::Layouts::WidgetLayoutNeedingContentContentFor < Fortitude::Widgets::Html5
|
|
2
|
+
def content
|
|
3
|
+
html {
|
|
4
|
+
head {
|
|
5
|
+
title "widget_layout_needing_content"
|
|
6
|
+
}
|
|
7
|
+
body {
|
|
8
|
+
p {
|
|
9
|
+
text "Foo content is: "
|
|
10
|
+
text(content_for :foo)
|
|
11
|
+
}
|
|
12
|
+
p {
|
|
13
|
+
text "Main content is: "
|
|
14
|
+
yield
|
|
15
|
+
}
|
|
16
|
+
p {
|
|
17
|
+
text "Bar content is: "
|
|
18
|
+
text(content_for :bar)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
class Views::Layouts::WidgetLayoutNeedingContentYield < Fortitude::Widgets::Html5
|
|
2
|
+
def content
|
|
3
|
+
html {
|
|
4
|
+
head {
|
|
5
|
+
title "widget_layout_needing_content"
|
|
6
|
+
}
|
|
7
|
+
body {
|
|
8
|
+
p {
|
|
9
|
+
text "Foo content is: "
|
|
10
|
+
yield :foo
|
|
11
|
+
}
|
|
12
|
+
p {
|
|
13
|
+
text "Main content is: "
|
|
14
|
+
yield
|
|
15
|
+
}
|
|
16
|
+
p {
|
|
17
|
+
text "Bar content is: "
|
|
18
|
+
yield :bar
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
end
|