fortitude 0.0.4-java

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