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
|
+
require 'active_support'
|
|
2
|
+
require 'fortitude'
|
|
3
|
+
|
|
4
|
+
module SystemHelpers
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
class IvarAccessible
|
|
8
|
+
def [](x)
|
|
9
|
+
instance_variable_get("@#{x}")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def []=(x, y)
|
|
13
|
+
instance_variable_set("@#{x}", y)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
attr_reader :ivars
|
|
18
|
+
|
|
19
|
+
def rc(options = { })
|
|
20
|
+
options[:instance_variables_object] = ivars unless options.has_key?(:instance_variables_object)
|
|
21
|
+
::Fortitude::RenderingContext.new(options)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def html_from(rendering_context)
|
|
25
|
+
rendering_context.output_buffer_holder.output_buffer.to_s
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def define_helper(name, &block)
|
|
29
|
+
@helpers_class.send(:define_method, name, &block)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class TestDoctype < Fortitude::Doctypes::Base
|
|
33
|
+
def initialize
|
|
34
|
+
super(:test_doctype, "FORTITUDE TEST")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def close_void_tags_must_be
|
|
38
|
+
nil
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def default_javascript_tag_attributes
|
|
42
|
+
{ }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def needs_cdata_in_javascript_tag?
|
|
46
|
+
false
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
tag :p, :newline_before => true, :valid_attributes => %w{class}, :can_enclose => %w{a span br b _text}, :spec => 'THE_SPEC_FOR_P'
|
|
50
|
+
tag :div, :newline_before => true, :valid_attributes => %w{aaaaaaaaaaaaaa}, :can_enclose => %w{div p hr}
|
|
51
|
+
tag :span
|
|
52
|
+
tag :hr, :content_allowed => false
|
|
53
|
+
tag :br, :content_allowed => false, :spec => 'THE_SPEC_FOR_BR'
|
|
54
|
+
tag :a
|
|
55
|
+
tag :b
|
|
56
|
+
tag :nav, :newline_before => true
|
|
57
|
+
tag :h1, :newline_before => true
|
|
58
|
+
tag :img, :content_allowed => false
|
|
59
|
+
tag :script, :newline_before => true, :escape_direct_content => false
|
|
60
|
+
tag :head, :newline_before => true
|
|
61
|
+
tag :style, :newline_before => true, :escape_direct_content => false
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
class TestWidgetClass < Fortitude::Widget
|
|
65
|
+
doctype TestDoctype.new
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def widget_class(options = { }, &block)
|
|
69
|
+
klass = Class.new(options[:superclass] || TestWidgetClass, &block)
|
|
70
|
+
$spec_widget_seq ||= 0
|
|
71
|
+
$spec_widget_seq += 1
|
|
72
|
+
::Object.const_set("SpecWidget#{$spec_widget_seq}", klass)
|
|
73
|
+
klass
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def widget_class_with_content(options = { }, &block)
|
|
77
|
+
wc = widget_class(options)
|
|
78
|
+
wc.send(:define_method, :content, &block)
|
|
79
|
+
wc
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def render(widget_or_class, options = { })
|
|
83
|
+
widget = if widget_or_class.kind_of?(Class)
|
|
84
|
+
widget_or_class.new(options[:assigns] || { })
|
|
85
|
+
else
|
|
86
|
+
widget_or_class
|
|
87
|
+
end
|
|
88
|
+
rendering_context = options[:rendering_context] || rc
|
|
89
|
+
widget.render_to(rendering_context)
|
|
90
|
+
html_from(rendering_context)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def capture_exception(klass = StandardError, &block)
|
|
94
|
+
out = nil
|
|
95
|
+
begin
|
|
96
|
+
block.call
|
|
97
|
+
rescue klass => e
|
|
98
|
+
out = e
|
|
99
|
+
end
|
|
100
|
+
raise "Exception of class #{klass.inspect} was expected, but none was raised" unless out
|
|
101
|
+
out
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def render_content(options = { }, &block)
|
|
105
|
+
widget_class = widget_class_with_content(options, &block)
|
|
106
|
+
render(widget_class, options)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
included do
|
|
110
|
+
before :each do
|
|
111
|
+
@helpers_class = Class.new
|
|
112
|
+
@helpers = @helpers_class.new
|
|
113
|
+
@ivars = IvarAccessible.new
|
|
114
|
+
@yield_block = double("yield_block")
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
describe "Rails capture support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :capture_system_spec
|
|
3
|
+
|
|
4
|
+
it "should successfully capture a widget partial with capture { } in an ERb view" do
|
|
5
|
+
expect_match('capture_widget_from_erb', %r{Widget text is:\s+<h3>\s*this is some_widget</h3>\s*END}mi)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should successfully capture an ERb partial with capture { } in a widget" do
|
|
9
|
+
expect_match('capture_erb_from_widget', %r{Widget text is:\s+<h3>\s*this is some_erb_partial</h3>\s*END}mi)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should successfully capture a widget with capture { } in a widget" do
|
|
13
|
+
expect_match('capture_widget_from_widget', %r{Rendered with widget:\s*<h3>\s*this is another_widget rendered_with_widget</h3>.*Rendered with render_partial:\s*<h3>\s*this is another_widget rendered_with_render_partial\s*</h3>\s*END}mi)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should be able to provide content in a widget with content_for" do
|
|
17
|
+
expect_match('widget_content_for',
|
|
18
|
+
%r{erb_layout_needing_content}i,
|
|
19
|
+
%r{Foo content is: <h5>this is content for foo!</h5>\s*<h5>this is more content for foo!</h5>}mi,
|
|
20
|
+
%r{Main content is: <h4>this is main_content!</h4>}mi,
|
|
21
|
+
%r{Bar content is: <h3>this is content for bar!</h3>\s*<h3>this is more content for bar!</h3>}mi,
|
|
22
|
+
:no_layout => true)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should be able to provide content in a widget with provide" do
|
|
26
|
+
skip "Rails 3.0.x doesn't support :provide" if @rails_server.rails_version =~ /^3\.0\./
|
|
27
|
+
|
|
28
|
+
expect_match('widget_provide',
|
|
29
|
+
%r{erb_layout_needing_content}i,
|
|
30
|
+
%r{Foo content is: <h5>this is content for foo!</h5>}mi,
|
|
31
|
+
%r{Main content is: <h4>this is main_content!</h4>}mi,
|
|
32
|
+
%r{Bar content is: <h3>this is content for bar!</h3>}mi,
|
|
33
|
+
:no_layout => true)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe "should be able to retrieve stored content in a widget with yield :name" do
|
|
37
|
+
it "when provided by ERb" do
|
|
38
|
+
expect_match('widget_layout_needing_content_yield_with_erb',
|
|
39
|
+
%r{widget_layout_needing_content}mi,
|
|
40
|
+
%r{Foo content is: <h5>this is content for foo!</h5>\s*<h5>this is more content for foo!</h5>}mi,
|
|
41
|
+
%r{Main content is: <h4>this is main_content!</h4>}mi,
|
|
42
|
+
%r{Bar content is: <h3>this is content for bar!</h3>\s*<h3>this is more content for bar!</h3>}mi,
|
|
43
|
+
:no_layout => true)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "when provided by a widget" do
|
|
47
|
+
expect_match('widget_layout_needing_content_yield_with_widget',
|
|
48
|
+
%r{widget_layout_needing_content}mi,
|
|
49
|
+
%r{Foo content is: <h5>this is content for foo!</h5>\s*<h5>this is more content for foo!</h5>}mi,
|
|
50
|
+
%r{Main content is: <h4>this is main_content!</h4>}mi,
|
|
51
|
+
%r{Bar content is: <h3>this is content for bar!</h3>\s*<h3>this is more content for bar!</h3>}mi,
|
|
52
|
+
:no_layout => true)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe "should be able to retrieve stored content in a widget with content_for :name" do
|
|
57
|
+
it "when provided by ERb" do
|
|
58
|
+
expect_match('widget_layout_needing_content_content_for_with_erb',
|
|
59
|
+
%r{widget_layout_needing_content}mi,
|
|
60
|
+
%r{Foo content is: <h5>this is content for foo!</h5>\s*<h5>this is more content for foo!</h5>}mi,
|
|
61
|
+
%r{Main content is: <h4>this is main_content!</h4>}mi,
|
|
62
|
+
%r{Bar content is: <h3>this is content for bar!</h3>\s*<h3>this is more content for bar!</h3>}mi,
|
|
63
|
+
:no_layout => true)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "when provided by a widget" do
|
|
67
|
+
expect_match('widget_layout_needing_content_content_for_with_widget',
|
|
68
|
+
%r{widget_layout_needing_content}mi,
|
|
69
|
+
%r{Foo content is: <h5>this is content for foo!</h5>\s*<h5>this is more content for foo!</h5>}mi,
|
|
70
|
+
%r{Main content is: <h4>this is main_content!</h4>}mi,
|
|
71
|
+
%r{Bar content is: <h3>this is content for bar!</h3>\s*<h3>this is more content for bar!</h3>}mi,
|
|
72
|
+
:no_layout => true)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
describe "Rails class-loading support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :class_loading_system_spec
|
|
3
|
+
|
|
4
|
+
it "should not load classes under app/views without the Views:: prefix" do
|
|
5
|
+
expect_exception('the_class_should_not_load', 'NameError',
|
|
6
|
+
/uninitialized constant ClassLoadingSystemSpec::ClassShouldNotLoad/i)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should allow me to define classes under Views:: outside of app/views, like in lib/views" do
|
|
10
|
+
expect_match('lib_views', /hello: i am lib\/views/)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should allow me to define classes under Views:: outside of app/views, but in some other autoloaded place, like app/models" do
|
|
14
|
+
expect_match('app_models', /hello: i am app\/models/)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should not create anonymous modules without the Views:: namespace for directories under app/views/" do
|
|
18
|
+
expect_exception('some_namespace', 'NameError', /uninitialized constant SomeNamespace/)
|
|
19
|
+
expect_exception('some_other_namespace', 'NameError', /uninitialized constant SomeNamespace/)
|
|
20
|
+
expect_match('views_some_namespace', /Views::SomeNamespace/, :no_layout => true)
|
|
21
|
+
expect_match('views_some_other_namespace', /Views::SomeNamespace::SomeOtherNamespace/, :no_layout => true)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should autoload widgets under app/views/" do
|
|
25
|
+
expect_match('autoload_widget', /autoload_widget is here!/, :no_layout => true)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should autoload one widget from another" do
|
|
29
|
+
expect_match('autoload_one_widget_from_another', /about to run the sub widget.*this is the sub widget.*ran the sub widget/)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should allow use of a widget defined in lib/ from a view widget" do
|
|
33
|
+
expect_match('use_lib_widget_from_view_widget', /about to run the lib widget.*this is the lib widget.*ran the lib widget/)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should allow use of a widget defined on another autoload path from a view widget" do
|
|
37
|
+
expect_match('use_models_widget_from_view_widget', /about to run the models widget.*this is the models widget.*ran the models widget/)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should not allow me to define widgets outside of app/views/" do
|
|
41
|
+
expect_exception('widget_defined_outside_app_views', 'ActionView::MissingTemplate', /class_loading_system_spec\/widget_defined_outside_app_views/)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should not let me define a widget in a file starting with an underscore, and use it for a view" do
|
|
45
|
+
expect_exception('underscore_view', 'ActionView::MissingTemplate', /class_loading_system_spec\/underscore_view/)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should not let me define a widget in a file starting with an underscore, and autoload it" do
|
|
49
|
+
expect_exception('underscore_widget', 'NameError', /uninitialized constant Views::ClassLoadingSystemSpec::UnderscoreWidget/)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should not let me 'require' files in app/views without a views/ prefix" do
|
|
53
|
+
expect_exception('require_loaded_underscore_widget_without_views', 'LoadError', /(cannot load such file|no such file to load)/)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should not let me 'require' files in app/views with a views/ prefix" do
|
|
57
|
+
expect_exception('require_loaded_underscore_widget_with_views', 'LoadError', /(cannot load such file|no such file to load)/)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should let me render a widget defined outside of app/views/ if I use render :widget" do
|
|
61
|
+
expect_match('render_widget_outside_app_views', /arbitrary_name_some_widget/)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
describe "Rails complex helper support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :complex_helpers_system_spec
|
|
3
|
+
|
|
4
|
+
it "should render form_for correctly" do
|
|
5
|
+
expect_match("form_for_test",
|
|
6
|
+
%r{OUTSIDE_BEFORE\s*<form.*action=\"/complex_helpers_system_spec/form_for_test\".*
|
|
7
|
+
INSIDE_BEFORE\s*
|
|
8
|
+
FIRST:\s*<input.*person_first_name.*/>\s*
|
|
9
|
+
LAST:\s*<input.*person_last_name.*/>\s*
|
|
10
|
+
INSIDE_AFTER\s*
|
|
11
|
+
</form>\s*
|
|
12
|
+
OUTSIDE_AFTER}mix)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should render fields_for correctly" do
|
|
16
|
+
expect_match("fields_for_test",
|
|
17
|
+
%r{OUTSIDE_BEFORE\s*
|
|
18
|
+
INSIDE_BEFORE\s*
|
|
19
|
+
FIRST:\s*<input.*person_first_name.*/>\s*
|
|
20
|
+
LAST:\s*<input.*person_last_name.*/>\s*
|
|
21
|
+
INSIDE_AFTER\s*
|
|
22
|
+
OUTSIDE_AFTER}mix)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should cache based on a name properly" do
|
|
26
|
+
expect_match("cache_test?a=a1&b=b1",
|
|
27
|
+
/before_cache\(a1,b1\).*inside_cache\(a1,b1\).*after_cache\(a1,b1\)/mi)
|
|
28
|
+
expect_match("cache_test?a=a1&b=b2",
|
|
29
|
+
/before_cache\(a1,b2\).*inside_cache\(a1,b1\).*after_cache\(a1,b2\)/mi)
|
|
30
|
+
expect_match("cache_test?a=a2&b=b2",
|
|
31
|
+
/before_cache\(a2,b2\).*inside_cache\(a2,b2\).*after_cache\(a2,b2\)/mi)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
describe "Rails data-passing support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :data_passing_system_spec
|
|
3
|
+
|
|
4
|
+
it "should allow passing data to the widget through controller variables" do
|
|
5
|
+
expect_match("passing_data_widget", /foo is: the_foo/, /bar is: and_bar/)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should not fail if the controller provides more data than it needs" do
|
|
9
|
+
expect_match("extra_data_widget", /foo is: the_foo/, /bar is: and_bar/)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should allow passing data to the widget through :locals => { ... }" do
|
|
13
|
+
expect_match("passing_locals_widget", /foo is: local_foo/, /bar is: local_bar/)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should merge locals and controller variables, with locals winning" do
|
|
17
|
+
expect_match("passing_locals_and_controller_variables_widget", /foo is: controller_foo/, /bar is: local_bar/, /baz is: local_baz/)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should give you a reasonable error if you omit a variable" do
|
|
21
|
+
expect_exception('omitted_variable', 'Fortitude::Errors::MissingNeed', /bar/)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should not propagate un-needed variables" do
|
|
25
|
+
expect_match("extra_variables", /foo method call: the_foo/, /foo instance var: nil/,
|
|
26
|
+
/bar method call: NoMethodError/, /bar instance var: nil/,
|
|
27
|
+
/baz method call: NoMethodError/, /baz instance var: nil/)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should propagate un-needed variables, if asked" do
|
|
31
|
+
expect_match("extra_variables_requested", /foo method call: the_foo/, /foo instance var: nil/,
|
|
32
|
+
/bar method call: the_bar/, /bar instance var: nil/,
|
|
33
|
+
/baz method call: the_baz/, /baz instance var: nil/)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should not propagate a controller variable through a view to a child widget without being explicitly passed" do
|
|
37
|
+
expect_exception('parent_to_child_passing', 'Fortitude::Errors::MissingNeed', /foo/)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should propagate a controller variable through a view to a child widget without being explicitly passed, if invoked using render :partial" do
|
|
41
|
+
expect_match('parent_to_child_passing_partial', /parent before.*foo: the_foo.*parent after/)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should let a widget read a controller variable explicitly, as a Symbol or a String" do
|
|
45
|
+
expect_match("explicit_controller_variable_read", /explicit foo as symbol: the_foo/)
|
|
46
|
+
expect_match("explicit_controller_variable_read", /explicit foo as string: the_foo/)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should let a widget read a controller variable set by an earlier ERb view" do
|
|
50
|
+
expect_match("erb_to_parallel_widget_handoff", /widget foo: foo_from_erb/)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should let a widget write a controller variable that a later ERb view can read" do
|
|
54
|
+
expect_match("widget_to_parallel_erb_handoff", /erb foo: foo_from_widget/)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "should let both controller variables and locals get picked up by the layout, as well as the view" do
|
|
58
|
+
expect_match("variables_to_layout", /widget_default_layout: foo = the_foo, bar = the_bar.*widget foo: the_foo, widget bar: the_bar/, :no_layout => true)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "backwards-compatible instance-variable mode" do
|
|
62
|
+
it "should let a widget read a controller variable implicitly" do
|
|
63
|
+
expect_match("implicit_variable_read", /inner widget foo: foo_from_controller/)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should let a widget write a controller variable implicitly" do
|
|
67
|
+
expect_match("implicit_variable_write", /erb foo: foo_from_widget/)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "should let a widget read a controller variable set by an earlier ERb view" do
|
|
71
|
+
expect_match("implicit_erb_to_widget_handoff", /widget foo: foo_from_erb/)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should not enable access to local variables via @foo directly" do
|
|
75
|
+
expect_match("implicit_shared_variable_access", /foo: nil/)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should inherit the setting for implicit_shared_variable_access properly" do
|
|
79
|
+
expect_match("implicit_shared_variable_access_inheritance", /C1: foo is , bar is .*C2: foo is the_foo, bar is the_bar/mi)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should have the same set of copied variables for ERb and a widget" do
|
|
83
|
+
widget_copied_variables = JSON.parse(get('widget_copied_variables'))['widget_copied_variables'].sort
|
|
84
|
+
erb_copied_variables = JSON.parse(get('erb_copied_variables'))['erb_copied_variables'].sort
|
|
85
|
+
|
|
86
|
+
common = widget_copied_variables & erb_copied_variables
|
|
87
|
+
extra_widget = widget_copied_variables - erb_copied_variables
|
|
88
|
+
missing_widget = erb_copied_variables - widget_copied_variables
|
|
89
|
+
|
|
90
|
+
extra_widget = extra_widget.reject { |v| v =~ /^@_fortitude_/i }
|
|
91
|
+
|
|
92
|
+
expect(extra_widget).to eq([ ])
|
|
93
|
+
expect(missing_widget).to eq([ ])
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
describe "Rails default layout support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :default_layout_system_spec
|
|
3
|
+
|
|
4
|
+
it "should let you use a default layout that's a widget, and render ERb inside it" do
|
|
5
|
+
data = get("erb_with_widget_default_layout")
|
|
6
|
+
data.should match(/widget_default_layout/i)
|
|
7
|
+
data.should match(/erb_with_widget_default_layout/i)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should let you use a default layout that's a widget, and render a widget inside it" do
|
|
11
|
+
data = get("widget_with_widget_default_layout")
|
|
12
|
+
data.should match(/widget_default_layout/i)
|
|
13
|
+
data.should match(/widget_with_widget_default_layout/i)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
describe "Rails development-mode support", :type => :rails do
|
|
2
|
+
uses_rails_with_template :development_mode_system_spec, :rails_env => :development
|
|
3
|
+
|
|
4
|
+
it "should automatically reload widgets if they change on disk" do
|
|
5
|
+
expect_match("reload_widget", /before_reload/)
|
|
6
|
+
# The sleep is unfortunate, but required: without it, Rails will not necessarily pick up our change,
|
|
7
|
+
# especially if we run multiple tests back-to-back. (There's a maximum frequency at which Rails can
|
|
8
|
+
# detect distinct file changes on disk, which on the order of 1 Hz -- i.e., once a second; any more
|
|
9
|
+
# than this and it fails. This is irrelevant for human-centered development, but important for
|
|
10
|
+
# tests like this.)
|
|
11
|
+
sleep 1
|
|
12
|
+
splat_new_widget!
|
|
13
|
+
expect_match("reload_widget", /after_reload/)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should let you change the controller, and that should work fine, too" do
|
|
17
|
+
expect_match("reload_widget", /datum\s+one\s+datum/)
|
|
18
|
+
sleep 1
|
|
19
|
+
splat_new_controller!
|
|
20
|
+
expect_match("reload_widget", /datum\s+two\s+datum/)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should, by default, format output" do
|
|
24
|
+
expect_match("sample_output", %r{<section class="one">
|
|
25
|
+
<p>hello, Jessica</p>
|
|
26
|
+
</section>}mi)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should, by default, output BEGIN/END debugging tags" do
|
|
30
|
+
expect_match("sample_output", %r{<!-- BEGIN Views::DevelopmentModeSystemSpec::SampleOutput depth 0: :name => "Jessica" -->
|
|
31
|
+
.*
|
|
32
|
+
<!-- END Views::DevelopmentModeSystemSpec::SampleOutput depth 0 -->}mi)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
def splat_new_widget!
|
|
37
|
+
reload_file = File.join(rails_server.rails_root, 'app/views/development_mode_system_spec/reload_widget.rb')
|
|
38
|
+
File.open(reload_file, 'w') do |f|
|
|
39
|
+
f.puts <<-EOS
|
|
40
|
+
class Views::DevelopmentModeSystemSpec::ReloadWidget < Fortitude::Widgets::Html5
|
|
41
|
+
needs :datum
|
|
42
|
+
|
|
43
|
+
def content
|
|
44
|
+
p "after_reload: datum \#{datum} datum"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
EOS
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def splat_new_controller!
|
|
52
|
+
controller_file = File.join(rails_server.rails_root, 'app/controllers/development_mode_system_spec_controller.rb')
|
|
53
|
+
File.open(controller_file, 'w') do |f|
|
|
54
|
+
f.puts <<-EOS
|
|
55
|
+
class DevelopmentModeSystemSpecController < ApplicationController
|
|
56
|
+
def reload_widget
|
|
57
|
+
@datum = "two"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def sample_output
|
|
61
|
+
@name = "Jessica"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
EOS
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|