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.
Files changed (332) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec-local +4 -0
  4. data/.travis.yml +26 -0
  5. data/Gemfile +5 -0
  6. data/LICENSE.txt +22 -0
  7. data/README-erector.md +246 -0
  8. data/README.md +15 -0
  9. data/Rakefile +67 -0
  10. data/ext/FortitudeJrubyNativeExtService.java +11 -0
  11. data/ext/com/fortituderuby/ext/fortitude/FortitudeNativeLibrary.java +223 -0
  12. data/ext/fortitude_native_ext/extconf.rb +4 -0
  13. data/ext/fortitude_native_ext/fortitude_native_ext.c +333 -0
  14. data/fortitude.gemspec +37 -0
  15. data/lib/fortitude/assign_locals_from_template.rb.smpl +22 -0
  16. data/lib/fortitude/assigns_proxy.rb +75 -0
  17. data/lib/fortitude/class_inheritable_attributes.rb +96 -0
  18. data/lib/fortitude/doctypes/base.rb +38 -0
  19. data/lib/fortitude/doctypes/html4.rb +20 -0
  20. data/lib/fortitude/doctypes/html4_frameset.rb +18 -0
  21. data/lib/fortitude/doctypes/html4_strict.rb +17 -0
  22. data/lib/fortitude/doctypes/html4_tags_frameset.rb +52 -0
  23. data/lib/fortitude/doctypes/html4_tags_strict.rb +273 -0
  24. data/lib/fortitude/doctypes/html4_tags_transitional.rb +114 -0
  25. data/lib/fortitude/doctypes/html4_transitional.rb +18 -0
  26. data/lib/fortitude/doctypes/html5.rb +372 -0
  27. data/lib/fortitude/doctypes/unknown_doctype.rb +19 -0
  28. data/lib/fortitude/doctypes/xhtml10.rb +19 -0
  29. data/lib/fortitude/doctypes/xhtml10_frameset.rb +17 -0
  30. data/lib/fortitude/doctypes/xhtml10_strict.rb +17 -0
  31. data/lib/fortitude/doctypes/xhtml10_transitional.rb +17 -0
  32. data/lib/fortitude/doctypes/xhtml11.rb +29 -0
  33. data/lib/fortitude/doctypes.rb +46 -0
  34. data/lib/fortitude/errors.rb +153 -0
  35. data/lib/fortitude/fortitude_ruby_ext.rb +71 -0
  36. data/lib/fortitude/instance_variable_set.rb +74 -0
  37. data/lib/fortitude/need_assignment_template.rb.smpl +16 -0
  38. data/lib/fortitude/need_method_template.rb.smpl +4 -0
  39. data/lib/fortitude/non_rails_widget_methods.rb +15 -0
  40. data/lib/fortitude/partial_tag_placeholder.rb +17 -0
  41. data/lib/fortitude/rails/helpers.rb +153 -0
  42. data/lib/fortitude/rails/renderer.rb +43 -0
  43. data/lib/fortitude/rails/template_handler.rb +23 -0
  44. data/lib/fortitude/rails/widget_methods.rb +17 -0
  45. data/lib/fortitude/rails/yielded_object_outputter.rb +31 -0
  46. data/lib/fortitude/railtie.rb +254 -0
  47. data/lib/fortitude/rendering_context.rb +205 -0
  48. data/lib/fortitude/simple_template.rb +45 -0
  49. data/lib/fortitude/staticized_method.rb +85 -0
  50. data/lib/fortitude/tag.rb +162 -0
  51. data/lib/fortitude/tag_method_template.rb.smpl +68 -0
  52. data/lib/fortitude/tag_return_value.rb +11 -0
  53. data/lib/fortitude/tag_store.rb +48 -0
  54. data/lib/fortitude/tag_support.rb +48 -0
  55. data/lib/fortitude/tags_module.rb +14 -0
  56. data/lib/fortitude/text_method_template.rb.smpl +17 -0
  57. data/lib/fortitude/tilt/fortitude_template.rb +169 -0
  58. data/lib/fortitude/version.rb +3 -0
  59. data/lib/fortitude/widget.rb +904 -0
  60. data/lib/fortitude/widgets/html4_frameset.rb +9 -0
  61. data/lib/fortitude/widgets/html4_strict.rb +9 -0
  62. data/lib/fortitude/widgets/html4_transitional.rb +9 -0
  63. data/lib/fortitude/widgets/html5.rb +9 -0
  64. data/lib/fortitude/widgets/xhtml10_frameset.rb +9 -0
  65. data/lib/fortitude/widgets/xhtml10_strict.rb +9 -0
  66. data/lib/fortitude/widgets/xhtml10_transitional.rb +9 -0
  67. data/lib/fortitude/widgets/xhtml11.rb +9 -0
  68. data/lib/fortitude.rb +93 -0
  69. data/lib/fortitude_jruby_native_ext.jar +0 -0
  70. data/spec/helpers/global_helper.rb +8 -0
  71. data/spec/helpers/rails_helpers.rb +85 -0
  72. data/spec/helpers/rails_server.rb +386 -0
  73. data/spec/helpers/system_helpers.rb +117 -0
  74. data/spec/rails/basic_rails_system_spec.rb +7 -0
  75. data/spec/rails/capture_system_spec.rb +75 -0
  76. data/spec/rails/class_loading_system_spec.rb +63 -0
  77. data/spec/rails/complex_helpers_system_spec.rb +33 -0
  78. data/spec/rails/data_passing_system_spec.rb +96 -0
  79. data/spec/rails/default_layout_system_spec.rb +15 -0
  80. data/spec/rails/development_mode_system_spec.rb +67 -0
  81. data/spec/rails/erb_integration_system_spec.rb +23 -0
  82. data/spec/rails/helpers_include_all_off_system_spec.rb +7 -0
  83. data/spec/rails/helpers_system_spec.rb +79 -0
  84. data/spec/rails/helpers_unrefined_system_spec.rb +7 -0
  85. data/spec/rails/layouts_system_spec.rb +60 -0
  86. data/spec/rails/localization_system_spec.rb +38 -0
  87. data/spec/rails/production_mode_system_spec.rb +13 -0
  88. data/spec/rails/rendering_context_system_spec.rb +64 -0
  89. data/spec/rails/rendering_system_spec.rb +158 -0
  90. data/spec/rails/rules_system_spec.rb +23 -0
  91. data/spec/rails/static_method_system_spec.rb +12 -0
  92. data/spec/rails/templates/base/app/controllers/application_controller.rb +15 -0
  93. data/spec/rails/templates/base/app/controllers/working_controller.rb +5 -0
  94. data/spec/rails/templates/base/app/views/layouts/application.html.erb +11 -0
  95. data/spec/rails/templates/base/config/routes.rb +4 -0
  96. data/spec/rails/templates/base/config/secrets.yml +22 -0
  97. data/spec/rails/templates/basic_rails_system_spec/app/controllers/basic_rails_system_spec_controller.rb +8 -0
  98. data/spec/rails/templates/basic_rails_system_spec/app/views/basic_rails_system_spec/trivial_widget.rb +5 -0
  99. data/spec/rails/templates/capture_system_spec/app/controllers/capture_system_spec_controller.rb +37 -0
  100. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/_some_erb_partial.html.erb +1 -0
  101. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/another_widget.rb +7 -0
  102. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_erb_from_widget.rb +11 -0
  103. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_widget_from_erb.html.erb +9 -0
  104. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_widget_from_widget.rb +17 -0
  105. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/some_widget.rb +5 -0
  106. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_content_for.rb +19 -0
  107. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_layout_needing_content_yield_with_erb.html.erb +13 -0
  108. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_provide.rb +13 -0
  109. data/spec/rails/templates/capture_system_spec/app/views/layouts/erb_layout_needing_content.html.erb +15 -0
  110. data/spec/rails/templates/capture_system_spec/app/views/layouts/widget_layout_needing_content_content_for.rb +23 -0
  111. data/spec/rails/templates/capture_system_spec/app/views/layouts/widget_layout_needing_content_yield.rb +23 -0
  112. data/spec/rails/templates/class_loading_system_spec/app/controllers/class_loading_system_spec_controller.rb +74 -0
  113. data/spec/rails/templates/class_loading_system_spec/app/models/views/app_models_helper.rb +5 -0
  114. data/spec/rails/templates/class_loading_system_spec/app/models/views/models_widget.rb +5 -0
  115. data/spec/rails/templates/class_loading_system_spec/app/views/autoload_namespace/autoload_widget.rb +11 -0
  116. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_loaded_underscore_widget.rb +11 -0
  117. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_underscore_view.rb +5 -0
  118. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_underscore_widget.rb +11 -0
  119. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/app_models.rb +6 -0
  120. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/autoload_one_widget_from_another.rb +7 -0
  121. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/class_should_not_load.rb +9 -0
  122. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/lib_views.rb +8 -0
  123. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/use_lib_widget_from_view_widget.rb +9 -0
  124. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/use_models_widget_from_view_widget.rb +7 -0
  125. data/spec/rails/templates/class_loading_system_spec/app/views/some_namespace/some_other_namespace/.git_keep +0 -0
  126. data/spec/rails/templates/class_loading_system_spec/app/views/sub_widget.rb +5 -0
  127. data/spec/rails/templates/class_loading_system_spec/lib/arbitrary_name/some_widget.rb +7 -0
  128. data/spec/rails/templates/class_loading_system_spec/lib/views/class_loading_system_spec/lib_views_helper.rb +5 -0
  129. data/spec/rails/templates/class_loading_system_spec/lib/views/class_loading_system_spec/widget_defined_outside_app_views.rb +5 -0
  130. data/spec/rails/templates/class_loading_system_spec/lib/views/lib_widget.rb +5 -0
  131. data/spec/rails/templates/complex_helpers_system_spec/app/controllers/complex_helpers_system_spec_controller.rb +14 -0
  132. data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/cache_test.rb +12 -0
  133. data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/fields_for_test.rb +14 -0
  134. data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/form_for_test.rb +14 -0
  135. data/spec/rails/templates/complex_helpers_system_spec/config/environments/development.rb +31 -0
  136. data/spec/rails/templates/data_passing_system_spec/app/controllers/data_passing_system_spec_controller.rb +101 -0
  137. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_erb_to_parallel_widget_handoff_erb.html.erb +3 -0
  138. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_implicit_erb_to_widget_handoff_erb.html.erb +3 -0
  139. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_implicit_variable_write_erb.html.erb +1 -0
  140. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_widget_to_parallel_erb_handoff_erb.html.erb +1 -0
  141. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_copied_variables.html.erb +1 -0
  142. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_to_parallel_widget_handoff.html.erb +2 -0
  143. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_to_parallel_widget_handoff_widget.rb +5 -0
  144. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/explicit_controller_variable_read.rb +6 -0
  145. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/extra_variables.rb +23 -0
  146. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/extra_variables_requested.rb +24 -0
  147. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_erb_to_widget_handoff.html.erb +2 -0
  148. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_erb_to_widget_handoff_widget.rb +7 -0
  149. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access.rb +5 -0
  150. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance.rb +6 -0
  151. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_child_one.rb +7 -0
  152. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_child_two.rb +5 -0
  153. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_parent.rb +3 -0
  154. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inner.rb +8 -0
  155. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_read.rb +5 -0
  156. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_read_inner.rb +7 -0
  157. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_write.html.erb +2 -0
  158. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_write_widget.rb +7 -0
  159. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing.rb +7 -0
  160. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_child.rb +7 -0
  161. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_partial.rb +7 -0
  162. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_partial_child.rb +7 -0
  163. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_data_widget.rb +8 -0
  164. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_locals_and_controller_variables_widget.rb +9 -0
  165. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_locals_widget.rb +8 -0
  166. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/variables_to_layout.rb +7 -0
  167. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_copied_variables.rb +9 -0
  168. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_to_parallel_erb_handoff.html.erb +2 -0
  169. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_to_parallel_erb_handoff_widget.rb +5 -0
  170. data/spec/rails/templates/data_passing_system_spec/app/views/layouts/data_layout.rb +14 -0
  171. data/spec/rails/templates/default_layout_system_spec/app/controllers/default_layout_system_spec_controller.rb +9 -0
  172. data/spec/rails/templates/default_layout_system_spec/app/views/default_layout_system_spec/erb_with_widget_default_layout.html.erb +1 -0
  173. data/spec/rails/templates/default_layout_system_spec/app/views/default_layout_system_spec/widget_with_widget_default_layout.rb +5 -0
  174. data/spec/rails/templates/default_layout_system_spec/app/views/layouts/application.rb +12 -0
  175. data/spec/rails/templates/development_mode_system_spec/app/controllers/development_mode_system_spec_controller.rb +9 -0
  176. data/spec/rails/templates/development_mode_system_spec/app/views/development_mode_system_spec/reload_widget.rb +7 -0
  177. data/spec/rails/templates/development_mode_system_spec/app/views/development_mode_system_spec/sample_output.rb +9 -0
  178. data/spec/rails/templates/erb_integration_system_spec/app/controllers/erb_integration_system_spec_controller.rb +10 -0
  179. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_erb_partial_from_widget_partial.html.erb +1 -0
  180. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_fortitude_partial_with_underscore_partial.rb +5 -0
  181. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_prefers_erb_partial_partial.html.erb +1 -0
  182. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_partial_from_widget.rb +7 -0
  183. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_to_widget_with_render_partial.html.erb +3 -0
  184. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_to_widget_with_render_partial_widget.rb +5 -0
  185. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/fortitude_partial_with_underscore.html.erb +3 -0
  186. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/prefers_erb_partial.html.erb +3 -0
  187. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/prefers_erb_partial_partial.rb +5 -0
  188. data/spec/rails/templates/helpers_include_all_off_system_spec/app/controllers/helpers_include_all_off_system_spec_controller.rb +13 -0
  189. data/spec/rails/templates/helpers_include_all_off_system_spec/app/helpers/application_helper.rb +5 -0
  190. data/spec/rails/templates/helpers_include_all_off_system_spec/app/helpers/some_helper.rb +5 -0
  191. data/spec/rails/templates/helpers_include_all_off_system_spec/app/views/helpers_include_all_off_system_spec/include_all_off.rb +23 -0
  192. data/spec/rails/templates/helpers_include_all_off_system_spec/config/application.rb +28 -0
  193. data/spec/rails/templates/helpers_system_spec/app/controllers/helpers_system_spec_controller.rb +86 -0
  194. data/spec/rails/templates/helpers_system_spec/app/helpers/some_helper.rb +21 -0
  195. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_disabled.rb +37 -0
  196. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance.rb +6 -0
  197. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_child_one.rb +34 -0
  198. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_child_two.rb +36 -0
  199. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_parent.rb +4 -0
  200. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/basic_helpers.rb +13 -0
  201. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/block_helpers.rb +7 -0
  202. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_outputting_helpers.rb +13 -0
  203. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_outputting_to_returning.rb +8 -0
  204. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_returning_to_outputting.rb +10 -0
  205. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/controller_helper_method.rb +5 -0
  206. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/controller_helper_module.rb +5 -0
  207. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helper_outputs.rb +6 -0
  208. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helpers_basic.rb +5 -0
  209. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helpers_with_a_block.rb +6 -0
  210. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_outputting_to_returning.rb +7 -0
  211. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_returning_to_outputting.rb +10 -0
  212. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helper_settings_inheritance.rb +10 -0
  213. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helper_settings_inheritance_parent.rb +4 -0
  214. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helpers_that_output_when_refined.rb +9 -0
  215. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/private_helper_erb.html.erb +1 -0
  216. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/private_helper_fortitude.rb +5 -0
  217. data/spec/rails/templates/helpers_system_spec/lib/some_stuff.rb +5 -0
  218. data/spec/rails/templates/helpers_unrefined_system_spec/app/controllers/helpers_unrefined_system_spec_controller.rb +7 -0
  219. data/spec/rails/templates/helpers_unrefined_system_spec/app/views/helpers_unrefined_system_spec/helpers_that_output_when_refined.rb +9 -0
  220. data/spec/rails/templates/helpers_unrefined_system_spec/config/environments/production.rb +31 -0
  221. data/spec/rails/templates/layouts_system_spec/app/controllers/layouts_system_spec_controller.rb +31 -0
  222. data/spec/rails/templates/layouts_system_spec/app/views/layouts/alternate.html.erb +11 -0
  223. data/spec/rails/templates/layouts_system_spec/app/views/layouts/application.html.erb +26 -0
  224. data/spec/rails/templates/layouts_system_spec/app/views/layouts/explicit_yield.rb +12 -0
  225. data/spec/rails/templates/layouts_system_spec/app/views/layouts/widget_layout.rb +22 -0
  226. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/erb_inside_widget_layout.html.erb +8 -0
  227. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/the_render_widget.rb +5 -0
  228. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/widget_inside_erb_layout.rb +8 -0
  229. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/widget_inside_widget_layout.rb +8 -0
  230. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/yield_from_widget_explicitly.rb +5 -0
  231. data/spec/rails/templates/localization_system_spec/app/controllers/localization_system_spec_controller.rb +31 -0
  232. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/content_method.rb +13 -0
  233. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/dot_notation.rb +5 -0
  234. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/explicit_html.rb +13 -0
  235. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/i18n_t.rb +5 -0
  236. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/native_support.rb +7 -0
  237. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/readjust_base.rb +7 -0
  238. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/t.rb +5 -0
  239. data/spec/rails/templates/localization_system_spec/config/locales/en.yml +21 -0
  240. data/spec/rails/templates/localization_system_spec/config/locales/fr.yml +14 -0
  241. data/spec/rails/templates/localization_system_spec/config/locales/pt.yml +2 -0
  242. data/spec/rails/templates/production_mode_system_spec/app/controllers/production_mode_system_spec_controller.rb +5 -0
  243. data/spec/rails/templates/production_mode_system_spec/app/views/production_mode_system_spec/sample_output.rb +9 -0
  244. data/spec/rails/templates/rendering_context_system_spec/app/controllers/rendering_context_system_spec_controller.rb +72 -0
  245. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_start_end_widget_through_partials_partial.html.erb +1 -0
  246. 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
  247. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_uses_specified_context_through_nesting_partial.html.erb +2 -0
  248. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/render_widget.rb +5 -0
  249. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_basic.rb +12 -0
  250. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_basic_inner.rb +7 -0
  251. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_through_partials.rb +16 -0
  252. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_through_partials_partial_widget.rb +7 -0
  253. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_for_all_widgets.rb +7 -0
  254. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_for_all_widgets_widget.rb +5 -0
  255. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_in_view.rb +5 -0
  256. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_partials.html.erb +3 -0
  257. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_partials_partial.rb +5 -0
  258. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_view.rb +5 -0
  259. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_through_nesting.rb +6 -0
  260. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_through_nesting_inner_partial.rb +5 -0
  261. data/spec/rails/templates/rendering_context_system_spec/lib/simple_rc.rb +17 -0
  262. data/spec/rails/templates/rendering_system_spec/app/controllers/rendering_system_spec_controller.rb +111 -0
  263. data/spec/rails/templates/rendering_system_spec/app/views/layouts/application.html.erb +19 -0
  264. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/_layout_for_partial.html.erb +3 -0
  265. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/_the_partial.html.erb +1 -0
  266. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/partial_with_layout.rb +5 -0
  267. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_collection.html.erb +3 -0
  268. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_collection_as.html.erb +3 -0
  269. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_file_from_widget.rb +7 -0
  270. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_html_safe_strings.rb +16 -0
  271. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_inline_from_widget.rb +11 -0
  272. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_object.html.erb +3 -0
  273. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_from_widget.rb +7 -0
  274. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_with_layout.html.erb +3 -0
  275. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_with_widget_layout.html.erb +3 -0
  276. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_template_from_widget.rb +7 -0
  277. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_text_from_widget.rb +7 -0
  278. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/stream_widget.rb +13 -0
  279. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/trivial_widget.rb +5 -0
  280. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/widget_layout_for_partial.rb +7 -0
  281. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/widget_with_name.rb +7 -0
  282. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/word.rb +7 -0
  283. data/spec/rails/templates/rendering_system_spec/app/views/widget_to_render.rb +7 -0
  284. data/spec/rails/templates/rules_system_spec/app/controllers/rules_system_spec_controller.rb +22 -0
  285. data/spec/rails/templates/rules_system_spec/app/views/layouts/fortitude_layout_with_p.rb +19 -0
  286. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/_intervening_partial_erb_partial.html.erb +1 -0
  287. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/intervening_partial.rb +9 -0
  288. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/intervening_partial_fortitude_partial.rb +9 -0
  289. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_partial.html.erb +3 -0
  290. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_partial_partial.rb +9 -0
  291. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_view.rb +9 -0
  292. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag.rb +11 -0
  293. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag_in_partial.html.erb +3 -0
  294. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag_in_partial_partial.rb +11 -0
  295. data/spec/rails/templates/static_method_system_spec/app/controllers/static_method_system_spec_controller.rb +15 -0
  296. data/spec/rails/templates/static_method_system_spec/app/helpers/some_helper.rb +10 -0
  297. data/spec/rails/templates/static_method_system_spec/app/views/static_method_system_spec/allows_helper_access.rb +8 -0
  298. data/spec/rails/templates/static_method_system_spec/app/views/static_method_system_spec/localization.rb +7 -0
  299. data/spec/rails/templates/static_method_system_spec/config/locales/en.yml +4 -0
  300. data/spec/rails/templates/static_method_system_spec/config/locales/fr.yml +4 -0
  301. data/spec/system/around_content_system_spec.rb +399 -0
  302. data/spec/system/assigns_system_spec.rb +316 -0
  303. data/spec/system/attribute_rules_system_spec.rb +227 -0
  304. data/spec/system/basic_system_spec.rb +9 -0
  305. data/spec/system/content_inheritance_system_spec.rb +13 -0
  306. data/spec/system/convenience_methods_system_spec.rb +30 -0
  307. data/spec/system/doctypes_system_spec.rb +213 -0
  308. data/spec/system/erector_compatibility_system_spec.rb +84 -0
  309. data/spec/system/escaping_system_spec.rb +43 -0
  310. data/spec/system/formatting_system_spec.rb +63 -0
  311. data/spec/system/helpers_system_spec.rb +235 -0
  312. data/spec/system/id_uniqueness_system_spec.rb +205 -0
  313. data/spec/system/localization_system_spec.rb +94 -0
  314. data/spec/system/method_precedence_system_spec.rb +48 -0
  315. data/spec/system/needs_system_spec.rb +368 -0
  316. data/spec/system/other_outputters_system_spec.rb +117 -0
  317. data/spec/system/rails_not_available_spec.rb +11 -0
  318. data/spec/system/rebuild_notifications_system_spec.rb +208 -0
  319. data/spec/system/rendering_context_system_spec.rb +83 -0
  320. data/spec/system/setting_inheritance_system_spec.rb +585 -0
  321. data/spec/system/shared_variable_system_spec.rb +120 -0
  322. data/spec/system/start_end_comments_system_spec.rb +363 -0
  323. data/spec/system/static_method_system_spec.rb +348 -0
  324. data/spec/system/tag_rendering_system_spec.rb +253 -0
  325. data/spec/system/tag_return_value_system_spec.rb +41 -0
  326. data/spec/system/tag_rules_system_spec.rb +196 -0
  327. data/spec/system/tag_updating_system_spec.rb +171 -0
  328. data/spec/system/tilt_system_spec.rb +378 -0
  329. data/spec/system/unparsed_data_system_spec.rb +16 -0
  330. data/spec/system/void_tags_system_spec.rb +51 -0
  331. data/spec/system/widget_return_values_system_spec.rb +89 -0
  332. metadata +736 -0
