fortitude 0.0.4-java

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