fortitude 0.0.1

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