@@ -0,0 +1,585 @@
1
+ describe "Fortitude setting inheritance", :type => :system do
2
+ # The settings we test here:
3
+ # - extra_assigns
4
+ # - automatic_helper_access
5
+ # - implicit_shared_variable_access
6
+ # - use_instance_variables_for_assigns
7
+ # - format_output
8
+ # - enforce_element_nesting_rules
9
+ # - enforce_attribute_rules
10
+ # - start_and_end_comments
11
+ # - translation_base
12
+ # - enforce_id_uniqueness
13
+ # - debug
14
+ #
15
+ # needs are covered by the needs_system_spec, and around_content is covered by the around_content_system_spec;
16
+ # these are not tested here because their semantics are quite a bit more complex than the settings here.
17
+
18
+ def translation_base_should_be(expected_result, *klasses)
19
+ klasses.each do |klass|
20
+ expect(klass.translation_base).to eq(expected_result)
21
+ send("translation_base_should_be_for_class", expected_result, klass)
22
+ end
23
+ end
24
+
25
+ def translation_base_should_be_for_class(expected_result, klass)
26
+ expect(klass.translation_base).to eq(expected_result)
27
+ ho_class = Class.new do
28
+ def t(x)
29
+ "translation_for:#{x}"
30
+ end
31
+ end
32
+ ho = ho_class.new
33
+
34
+ rendering_context = rc(:helpers_object => ho)
35
+ expect(render(klass, :rendering_context => rendering_context)).to eq("translation: translation_for:#{expected_result}.foo.bar.baz")
36
+ end
37
+
38
+
39
+ def enforce_id_uniqueness_should_be(expected_result, *klasses)
40
+ klasses.each do |klass|
41
+ expect(klass.enforce_id_uniqueness).to eq(expected_result)
42
+ send("enforce_id_uniqueness_should_be_#{expected_result}", klass)
43
+ end
44
+ end
45
+
46
+ def enforce_id_uniqueness_should_be_true(klass)
47
+ expect { render(klass) }.to raise_error(Fortitude::Errors::DuplicateId)
48
+ end
49
+
50
+ def enforce_id_uniqueness_should_be_false(klass)
51
+ expect(render(klass)).to eq('<p id="foo"/><p id="foo"/>')
52
+ end
53
+
54
+
55
+ def start_and_end_comments_should_be(expected_result, *klasses)
56
+ klasses.each do |klass|
57
+ expect(klass.start_and_end_comments).to eq(expected_result)
58
+ send("start_and_end_comments_should_be_#{expected_result}", klass)
59
+ end
60
+ end
61
+
62
+ def start_and_end_comments_should_be_true(klass)
63
+ result = render(klass)
64
+ if result =~ /^(.*BEGIN?)\s*\S+\s*(depth.*END)\s*\S+\s*(depth.*)$/i
65
+ expect($1).to eq("<!-- BEGIN")
66
+ expect($2).to eq("depth 0: :baz => (DEFAULT) \"default_baz\" --><p/><!-- END")
67
+ expect($3).to eq("depth 0 -->")
68
+ else
69
+ raise "result does not match expected pattern: #{result.inspect}"
70
+ end
71
+ end
72
+
73
+ def start_and_end_comments_should_be_false(klass)
74
+ expect(render(klass)).to eq("<p/>")
75
+ end
76
+
77
+
78
+ def debug_should_be(expected_result, *klasses)
79
+ klasses.each do |klass|
80
+ expect(klass.debug).to eq(expected_result)
81
+ send("debug_should_be_#{expected_result}", klass)
82
+ end
83
+ end
84
+
85
+ def debug_should_be_true(klass)
86
+ expect { render(klass) }.to raise_error(Fortitude::Errors::BlockPassedToNeedMethod)
87
+ end
88
+
89
+ def debug_should_be_false(klass)
90
+ expect(render(klass)).to eq("p is: abc")
91
+ end
92
+
93
+
94
+ def enforce_attribute_rules_should_be(expected_result, *klasses)
95
+ klasses.each do |klass|
96
+ expect(klass.enforce_attribute_rules).to eq(expected_result)
97
+ send("enforce_attribute_rules_should_be_#{expected_result}", klass)
98
+ end
99
+ end
100
+
101
+ def enforce_attribute_rules_should_be_true(klass)
102
+ expect { render(klass) }.to raise_error(Fortitude::Errors::InvalidElementAttributes)
103
+ end
104
+
105
+ def enforce_attribute_rules_should_be_false(klass)
106
+ expect(render(klass)).to eq("<p foo=\"bar\"/>")
107
+ end
108
+
109
+
110
+ def close_void_tags_should_be(expected_result, *klasses)
111
+ klasses.each do |klass|
112
+ expect(klass.close_void_tags).to eq(expected_result)
113
+ send("close_void_tags_should_be_#{expected_result}", klass)
114
+ end
115
+ end
116
+
117
+ def close_void_tags_should_be_true(klass)
118
+ expect(render(klass)).to eq("<br/>")
119
+ end
120
+
121
+ def close_void_tags_should_be_false(klass)
122
+ expect(render(klass)).to eq("<br>")
123
+ end
124
+
125
+
126
+ def enforce_element_nesting_rules_should_be(expected_result, *klasses)
127
+ klasses.each do |klass|
128
+ expect(klass.enforce_element_nesting_rules).to eq(expected_result)
129
+ send("enforce_element_nesting_rules_should_be_#{expected_result}", klass)
130
+ end
131
+ end
132
+
133
+ def enforce_element_nesting_rules_should_be_true(klass)
134
+ expect { render(klass) }.to raise_error(Fortitude::Errors::InvalidElementNesting)
135
+ end
136
+
137
+ def enforce_element_nesting_rules_should_be_false(klass)
138
+ expect(render(klass)).to eq("<p><div/></p>")
139
+ end
140
+
141
+
142
+ def format_output_should_be(expected_result, *klasses)
143
+ klasses.each do |klass|
144
+ expect(klass.format_output).to eq(expected_result)
145
+ send("format_output_should_be_#{expected_result}", klass)
146
+ end
147
+ end
148
+
149
+ def format_output_should_be_true(klass)
150
+ expect(render(klass)).to eq(%{<div>
151
+ <p>
152
+ <span class="foo"/>
153
+ </p>
154
+ </div>})
155
+ end
156
+
157
+ def format_output_should_be_false(klass)
158
+ expect(render(klass)).to eq('<div><p><span class="foo"/></p></div>')
159
+ end
160
+
161
+
162
+ def extra_assigns_should_be(expected_result, *klasses)
163
+ klasses.each do |klass|
164
+ expect(klass.extra_assigns).to eq(expected_result)
165
+ send("extra_assigns_should_be_#{expected_result}", klass)
166
+ end
167
+ end
168
+
169
+ def extra_assigns_should_be_use(klass)
170
+ expect(render(klass.new(:foo => 'the_foo'))).to match(/foo: the_foo/)
171
+ end
172
+
173
+ def extra_assigns_should_be_ignore(klass)
174
+ expect(render(klass.new(:foo => 'the_foo'))).to match(/foo: NameError/)
175
+ end
176
+
177
+ def extra_assigns_should_be_error(klass)
178
+ expect { klass.new(:foo => 'the_foo') }.to raise_error(Fortitude::Errors::ExtraAssigns)
179
+ end
180
+
181
+
182
+ def automatic_helper_access_should_be(expected_result, *klasses)
183
+ klasses.each do |klass|
184
+ expect(klass.automatic_helper_access).to eq(expected_result)
185
+ send("automatic_helper_access_should_be_#{expected_result}", klass)
186
+ end
187
+ end
188
+
189
+ def rc_for_automatic_helper_access
190
+ @aha_helpers_class ||= Class.new do
191
+ def helper1
192
+ "this is helper1!"
193
+ end
194
+ end
195
+
196
+ rc(:helpers_object => @aha_helpers_class.new)
197
+ end
198
+
199
+ def automatic_helper_access_should_be_true(klass)
200
+ expect(render(klass.new, :rendering_context => rc_for_automatic_helper_access)).to match(/helper1: this is helper1!/)
201
+ end
202
+
203
+ def automatic_helper_access_should_be_false(klass)
204
+ expect(render(klass.new, :rendering_context => rc_for_automatic_helper_access)).to match(/helper1: NameError/)
205
+ end
206
+
207
+
208
+ def implicit_shared_variable_access_should_be(expected_result, *klasses)
209
+ klasses.each do |klass|
210
+ expect(klass.implicit_shared_variable_access).to eq(expected_result)
211
+ send("implicit_shared_variable_access_should_be_#{expected_result}", klass)
212
+ end
213
+ end
214
+
215
+ def rc_for_implicit_shared_variable_access
216
+ @isva_obj = Object.new
217
+ @isva_obj.instance_variable_set("@bar", "this is bar!")
218
+ rc(:instance_variables_object => @isva_obj)
219
+ end
220
+
221
+ def implicit_shared_variable_access_should_be_true(klass)
222
+ expect(render(klass.new, :rendering_context => rc_for_implicit_shared_variable_access)).to match(/bar: &quot;this is bar!&quot;/)
223
+ end
224
+
225
+ def implicit_shared_variable_access_should_be_false(klass)
226
+ expect(render(klass.new, :rendering_context => rc_for_implicit_shared_variable_access)).to match(/bar: nil/)
227
+ end
228
+
229
+
230
+ def use_instance_variables_for_assigns_should_be(expected_result, *klasses)
231
+ klasses.each do |klass|
232
+ expect(klass.use_instance_variables_for_assigns).to eq(expected_result)
233
+ send("use_instance_variables_for_assigns_should_be_#{expected_result}", klass)
234
+ end
235
+ end
236
+
237
+ def use_instance_variables_for_assigns_should_be_true(klass)
238
+ expect(render(klass.new(:baz => 'some_baz'))).to match(/baz: &quot;some_baz&quot;/)
239
+ end
240
+
241
+ def use_instance_variables_for_assigns_should_be_false(klass)
242
+ expect(render(klass.new(:baz => 'some_baz'))).to match(/baz: nil/)
243
+ end
244
+
245
+ before :each do
246
+ @grandparent = widget_class do
247
+ needs :baz => 'default_baz'
248
+
249
+ def content
250
+ foo_value = begin
251
+ foo
252
+ rescue => e
253
+ e.class.name
254
+ end
255
+
256
+ text "foo: #{foo_value}\n"
257
+
258
+ helper1_value = begin
259
+ helper1
260
+ rescue => e
261
+ e.class.name
262
+ end
263
+
264
+ text "helper1: #{helper1_value}\n"
265
+ text "bar: #{@bar.inspect}\n"
266
+ text "baz: #{@baz.inspect}"
267
+ end
268
+ end
269
+
270
+ @parent1 = widget_class(:superclass => @grandparent)
271
+ @child11 = widget_class(:superclass => @parent1)
272
+ @child12 = widget_class(:superclass => @parent1)
273
+
274
+ @parent2 = widget_class(:superclass => @grandparent)
275
+ @child21 = widget_class(:superclass => @parent2)
276
+ @child22 = widget_class(:superclass => @parent2)
277
+ end
278
+
279
+ it "should properly inherit extra_assigns" do
280
+ extra_assigns_should_be(:ignore, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
281
+
282
+ @parent1.extra_assigns :use
283
+ extra_assigns_should_be(:ignore, @grandparent, @parent2, @child21, @child22)
284
+ extra_assigns_should_be(:use, @parent1, @child11, @child12)
285
+
286
+ @parent2.extra_assigns :error
287
+ extra_assigns_should_be(:ignore, @grandparent)
288
+ extra_assigns_should_be(:error, @parent2, @child21, @child22)
289
+ extra_assigns_should_be(:use, @parent1, @child11, @child12)
290
+
291
+ @grandparent.extra_assigns :use
292
+ extra_assigns_should_be(:error, @parent2, @child21, @child22)
293
+ extra_assigns_should_be(:use, @grandparent, @parent1, @child11, @child12)
294
+
295
+ @grandparent.extra_assigns :ignore
296
+ extra_assigns_should_be(:error, @parent2, @child21, @child22)
297
+ extra_assigns_should_be(:use, @parent1, @child11, @child12)
298
+ extra_assigns_should_be(:ignore, @grandparent)
299
+
300
+ @child22.extra_assigns :ignore
301
+ extra_assigns_should_be(:error, @parent2, @child21)
302
+ extra_assigns_should_be(:use, @parent1, @child11, @child12)
303
+ extra_assigns_should_be(:ignore, @grandparent, @child22)
304
+ end
305
+
306
+ it "should properly inherit automatic_helper_access" do
307
+ automatic_helper_access_should_be(true, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
308
+
309
+ @parent1.automatic_helper_access false
310
+ automatic_helper_access_should_be(true, @grandparent, @parent2, @child21, @child22)
311
+ automatic_helper_access_should_be(false, @parent1, @child11, @child12)
312
+
313
+ @parent2.automatic_helper_access true
314
+ automatic_helper_access_should_be(true, @grandparent, @parent2, @child21, @child22)
315
+ automatic_helper_access_should_be(false, @parent1, @child11, @child12)
316
+
317
+ @grandparent.automatic_helper_access false
318
+ automatic_helper_access_should_be(true, @parent2, @child21, @child22)
319
+ automatic_helper_access_should_be(false, @grandparent, @parent1, @child11, @child12)
320
+
321
+ @grandparent.automatic_helper_access true
322
+ automatic_helper_access_should_be(true, @grandparent, @parent2, @child21, @child22)
323
+ automatic_helper_access_should_be(false, @parent1, @child11, @child12)
324
+ end
325
+
326
+ it "should properly inherit close_void_tags" do
327
+ @grandparent.class_eval do
328
+ def content
329
+ br
330
+ end
331
+ end
332
+
333
+ close_void_tags_should_be(true, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
334
+
335
+ @parent1.close_void_tags false
336
+ close_void_tags_should_be(true, @grandparent, @parent2, @child21, @child22)
337
+ close_void_tags_should_be(false, @parent1, @child11, @child12)
338
+
339
+ @parent2.close_void_tags true
340
+ close_void_tags_should_be(true, @grandparent, @parent2, @child21, @child22)
341
+ close_void_tags_should_be(false, @parent1, @child11, @child12)
342
+
343
+ @grandparent.close_void_tags false
344
+ close_void_tags_should_be(true, @parent2, @child21, @child22)
345
+ close_void_tags_should_be(false, @grandparent, @parent1, @child11, @child12)
346
+
347
+ @grandparent.close_void_tags true
348
+ close_void_tags_should_be(true, @grandparent, @parent2, @child21, @child22)
349
+ close_void_tags_should_be(false, @parent1, @child11, @child12)
350
+ end
351
+
352
+ it "should properly inherit format_output" do
353
+ @grandparent.class_eval do
354
+ def content
355
+ div do
356
+ p do
357
+ span :class => 'foo'
358
+ end
359
+ end
360
+ end
361
+ end
362
+
363
+ format_output_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
364
+
365
+ @parent1.format_output true
366
+ format_output_should_be(false, @grandparent, @parent2, @child21, @child22)
367
+ format_output_should_be(true, @parent1, @child11, @child12)
368
+
369
+ @parent2.format_output false
370
+ format_output_should_be(false, @grandparent, @parent2, @child21, @child22)
371
+ format_output_should_be(true, @parent1, @child11, @child12)
372
+
373
+ @grandparent.format_output true
374
+ format_output_should_be(false, @parent2, @child21, @child22)
375
+ format_output_should_be(true, @grandparent, @parent1, @child11, @child12)
376
+
377
+ @grandparent.format_output false
378
+ format_output_should_be(false, @grandparent, @parent2, @child21, @child22)
379
+ format_output_should_be(true, @parent1, @child11, @child12)
380
+ end
381
+
382
+ it "should properly inherit enforce_element_nesting_rules" do
383
+ @grandparent.class_eval do
384
+ def content
385
+ p { div }
386
+ end
387
+ end
388
+
389
+ enforce_element_nesting_rules_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
390
+
391
+ @parent1.enforce_element_nesting_rules true
392
+ enforce_element_nesting_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
393
+ enforce_element_nesting_rules_should_be(true, @parent1, @child11, @child12)
394
+
395
+ @parent2.enforce_element_nesting_rules false
396
+ enforce_element_nesting_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
397
+ enforce_element_nesting_rules_should_be(true, @parent1, @child11, @child12)
398
+
399
+ @grandparent.enforce_element_nesting_rules true
400
+ enforce_element_nesting_rules_should_be(false, @parent2, @child21, @child22)
401
+ enforce_element_nesting_rules_should_be(true, @grandparent, @parent1, @child11, @child12)
402
+
403
+ @grandparent.enforce_element_nesting_rules false
404
+ enforce_element_nesting_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
405
+ enforce_element_nesting_rules_should_be(true, @parent1, @child11, @child12)
406
+ end
407
+
408
+ it "should properly inherit translation_base" do
409
+ @grandparent.class_eval do
410
+ def content
411
+ text "translation: #{t(".foo.bar.baz")}"
412
+ end
413
+ end
414
+
415
+ translation_base_should_be(nil, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
416
+
417
+ @parent1.translation_base "aaa.bbb"
418
+ translation_base_should_be(nil, @grandparent, @parent2, @child21, @child22)
419
+ translation_base_should_be("aaa.bbb", @parent1, @child11, @child12)
420
+
421
+ @child22.translation_base "ccc.ddd"
422
+ translation_base_should_be(nil, @grandparent, @parent2, @child21)
423
+ translation_base_should_be("aaa.bbb", @parent1, @child11, @child12)
424
+ translation_base_should_be("ccc.ddd", @child22)
425
+
426
+ @grandparent.translation_base "eee.fff"
427
+ translation_base_should_be("eee.fff", @grandparent, @parent2, @child21)
428
+ translation_base_should_be("aaa.bbb", @parent1, @child11, @child12)
429
+ translation_base_should_be("ccc.ddd", @child22)
430
+
431
+ @parent2.translation_base "ggg.hhh"
432
+ translation_base_should_be("eee.fff", @grandparent)
433
+ translation_base_should_be("ggg.hhh", @parent2, @child21)
434
+ translation_base_should_be("aaa.bbb", @parent1, @child11, @child12)
435
+ translation_base_should_be("ccc.ddd", @child22)
436
+ end
437
+
438
+ it "should properly inherit enforce_id_uniqueness" do
439
+ @grandparent.class_eval do
440
+ def content
441
+ p :id => 'foo'
442
+ p :id => 'foo'
443
+ end
444
+ end
445
+
446
+ enforce_id_uniqueness_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
447
+
448
+ @parent1.enforce_id_uniqueness true
449
+ enforce_id_uniqueness_should_be(false, @grandparent, @parent2, @child21, @child22)
450
+ enforce_id_uniqueness_should_be(true, @parent1, @child11, @child12)
451
+
452
+ @parent2.enforce_id_uniqueness false
453
+ enforce_id_uniqueness_should_be(false, @grandparent, @parent2, @child21, @child22)
454
+ enforce_id_uniqueness_should_be(true, @parent1, @child11, @child12)
455
+
456
+ @grandparent.enforce_id_uniqueness true
457
+ enforce_id_uniqueness_should_be(false, @parent2, @child21, @child22)
458
+ enforce_id_uniqueness_should_be(true, @grandparent, @parent1, @child11, @child12)
459
+
460
+ @grandparent.enforce_id_uniqueness false
461
+ enforce_id_uniqueness_should_be(false, @grandparent, @parent2, @child21, @child22)
462
+ enforce_id_uniqueness_should_be(true, @parent1, @child11, @child12)
463
+ end
464
+
465
+ it "should properly inherit start_and_end_comments" do
466
+ @grandparent.class_eval do
467
+ def content
468
+ p
469
+ end
470
+ end
471
+
472
+ start_and_end_comments_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
473
+
474
+ @parent1.start_and_end_comments true
475
+ start_and_end_comments_should_be(false, @grandparent, @parent2, @child21, @child22)
476
+ start_and_end_comments_should_be(true, @parent1, @child11, @child12)
477
+
478
+ @parent2.start_and_end_comments false
479
+ start_and_end_comments_should_be(false, @grandparent, @parent2, @child21, @child22)
480
+ start_and_end_comments_should_be(true, @parent1, @child11, @child12)
481
+
482
+ @grandparent.start_and_end_comments true
483
+ start_and_end_comments_should_be(false, @parent2, @child21, @child22)
484
+ start_and_end_comments_should_be(true, @grandparent, @parent1, @child11, @child12)
485
+
486
+ @grandparent.start_and_end_comments false
487
+ start_and_end_comments_should_be(false, @grandparent, @parent2, @child21, @child22)
488
+ start_and_end_comments_should_be(true, @parent1, @child11, @child12)
489
+ end
490
+
491
+ it "should properly inherit debug" do
492
+ @grandparent.class_eval do
493
+ needs :p => 'abc'
494
+
495
+ def content
496
+ p { text "hi" }
497
+ text "p is: #{p}"
498
+ end
499
+ end
500
+
501
+ debug_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
502
+
503
+ @parent1.debug true
504
+ debug_should_be(false, @grandparent, @parent2, @child21, @child22)
505
+ debug_should_be(true, @parent1, @child11, @child12)
506
+
507
+ @parent2.debug false
508
+ debug_should_be(false, @grandparent, @parent2, @child21, @child22)
509
+ debug_should_be(true, @parent1, @child11, @child12)
510
+
511
+ @grandparent.debug true
512
+ debug_should_be(false, @parent2, @child21, @child22)
513
+ debug_should_be(true, @grandparent, @parent1, @child11, @child12)
514
+
515
+ @grandparent.debug false
516
+ debug_should_be(false, @grandparent, @parent2, @child21, @child22)
517
+ debug_should_be(true, @parent1, @child11, @child12)
518
+ end
519
+
520
+ it "should properly inherit enforce_attribute_rules" do
521
+ @grandparent.class_eval do
522
+ def content
523
+ p :foo => 'bar'
524
+ end
525
+ end
526
+
527
+ enforce_attribute_rules_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
528
+
529
+ @parent1.enforce_attribute_rules true
530
+ enforce_attribute_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
531
+ enforce_attribute_rules_should_be(true, @parent1, @child11, @child12)
532
+
533
+ @parent2.enforce_attribute_rules false
534
+ enforce_attribute_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
535
+ enforce_attribute_rules_should_be(true, @parent1, @child11, @child12)
536
+
537
+ @grandparent.enforce_attribute_rules true
538
+ enforce_attribute_rules_should_be(false, @parent2, @child21, @child22)
539
+ enforce_attribute_rules_should_be(true, @grandparent, @parent1, @child11, @child12)
540
+
541
+ @grandparent.enforce_attribute_rules false
542
+ enforce_attribute_rules_should_be(false, @grandparent, @parent2, @child21, @child22)
543
+ enforce_attribute_rules_should_be(true, @parent1, @child11, @child12)
544
+ end
545
+
546
+ it "should properly inherit implicit_shared_variable_access" do
547
+ implicit_shared_variable_access_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
548
+
549
+ @parent1.implicit_shared_variable_access true
550
+ implicit_shared_variable_access_should_be(false, @grandparent, @parent2, @child21, @child22)
551
+ implicit_shared_variable_access_should_be(true, @parent1, @child11, @child12)
552
+
553
+ @parent2.implicit_shared_variable_access false
554
+ implicit_shared_variable_access_should_be(false, @grandparent, @parent2, @child21, @child22)
555
+ implicit_shared_variable_access_should_be(true, @parent1, @child11, @child12)
556
+
557
+ @grandparent.implicit_shared_variable_access true
558
+ implicit_shared_variable_access_should_be(false, @parent2, @child21, @child22)
559
+ implicit_shared_variable_access_should_be(true, @grandparent, @parent1, @child11, @child12)
560
+
561
+ @grandparent.implicit_shared_variable_access false
562
+ implicit_shared_variable_access_should_be(false, @grandparent, @parent2, @child21, @child22)
563
+ implicit_shared_variable_access_should_be(true, @parent1, @child11, @child12)
564
+ end
565
+
566
+ it "should properly inherit use_instance_variables_for_assigns" do
567
+ use_instance_variables_for_assigns_should_be(false, @grandparent, @parent1, @child11, @child12, @parent2, @child21, @child22)
568
+
569
+ @parent1.use_instance_variables_for_assigns true
570
+ use_instance_variables_for_assigns_should_be(false, @grandparent, @parent2, @child21, @child22)
571
+ use_instance_variables_for_assigns_should_be(true, @parent1, @child11, @child12)
572
+
573
+ @parent2.use_instance_variables_for_assigns false
574
+ use_instance_variables_for_assigns_should_be(false, @grandparent, @parent2, @child21, @child22)
575
+ use_instance_variables_for_assigns_should_be(true, @parent1, @child11, @child12)
576
+
577
+ @grandparent.use_instance_variables_for_assigns true
578
+ use_instance_variables_for_assigns_should_be(false, @parent2, @child21, @child22)
579
+ use_instance_variables_for_assigns_should_be(true, @grandparent, @parent1, @child11, @child12)
580
+
581
+ @grandparent.use_instance_variables_for_assigns false
582
+ use_instance_variables_for_assigns_should_be(false, @grandparent, @parent2, @child21, @child22)
583
+ use_instance_variables_for_assigns_should_be(true, @parent1, @child11, @child12)
584
+ end
585
+ end
@@ -0,0 +1,120 @@
1
+ describe "Fortitude shared_variable access", :type => :system do
2
+ describe "explicit shared-variable access" do
3
+ it "should allow reading a shared variable" do
4
+ ivars[:foo] = "the_foo"
5
+ expect(render(widget_class_with_content { text "foo: #{shared_variables[:foo]}" })).to eq("foo: the_foo")
6
+ end
7
+
8
+ it "should allow writing a shared variable" do
9
+ expect(render(widget_class_with_content { shared_variables[:foo] = "blah"; text "foo: #{shared_variables[:foo]}" })).to eq("foo: blah")
10
+ expect(ivars[:foo]).to eq("blah")
11
+ end
12
+
13
+ it "shouldn't care if you use a symbol or a string" do
14
+ ivars[:foo] = "the_foo"
15
+ expect(render(widget_class_with_content { text "foo: #{shared_variables[:foo]}, #{shared_variables['foo']}"; shared_variables['foo'] = "blah" })).to eq("foo: the_foo, the_foo")
16
+ expect(ivars[:foo]).to eq("blah")
17
+ end
18
+
19
+ it "should stringify whatever key you give it" do
20
+ obj = Object.new
21
+ class << obj
22
+ def to_s
23
+ "foo"
24
+ end
25
+ end
26
+
27
+ ivars[:foo] = "the_foo"
28
+ expect(render(widget_class_with_content { text "foo: #{shared_variables[obj]}" })).to eq("foo: the_foo")
29
+ end
30
+ end
31
+
32
+ describe "implicit shared-variable access" do
33
+ it "should not function unless explicitly turned on" do
34
+ ivars[:foo] = "the_foo"
35
+ expect(render(widget_class_with_content { text "foo: #{@foo}"; @bar = "the_bar" })).to eq("foo: ")
36
+ expect(ivars[:bar]).to eq(nil)
37
+ end
38
+
39
+ it "should allow reading shared variables implicitly" do
40
+ ivars[:foo] = "the_foo"
41
+ wc = widget_class do
42
+ implicit_shared_variable_access true
43
+ def content
44
+ text "foo: #{@foo}"
45
+ end
46
+ end
47
+ expect(render(wc.new)).to eq("foo: the_foo")
48
+ end
49
+
50
+ it "should allow writing shared variables implicitly" do
51
+ ivars[:foo] = "the_foo"
52
+ wc = widget_class do
53
+ implicit_shared_variable_access true
54
+ def content
55
+ text "foo: #{@foo}"
56
+ @foo = "bar"
57
+ end
58
+ end
59
+ expect(render(wc.new)).to eq("foo: the_foo")
60
+ expect(ivars[:foo]).to eq("bar")
61
+ end
62
+
63
+ it "should allow writing shared variables implicitly, even if they weren't defined going in" do
64
+ wc = widget_class do
65
+ implicit_shared_variable_access true
66
+ def content
67
+ text "foo: #{@foo}"
68
+ @foo = "bar"
69
+ end
70
+ end
71
+ expect(render(wc.new)).to eq("foo: ")
72
+ expect(ivars[:foo]).to eq("bar")
73
+ end
74
+
75
+ describe "interactions with use_instance_variables_for_assigns and extra_assigns" do
76
+ it "should have needs declarations pre-empt shared variables" do
77
+ wc = widget_class do
78
+ use_instance_variables_for_assigns true
79
+ implicit_shared_variable_access true
80
+ needs :foo, :bar => nil
81
+
82
+ def content
83
+ text "foo: #{@foo}, bar: #{@bar}, baz: #{@baz}"
84
+ @bar = "widget_bar"
85
+ @baz = "widget_baz"
86
+ end
87
+ end
88
+
89
+ ivars[:foo] = "ivar_foo"
90
+ ivars[:bar] = "ivar_bar"
91
+ expect(render(wc.new(:foo => 'the_foo'))).to eq("foo: the_foo, bar: , baz: ")
92
+ expect(ivars[:foo]).to eq("ivar_foo")
93
+ expect(ivars[:bar]).to eq("ivar_bar")
94
+ end
95
+
96
+ it "should have extra assigns pre-empt shared variables" do
97
+ wc = widget_class do
98
+ use_instance_variables_for_assigns true
99
+ implicit_shared_variable_access true
100
+ extra_assigns :use
101
+ needs :foo, :bar => nil
102
+
103
+ def content
104
+ text "foo: #{@foo}, bar: #{@bar}, baz: #{@baz}"
105
+ @bar = "widget_bar"
106
+ @baz = "widget_baz"
107
+ end
108
+ end
109
+
110
+ ivars[:foo] = "ivar_foo"
111
+ ivars[:bar] = "ivar_bar"
112
+ ivars[:baz] = "ivar_baz"
113
+ expect(render(wc.new(:foo => 'the_foo', :baz => 'some_baz'))).to eq("foo: the_foo, bar: , baz: some_baz")
114
+ expect(ivars[:foo]).to eq("ivar_foo")
115
+ expect(ivars[:bar]).to eq("ivar_bar")
116
+ expect(ivars[:baz]).to eq("ivar_baz")
117
+ end
118
+ end
119
+ end
120
+ end