card 1.17.4 → 1.18.0

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 (389) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/card.gemspec +24 -25
  4. data/config/initializers/01_init_ruby_extensions.rb +0 -4
  5. data/config/initializers/inflections.rb +1 -1
  6. data/config/initializers/notification.rb +2 -2
  7. data/db/migrate/20110511221913_require_earlier_migrations.rb +3 -3
  8. data/db/migrate/20120105203350_require_1_8_migrations.rb +3 -3
  9. data/db/migrate/20121111025347_require_1_10_migrations.rb +3 -3
  10. data/db/migrate/20130106052640_table_cleanup.rb +4 -4
  11. data/db/migrate/20130411210957_update_codenames.rb +2 -2
  12. data/db/migrate/20141001105348_move_revisions_to_actions.rb +4 -4
  13. data/db/migrate/20141121172918_rename_card_migration_table.rb +2 -2
  14. data/db/migrate/20141208132159_remove_present_from_reference_table.rb +2 -2
  15. data/db/migrate/20141216053032_better_index_names.rb +9 -9
  16. data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +29 -32
  17. data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +3 -4
  18. data/db/migrate_core_cards/20130411211600_delete_old_related_tab_cards.rb +1 -1
  19. data/db/migrate_core_cards/20130419215612_import_help_text.rb +1 -2
  20. data/db/migrate_core_cards/20130823192433_add_style_cards.rb +3 -3
  21. data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +2 -3
  22. data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +2 -2
  23. data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +1 -2
  24. data/db/migrate_core_cards/20130927191728_account_events.rb +5 -6
  25. data/db/migrate_core_cards/20131016172445_common_css_patch.rb +2 -3
  26. data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +0 -1
  27. data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +23 -32
  28. data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +1 -7
  29. data/db/migrate_core_cards/20140512155840_add_script_cards.rb +21 -24
  30. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +17 -22
  31. data/db/migrate_core_cards/20140725180118_config_card_updates.rb +2 -2
  32. data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +1 -3
  33. data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +2 -2
  34. data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +3 -3
  35. data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +1 -1
  36. data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -12
  37. data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -3
  38. data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +10 -10
  39. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +10 -12
  40. data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +4 -4
  41. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +3 -3
  42. data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +7 -7
  43. data/db/migrate_core_cards/20150429090551_search_card_context.rb +18 -20
  44. data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -7
  45. data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +2 -3
  46. data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +3 -3
  47. data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +4 -4
  48. data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +4 -4
  49. data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +5 -11
  50. data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +29 -35
  51. data/db/migrate_core_cards/20150824135418_update_file_history.rb +10 -14
  52. data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +1 -1
  53. data/db/schema.rb +92 -94
  54. data/db/seed/new/card_actions.yml +461 -469
  55. data/db/seed/new/card_acts.yml +154 -172
  56. data/db/seed/new/card_changes.yml +4076 -4031
  57. data/db/seed/new/card_references.yml +1584 -1927
  58. data/db/seed/new/cards.yml +2095 -2112
  59. data/db/seed/test/fixtures/card_actions.yml +1497 -1505
  60. data/db/seed/test/fixtures/card_acts.yml +454 -472
  61. data/db/seed/test/fixtures/card_changes.yml +7309 -7263
  62. data/db/seed/test/fixtures/card_references.yml +2263 -2613
  63. data/db/seed/test/fixtures/cards.yml +3298 -3316
  64. data/db/seed/test/seed.rb +3 -0
  65. data/lib/card.rb +17 -9
  66. data/lib/card/active_record_ext.rb +6 -8
  67. data/lib/card/active_record_helper.rb +42 -32
  68. data/lib/card/auth.rb +3 -3
  69. data/lib/card/cache.rb +4 -4
  70. data/lib/card/cache/persistent.rb +9 -5
  71. data/lib/card/cache/temporary.rb +5 -5
  72. data/lib/card/chunk.rb +1 -1
  73. data/lib/card/codename.rb +3 -2
  74. data/lib/card/content.rb +62 -57
  75. data/lib/card/core_ext.rb +20 -30
  76. data/lib/card/diff.rb +88 -76
  77. data/lib/card/director_register.rb +66 -0
  78. data/lib/card/env.rb +14 -17
  79. data/lib/card/exceptions.rb +7 -9
  80. data/lib/card/format.rb +18 -367
  81. data/lib/card/format/nest.rb +183 -0
  82. data/lib/card/format/permission.rb +63 -0
  83. data/lib/card/format/render.rb +140 -0
  84. data/lib/card/loader.rb +17 -26
  85. data/lib/card/location.rb +6 -6
  86. data/lib/card/mailer.rb +4 -7
  87. data/lib/card/migration.rb +1 -1
  88. data/lib/card/name.rb +3 -6
  89. data/lib/card/query.rb +8 -8
  90. data/lib/card/query/attributes.rb +6 -6
  91. data/lib/card/query/clause.rb +10 -10
  92. data/lib/card/query/join.rb +7 -9
  93. data/lib/card/query/reference.rb +17 -19
  94. data/lib/card/query/sql_statement.rb +2 -2
  95. data/lib/card/query/value.rb +15 -16
  96. data/lib/card/set.rb +106 -209
  97. data/lib/card/set/event.rb +126 -0
  98. data/lib/card/set_pattern.rb +42 -29
  99. data/lib/card/simplecov_helper.rb +19 -19
  100. data/lib/card/spec_helper.rb +40 -16
  101. data/lib/card/stage.rb +72 -0
  102. data/lib/card/stage_director.rb +231 -0
  103. data/lib/card/subcards.rb +56 -24
  104. data/lib/card/subdirector_array.rb +31 -0
  105. data/lib/card/success.rb +15 -18
  106. data/lib/card/version.rb +1 -2
  107. data/lib/card/view_cache.rb +4 -4
  108. data/lib/card/view_name.rb +10 -8
  109. data/lib/cardio.rb +1 -1
  110. data/lib/generators/card.rb +2 -4
  111. data/lib/generators/card/format/format_generator.rb +4 -4
  112. data/lib/generators/card/migration/migration_generator.rb +6 -6
  113. data/lib/generators/card/set/set_generator.rb +5 -6
  114. data/mod/01_core/chunk/include.rb +2 -1
  115. data/mod/01_core/chunk/link.rb +2 -2
  116. data/mod/01_core/chunk/literal.rb +6 -9
  117. data/mod/01_core/chunk/query_reference.rb +1 -1
  118. data/mod/01_core/chunk/reference.rb +2 -2
  119. data/mod/01_core/chunk/uri.rb +52 -63
  120. data/mod/01_core/format/html_format.rb +8 -12
  121. data/mod/01_core/format/text_format.rb +1 -1
  122. data/mod/01_core/set/all/actify.rb +96 -0
  123. data/mod/01_core/set/all/active_card.rb +7 -7
  124. data/mod/01_core/set/all/collection.rb +19 -20
  125. data/mod/01_core/set/all/content.rb +9 -7
  126. data/mod/01_core/set/all/erb.rb +5 -5
  127. data/mod/01_core/set/all/event.rb +60 -0
  128. data/mod/01_core/set/all/fetch.rb +13 -19
  129. data/mod/01_core/set/all/haml.rb +1 -1
  130. data/mod/01_core/set/all/initialize.rb +35 -41
  131. data/mod/01_core/set/all/location_history.rb +3 -5
  132. data/mod/01_core/set/all/name.rb +19 -68
  133. data/mod/01_core/set/all/name_validations.rb +56 -0
  134. data/mod/01_core/set/all/pattern.rb +2 -2
  135. data/mod/01_core/set/all/permissions.rb +14 -20
  136. data/mod/01_core/set/all/phases.rb +9 -200
  137. data/mod/01_core/set/all/references.rb +10 -10
  138. data/mod/01_core/set/all/rules.rb +3 -4
  139. data/mod/01_core/set/all/stages.rb +24 -0
  140. data/mod/01_core/set/all/states.rb +4 -4
  141. data/mod/01_core/set/all/subcards.rb +16 -26
  142. data/mod/01_core/set/all/templating.rb +1 -3
  143. data/mod/01_core/set/all/tracked_attributes.rb +47 -48
  144. data/mod/01_core/set/all/trash.rb +10 -10
  145. data/mod/01_core/set/all/type.rb +9 -8
  146. data/mod/01_core/set/all/utils.rb +10 -14
  147. data/mod/01_core/set/all/view_cache.rb +2 -2
  148. data/mod/01_core/set_pattern/01_all.rb +3 -3
  149. data/mod/01_core/set_pattern/02_all_plus.rb +3 -3
  150. data/mod/01_core/set_pattern/03_type.rb +2 -2
  151. data/mod/01_core/set_pattern/04_star.rb +3 -3
  152. data/mod/01_core/set_pattern/05_rstar.rb +3 -3
  153. data/mod/01_core/set_pattern/06_right.rb +2 -2
  154. data/mod/01_core/set_pattern/07_type_plus_right.rb +2 -2
  155. data/mod/01_core/set_pattern/08_self.rb +1 -1
  156. data/mod/01_core/spec/chunk/literal_spec.rb +7 -8
  157. data/mod/01_core/spec/chunk/uri_spec.rb +140 -142
  158. data/mod/01_core/spec/format/html_format_spec.rb +72 -57
  159. data/mod/01_core/spec/set/all/collection_spec.rb +63 -43
  160. data/mod/01_core/spec/set/all/content_spec.rb +4 -4
  161. data/mod/01_core/spec/set/all/fetch_spec.rb +12 -3
  162. data/mod/01_core/spec/set/all/name_spec.rb +3 -4
  163. data/mod/01_core/spec/set/all/pattern_spec.rb +32 -35
  164. data/mod/01_core/spec/set/all/permissions_spec.rb +17 -5
  165. data/mod/01_core/spec/set/all/phases_spec.rb +0 -1
  166. data/mod/01_core/spec/set/all/references_spec.rb +1 -1
  167. data/mod/01_core/spec/set/all/rules2_spec.rb +79 -91
  168. data/mod/01_core/spec/set/all/rules_spec.rb +63 -56
  169. data/mod/01_core/spec/set/all/templating_spec.rb +0 -1
  170. data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +4 -5
  171. data/mod/01_core/spec/set/all/trash_spec.rb +23 -1
  172. data/mod/01_core/spec/set/all/type_spec.rb +2 -5
  173. data/mod/01_history/lib/card/action.rb +8 -10
  174. data/mod/01_history/set/all/actions.rb +2 -4
  175. data/mod/01_history/set/all/content_history.rb +38 -32
  176. data/mod/01_history/set/all/history.rb +20 -17
  177. data/mod/02_basic_types/format/rss_format.rb +0 -1
  178. data/mod/02_basic_types/set/all/all_css.rb +9 -13
  179. data/mod/02_basic_types/set/all/all_csv.rb +14 -17
  180. data/mod/02_basic_types/set/all/all_js.rb +3 -4
  181. data/mod/02_basic_types/set/all/base.rb +2 -2
  182. data/mod/02_basic_types/set/all/file.rb +2 -5
  183. data/mod/02_basic_types/set/all/json.rb +19 -18
  184. data/mod/02_basic_types/set/all/rss.rb +3 -3
  185. data/mod/02_basic_types/set/all/text.rb +1 -3
  186. data/mod/02_basic_types/set/type/html.rb +4 -8
  187. data/mod/02_basic_types/set/type/plain_text.rb +2 -3
  188. data/mod/02_basic_types/set/type/pointer.rb +82 -92
  189. data/mod/02_basic_types/spec/set/all/all_css_spec.rb +2 -2
  190. data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +6 -4
  191. data/mod/02_basic_types/spec/set/all/base_spec.rb +6 -6
  192. data/mod/02_basic_types/spec/set/all/json_spec.rb +8 -8
  193. data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +3 -3
  194. data/mod/02_basic_types/spec/set/type/pointer_spec.rb +29 -32
  195. data/mod/03_machines/lib/card/machine.rb +95 -81
  196. data/mod/03_machines/lib/card/machine_input.rb +35 -34
  197. data/mod/03_machines/set/right/machine_input.rb +1 -1
  198. data/mod/03_machines/set/self/script_ace.rb +2 -3
  199. data/mod/03_machines/set/self/script_card_menu.rb +2 -3
  200. data/mod/03_machines/set/self/script_jquery_helper.rb +2 -2
  201. data/mod/03_machines/set/self/script_slot.rb +2 -2
  202. data/mod/03_machines/set/self/style_bootstrap_compatible.rb +1 -1
  203. data/mod/03_machines/set/self/style_cards.rb +1 -1
  204. data/mod/03_machines/set/self/style_jquery_ui_smoothness.rb +0 -1
  205. data/mod/03_machines/set/type/coffee_script.rb +9 -13
  206. data/mod/03_machines/set/type/css.rb +12 -13
  207. data/mod/03_machines/set/type/java_script.rb +6 -8
  208. data/mod/03_machines/set/type/scss.rb +4 -5
  209. data/mod/03_machines/set/type/skin.rb +3 -6
  210. data/mod/03_machines/spec/lib/shared_machine_examples.rb +31 -38
  211. data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +7 -8
  212. data/mod/03_machines/spec/set/type/coffeescript_spec.rb +19 -13
  213. data/mod/03_machines/spec/set/type/css_spec.rb +22 -16
  214. data/mod/03_machines/spec/set/type/scss_spec.rb +28 -21
  215. data/mod/03_machines/spec/set/type/skin_spec.rb +28 -30
  216. data/mod/04_settings/lib/card/setting.rb +4 -4
  217. data/mod/04_settings/set/abstract/permission.rb +30 -37
  218. data/mod/04_settings/set/right/add_help.rb +3 -3
  219. data/mod/04_settings/set/right/script.rb +4 -5
  220. data/mod/04_settings/set/right/structure.rb +3 -4
  221. data/mod/04_settings/set/right/style.rb +3 -3
  222. data/mod/04_settings/set/self/add_help.rb +1 -1
  223. data/mod/04_settings/set/self/input.rb +1 -1
  224. data/mod/04_settings/set/self/on_create.rb +1 -1
  225. data/mod/04_settings/set/self/options.rb +1 -1
  226. data/mod/04_settings/set/self/options_label.rb +1 -1
  227. data/mod/04_settings/set/type/setting.rb +29 -44
  228. data/mod/04_settings/spec/set/right/comment_spec.rb +9 -12
  229. data/mod/04_settings/spec/set/right/script_spec.rb +7 -7
  230. data/mod/04_settings/spec/set/right/structure_spec.rb +13 -12
  231. data/mod/04_settings/spec/set/right/style_spec.rb +13 -13
  232. data/mod/04_settings/spec/set/type/setting_spec.rb +1 -1
  233. data/mod/05_email/format/email_html_format.rb +1 -1
  234. data/mod/05_email/format/email_text_format.rb +2 -2
  235. data/mod/05_email/lib/card/follow_option.rb +12 -15
  236. data/mod/05_email/set/all/email_html.rb +2 -3
  237. data/mod/05_email/set/all/email_text.rb +3 -3
  238. data/mod/05_email/set/all/follow.rb +14 -22
  239. data/mod/05_email/set/all/notify.rb +11 -11
  240. data/mod/05_email/set/all/observer.rb +7 -8
  241. data/mod/05_email/set/right/bcc.rb +4 -9
  242. data/mod/05_email/set/right/follow.rb +26 -39
  243. data/mod/05_email/set/right/follow_fields.rb +2 -2
  244. data/mod/05_email/set/right/followers.rb +3 -1
  245. data/mod/05_email/set/right/following.rb +13 -16
  246. data/mod/05_email/set/self/always.rb +1 -2
  247. data/mod/05_email/set/self/created.rb +4 -6
  248. data/mod/05_email/set/self/edited.rb +3 -7
  249. data/mod/05_email/set/self/follow_defaults.rb +11 -12
  250. data/mod/05_email/set/self/never.rb +2 -4
  251. data/mod/05_email/set/type/email_template.rb +40 -27
  252. data/mod/05_email/set/type_plus_right/user/follow.rb +159 -157
  253. data/mod/05_email/spec/set/all/follow_spec.rb +28 -37
  254. data/mod/05_email/spec/set/all/notify_spec.rb +21 -26
  255. data/mod/05_email/spec/set/all/observer_spec.rb +58 -37
  256. data/mod/05_email/spec/set/right/followers_spec.rb +9 -14
  257. data/mod/05_email/spec/set/right/following_spec.rb +1 -1
  258. data/mod/05_email/spec/set/self/follow_defaults_spec.rb +1 -1
  259. data/mod/05_standard/lib/carrier_wave/cardmount.rb +9 -9
  260. data/mod/05_standard/lib/file_uploader.rb +8 -13
  261. data/mod/05_standard/lib/image_uploader.rb +8 -9
  262. data/mod/05_standard/set/abstract/attachment.rb +26 -43
  263. data/mod/05_standard/set/all/account.rb +2 -2
  264. data/mod/05_standard/set/all/comment.rb +11 -13
  265. data/mod/05_standard/set/all/error.rb +18 -18
  266. data/mod/05_standard/set/all/event_viz.rb +16 -29
  267. data/mod/05_standard/set/all/links.rb +35 -34
  268. data/mod/05_standard/set/all/list_changes.rb +10 -12
  269. data/mod/05_standard/set/all/rich_html/content.rb +13 -13
  270. data/mod/05_standard/set/all/rich_html/editing.rb +5 -5
  271. data/mod/05_standard/set/all/rich_html/form.rb +22 -26
  272. data/mod/05_standard/set/all/rich_html/header.rb +18 -25
  273. data/mod/05_standard/set/all/rich_html/menu.rb +20 -22
  274. data/mod/05_standard/set/all/rich_html/modal.rb +3 -3
  275. data/mod/05_standard/set/all/rich_html/toolbar.rb +49 -58
  276. data/mod/05_standard/set/all/rich_html/wrapper.rb +40 -41
  277. data/mod/05_standard/set/right/account.rb +26 -14
  278. data/mod/05_standard/set/right/email.rb +2 -2
  279. data/mod/05_standard/set/right/password.rb +6 -5
  280. data/mod/05_standard/set/right/salt.rb +2 -2
  281. data/mod/05_standard/set/right/stats.rb +17 -20
  282. data/mod/05_standard/set/right/token.rb +1 -1
  283. data/mod/05_standard/set/right/when_created.rb +1 -1
  284. data/mod/05_standard/set/right/when_last_edited.rb +1 -1
  285. data/mod/05_standard/set/rstar/rules.rb +3 -3
  286. data/mod/05_standard/set/rstar/rules_editor.rb +39 -39
  287. data/mod/05_standard/set/self/account_links.rb +21 -22
  288. data/mod/05_standard/set/self/admin_info.rb +5 -5
  289. data/mod/05_standard/set/self/alerts.rb +1 -1
  290. data/mod/05_standard/set/self/all.rb +1 -1
  291. data/mod/05_standard/set/self/foot.rb +1 -1
  292. data/mod/05_standard/set/self/head.rb +19 -22
  293. data/mod/05_standard/set/self/navbox.rb +3 -7
  294. data/mod/05_standard/set/self/now.rb +1 -1
  295. data/mod/05_standard/set/self/recent.rb +19 -25
  296. data/mod/05_standard/set/self/search.rb +2 -4
  297. data/mod/05_standard/set/self/signin.rb +6 -6
  298. data/mod/05_standard/set/self/stats.rb +31 -38
  299. data/mod/05_standard/set/self/version.rb +1 -2
  300. data/mod/05_standard/set/type/basic.rb +15 -17
  301. data/mod/05_standard/set/type/cardtype.rb +3 -3
  302. data/mod/05_standard/set/type/date.rb +1 -2
  303. data/mod/05_standard/set/type/file.rb +22 -33
  304. data/mod/05_standard/set/type/image.rb +30 -23
  305. data/mod/05_standard/set/type/layout_type.rb +4 -4
  306. data/mod/05_standard/set/type/list.rb +32 -38
  307. data/mod/05_standard/set/type/listed_by.rb +11 -13
  308. data/mod/05_standard/set/type/number.rb +5 -6
  309. data/mod/05_standard/set/type/phrase.rb +1 -1
  310. data/mod/05_standard/set/type/search_type.rb +25 -23
  311. data/mod/05_standard/set/type/session.rb +2 -3
  312. data/mod/05_standard/set/type/set.rb +46 -51
  313. data/mod/05_standard/set/type/signup.rb +18 -19
  314. data/mod/05_standard/set/type/toggle.rb +5 -5
  315. data/mod/05_standard/set/type/user.rb +6 -6
  316. data/mod/05_standard/spec/chunk/include_spec.rb +115 -98
  317. data/mod/05_standard/spec/chunk/link_spec.rb +58 -31
  318. data/mod/05_standard/spec/chunk/query_reference_spec.rb +12 -14
  319. data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
  320. data/mod/05_standard/spec/set/all/error_spec.rb +3 -3
  321. data/mod/05_standard/spec/set/all/history_spec.rb +52 -38
  322. data/mod/05_standard/spec/set/all/links_spec.rb +2 -2
  323. data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +0 -1
  324. data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +11 -11
  325. data/mod/05_standard/spec/set/all/rich_html/wrapper_spec.rb +4 -4
  326. data/mod/05_standard/spec/set/right/email_spec.rb +1 -4
  327. data/mod/05_standard/spec/set/right/password_spec.rb +4 -7
  328. data/mod/05_standard/spec/set/right/stats_spec.rb +2 -3
  329. data/mod/05_standard/spec/set/right/when_created_spec.rb +1 -1
  330. data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +1 -1
  331. data/mod/05_standard/spec/set/rstar/rules_spec.rb +6 -6
  332. data/mod/05_standard/spec/set/self/all_spec.rb +11 -13
  333. data/mod/05_standard/spec/set/self/head_spec.rb +1 -3
  334. data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
  335. data/mod/05_standard/spec/set/self/now_spec.rb +2 -2
  336. data/mod/05_standard/spec/set/self/signin_spec.rb +1 -1
  337. data/mod/05_standard/spec/set/self/stats_spec.rb +1 -1
  338. data/mod/05_standard/spec/set/self/version_spec.rb +2 -2
  339. data/mod/05_standard/spec/set/type/cardtype_spec.rb +3 -4
  340. data/mod/05_standard/spec/set/type/date_spec.rb +1 -1
  341. data/mod/05_standard/spec/set/type/email_template_spec.rb +5 -5
  342. data/mod/05_standard/spec/set/type/file_spec.rb +50 -28
  343. data/mod/05_standard/spec/set/type/html_spec.rb +12 -7
  344. data/mod/05_standard/spec/set/type/image_spec.rb +55 -45
  345. data/mod/05_standard/spec/set/type/layout_type_spec.rb +2 -2
  346. data/mod/05_standard/spec/set/type/listed_by_spec.rb +2 -2
  347. data/mod/05_standard/spec/set/type/number_spec.rb +1 -1
  348. data/mod/05_standard/spec/set/type/phrase_spec.rb +1 -1
  349. data/mod/05_standard/spec/set/type/search_type_spec.rb +15 -16
  350. data/mod/05_standard/spec/set/type/set_spec.rb +16 -17
  351. data/mod/05_standard/spec/set/type/signup_spec.rb +7 -5
  352. data/mod/05_standard/spec/set/type/toggle_spec.rb +4 -4
  353. data/mod/05_standard/spec/set/type/uri_spec.rb +11 -11
  354. data/mod/05_standard/spec/set/type/user_spec.rb +0 -1
  355. data/mod/06_bootstrap/set/all/bootstrap/form.rb +9 -10
  356. data/mod/06_bootstrap/set/all/bootstrap/helper.rb +22 -27
  357. data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +1 -2
  358. data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -3
  359. data/mod/06_bootstrap/set/self/bootstrap_cards.rb +2 -2
  360. data/mod/06_bootstrap/set/self/bootstrap_js.rb +2 -2
  361. data/mod/06_bootstrap/set/self/bootswatch_shared.rb +19 -19
  362. data/mod/06_bootstrap/set/self/smartmenu_css.rb +2 -2
  363. data/mod/06_bootstrap/set/self/smartmenu_js.rb +3 -3
  364. data/mod/06_bootstrap/spec/set/all/bootstrap/form_spec.rb +5 -5
  365. data/spec/lib/card/action_spec.rb +4 -4
  366. data/spec/lib/card/cache_spec.rb +3 -5
  367. data/spec/lib/card/chunk_spec.rb +6 -8
  368. data/spec/lib/card/codename_spec.rb +4 -6
  369. data/spec/lib/card/content_spec.rb +12 -17
  370. data/spec/lib/card/diff_spec.rb +59 -61
  371. data/spec/lib/card/format_spec.rb +55 -34
  372. data/spec/lib/card/loader_spec.rb +35 -37
  373. data/spec/lib/card/name_spec.rb +159 -145
  374. data/spec/lib/card/query_spec.rb +4 -4
  375. data/spec/lib/card/reference_spec.rb +24 -24
  376. data/spec/lib/card/set_pattern_spec.rb +3 -3
  377. data/spec/lib/card/stage_director_spec.rb +218 -0
  378. data/spec/lib/card/subcards_spec.rb +12 -16
  379. data/spec/lib/card/success_spec.rb +16 -18
  380. data/spec/lib/card/view_cache_spec.rb +1 -1
  381. data/spec/mailers/mailer_spec.rb +3 -5
  382. data/spec/models/card/cardtype_spec.rb +40 -51
  383. data/spec/models/card/create_spec.rb +58 -39
  384. data/spec/models/card/trash_spec.rb +23 -32
  385. data/spec/models/card/type_transition_spec.rb +41 -32
  386. data/spec/models/card/validation_spec.rb +13 -15
  387. data/spec/models/card_spec.rb +48 -59
  388. data/spec/spec_helper.rb +26 -31
  389. metadata +16 -2
@@ -1,19 +1,21 @@
1
1
  # -*- encoding : utf-8 -*-
2
- #!/usr/bin/env ruby
2
+ # !/usr/bin/env ruby
3
3
 
4
4
  require 'card/diff'
5
5
 
6
6
  describe Card::Diff do
7
-
8
7
  def del text
9
8
  "<del class='diffdel diff-red'>#{text}</del>"
10
9
  end
10
+
11
11
  def ins text
12
12
  "<ins class='diffins diff-green'>#{text}</ins>"
13
13
  end
14
+
14
15
  def tag text
15
16
  "&lt;#{text}&gt;"
16
17
  end
18
+
17
19
  def diff old_s, new_s, opts=@opts
18
20
  Card::Diff.complete(old_s, new_s, opts)
19
21
  end
@@ -22,7 +24,6 @@ describe Card::Diff do
22
24
  Card::Diff.summary(old_s, new_s, opts)
23
25
  end
24
26
 
25
-
26
27
  old_p = '<p>old</p>'
27
28
  new_p = '<p>new</p>'
28
29
  new_h = '<h1>new</h1>'
@@ -32,110 +33,108 @@ describe Card::Diff do
32
33
 
33
34
  describe 'traffic light' do
34
35
  it 'is green for addition' do
35
- a = "a"
36
- b = "a b"
37
- db = Card::Diff::DiffBuilder.new(a,b)
36
+ a = 'a'
37
+ b = 'a b'
38
+ db = Card::Diff::DiffBuilder.new(a, b)
38
39
  expect(db.green?).to be_truthy
39
40
  expect(db.red?).to be_falsey
40
41
  end
41
42
  it 'is red for deletion' do
42
- a = "a"
43
- b = ""
44
- db = Card::Diff::DiffBuilder.new(a,b)
43
+ a = 'a'
44
+ b = ''
45
+ db = Card::Diff::DiffBuilder.new(a, b)
45
46
  expect(db.green?).to be_falsey
46
47
  expect(db.red?).to be_truthy
47
48
  end
48
49
  it 'is green and red for change' do
49
- a = "a"
50
- b = "b"
51
- db = Card::Diff::DiffBuilder.new(a,b)
50
+ a = 'a'
51
+ b = 'b'
52
+ db = Card::Diff::DiffBuilder.new(a, b)
52
53
  expect(db.green?).to be_truthy
53
54
  expect(db.red?).to be_truthy
54
55
  end
55
56
  it 'is off for no change' do
56
- a = "a"
57
- b = "a"
58
- db = Card::Diff::DiffBuilder.new(a,b)
57
+ a = 'a'
58
+ b = 'a'
59
+ db = Card::Diff::DiffBuilder.new(a, b)
59
60
  expect(db.green?).to be_falsey
60
61
  expect(db.red?).to be_falsey
61
62
  end
62
63
  end
63
64
 
64
-
65
65
  describe 'summary' do
66
66
  before(:all) do
67
- @opts = {format: :html}
67
+ @opts = { format: :html }
68
68
  end
69
69
 
70
70
  it 'omits unchanged text' do
71
- a = "<p>this was the original string</p>"
72
- b = "<p>this is the new string</p>"
71
+ a = '<p>this was the original string</p>'
72
+ b = '<p>this is the new string</p>'
73
73
  expect(summary a, b).to eq(
74
74
  "...#{del 'was'}#{ins 'is'}...#{del 'original'}#{ins 'new'}..."
75
75
  )
76
76
  end
77
77
 
78
78
  it 'no ellipsis if changes fit exactly' do
79
- a = "123"
80
- b = "456"
81
- expect(summary a, b, summary: {length: 6}).to eq(
79
+ a = '123'
80
+ b = '456'
81
+ expect(summary a, b, summary: { length: 6 }).to eq(
82
82
  "#{del '123'}#{ins '456'}"
83
83
  )
84
84
  end
85
85
 
86
86
  it 'green ellipsis if added text does not fit' do
87
- a = "123"
88
- b = "5678"
89
- expect(summary a, b, summary: {length: 6}).to eq(
87
+ a = '123'
88
+ b = '5678'
89
+ expect(summary a, b, summary: { length: 6 }).to eq(
90
90
  "#{del '123'}#{ins '...'}"
91
91
  )
92
92
  end
93
93
 
94
94
  it 'neutral ellipsis if complete change does not fit' do
95
- a = "123 123"
96
- b = "456 456"
97
- expect(summary a, b, summary: {length: 9}).to eq(
95
+ a = '123 123'
96
+ b = '456 456'
97
+ expect(summary a, b, summary: { length: 9 }).to eq(
98
98
  "#{del '123'}#{ins '456'}..."
99
99
  )
100
100
  end
101
101
 
102
102
  it 'red ellipsis if deleted text partially fits' do
103
- a = "123456"
104
- b = "567"
105
- expect(summary a, b, summary: {length: 4}).to eq(
106
- "#{del '1...'}"
103
+ a = '123456'
104
+ b = '567'
105
+ expect(summary a, b, summary: { length: 4 }).to eq(
106
+ (del '1...').to_s
107
107
  )
108
108
  end
109
109
 
110
110
  it 'green ellipsis if added text partially fits' do
111
- a = "1234"
112
- b = "56789"
113
- expect(summary a, b, summary: {length: 8}).to eq(
111
+ a = '1234'
112
+ b = '56789'
113
+ expect(summary a, b, summary: { length: 8 }).to eq(
114
114
  "#{del '1234'}#{ins '5...'}"
115
115
  )
116
116
  end
117
117
 
118
118
  it 'removes html tags' do
119
- a = "<a>A</a>"
120
- b = "<b>B</b>"
119
+ a = '<a>A</a>'
120
+ b = '<b>B</b>'
121
121
  expect(summary a, b, format: :html).to eq(
122
122
  "#{del 'A'}#{ins 'B'}"
123
123
  )
124
124
  end
125
125
 
126
126
  it 'with html tags in raw format' do
127
- a = "<a>1</a>"
128
- b = "<b>1</b>"
127
+ a = '<a>1</a>'
128
+ b = '<b>1</b>'
129
129
  expect(summary a, b, format: :raw).to eq(
130
- "#{del( tag 'a' )}#{ins(tag 'b')}...#{del( tag '/a' )}#{ins(tag '/b')}"
130
+ "#{del(tag 'a')}#{ins(tag 'b')}...#{del(tag '/a')}#{ins(tag '/b')}"
131
131
  )
132
132
  end
133
-
134
133
  end
135
134
 
136
- context "html format" do
135
+ context 'html format' do
137
136
  before(:all) do
138
- @opts = {format: :html}
137
+ @opts = { format: :html }
139
138
  end
140
139
 
141
140
  it "doesn't change a text without changes" do
@@ -150,22 +149,22 @@ describe Card::Diff do
150
149
  end
151
150
 
152
151
  it 'diff with multiple paragraphs' do
153
- a = "<p>this was the original string</p>"
152
+ a = '<p>this was the original string</p>'
154
153
  b = "<p>this is</p>\n<p> the new string</p>\n<p>around the world</p>"
155
154
 
156
155
  expect(diff a, b).to eq(
157
- "<p>this #{del 'was'}#{ins 'is'}</p>"+
158
- "\n<p> the " +
159
- "#{del 'original'}#{ins 'new'}" +
160
- " string</p>\n" +
161
- "<p>#{ins 'around the world'}</p>"
162
- )
156
+ "<p>this #{del 'was'}#{ins 'is'}</p>"\
157
+ "\n<p> the " \
158
+ "#{del 'original'}#{ins 'new'}" \
159
+ " string</p>\n" \
160
+ "<p>#{ins 'around the world'}</p>"
161
+ )
163
162
  end
164
163
  end
165
164
 
166
- context "text format" do
165
+ context 'text format' do
167
166
  before(:all) do
168
- @opts = {format: :text}
167
+ @opts = { format: :text }
169
168
  end
170
169
 
171
170
  it 'removes html' do
@@ -174,19 +173,18 @@ describe Card::Diff do
174
173
 
175
174
  it 'compares complete links' do
176
175
  diff = Card::Diff.complete("[[A]]\n[[B]]", "[[A]]\n[[C]]", format: :html)
177
- expect(diff).to eq( "[[A]]\n#{del '[[B]]'}#{ins '[[C]]'}")
176
+ expect(diff).to eq("[[A]]\n#{del '[[B]]'}#{ins '[[C]]'}")
178
177
  end
179
178
 
180
- it 'compares complete inclusions' do
179
+ it 'compares complete nests' do
181
180
  diff = Card::Diff.complete("{{A}}\n{{B}}", "{{A}}\n{{C}}", format: :html)
182
- expect(diff).to eq( "{{A}}\n#{del '{{B}}'}#{ins '{{C}}'}")
181
+ expect(diff).to eq("{{A}}\n#{del '{{B}}'}#{ins '{{C}}'}")
183
182
  end
184
-
185
183
  end
186
184
 
187
- context "raw format" do
185
+ context 'raw format' do
188
186
  before(:all) do
189
- @opts = {format: :raw}
187
+ @opts = { format: :raw }
190
188
  end
191
189
 
192
190
  it 'excapes html' do
@@ -194,17 +192,17 @@ describe Card::Diff do
194
192
  end
195
193
 
196
194
  it 'diff for tag change' do
197
- expect(diff old_p, new_h).to eq( del("#{tag 'p'}old#{tag '/p'}") + ins("#{tag 'h1'}new#{tag '/h1'}") )
195
+ expect(diff old_p, new_h).to eq(del("#{tag 'p'}old#{tag '/p'}") + ins("#{tag 'h1'}new#{tag '/h1'}"))
198
196
  end
199
197
  end
200
198
 
201
199
  context 'pointer format' do
202
200
  before(:all) do
203
- @opts = {format: :pointer}
201
+ @opts = { format: :pointer }
204
202
  end
205
203
 
206
204
  it 'removes square brackets' do
207
- expect(diff "[[Hello]]", "[[Hi]]").to eq( del('Hello') + ins('Hi') )
205
+ expect(diff '[[Hello]]', '[[Hi]]').to eq(del('Hello') + ins('Hi'))
208
206
  end
209
207
  end
210
208
  end
@@ -1,33 +1,37 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Format do
4
-
5
4
  describe '#show?' do
6
5
  let(:format) { described_class.new Card.new }
7
6
 
8
- it "should respect defaults" do
9
- expect(format.show_view?( :menu, default_visibility: :show )).to be_truthy
10
- expect(format.show_view?( :menu, default_visibility: :hide )).to be_falsey
11
- expect(format.show_view?( :menu, {} )).to be_truthy
7
+ def show_menu? args
8
+ format.show_view?(:menu, args)
12
9
  end
13
-
14
- it "should respect developer default overrides" do
15
- expect(format.show_view?( :menu, optional_menu: :show, default_visibility: :hide )).to be_truthy
16
- expect(format.show_view?( :menu, optional_menu: :hide, default_visibility: :show )).to be_falsey
17
- expect(format.show_view?( :menu, optional_menu: :hide )).to be_falsey
10
+ it 'should respect defaults' do
11
+ expect(show_menu?(default_visibility: :show)).to be_truthy
12
+ expect(show_menu?(default_visibility: :hide)).to be_falsey
13
+ expect(show_menu?({})).to be_truthy
18
14
  end
19
15
 
20
- it "should handle args from inclusions" do
21
- expect(format.show_view?( :menu, show: 'menu', default_visibility: :hide )).to be_truthy
22
- expect(format.show_view?( :menu, hide: 'menu, paging', default_visibility: :show )).to be_falsey
23
- expect(format.show_view?( :menu, show: 'menu', optional_menu: :hide )).to be_truthy
16
+ it 'should respect developer default overrides' do
17
+ expect(show_menu?(optional_menu: :show, default_visibility: :hide))
18
+ .to be_truthy
19
+ expect(show_menu?(optional_menu: :hide, default_visibility: :show))
20
+ .to be_falsey
21
+ expect(show_menu?(optional_menu: :hide)).to be_falsey
24
22
  end
25
23
 
26
- it "should handle hard developer overrides" do
27
- expect(format.show_view?( :menu, optional_menu: :always, hide: 'menu' )).to be_truthy
28
- expect(format.show_view?( :menu, optional_menu: :never, show: 'menu' )).to be_falsey
24
+ it 'should handle args from nests' do
25
+ expect(show_menu?(show: 'menu', default_visibility: :hide)).to be_truthy
26
+ expect(show_menu?(hide: 'menu, paging', default_visibility: :show))
27
+ .to be_falsey
28
+ expect(show_menu?(show: 'menu', optional_menu: :hide)).to be_truthy
29
29
  end
30
30
 
31
+ it 'should handle hard developer overrides' do
32
+ expect(show_menu?(optional_menu: :always, hide: 'menu')).to be_truthy
33
+ expect(show_menu?(optional_menu: :never, show: 'menu')).to be_falsey
34
+ end
31
35
  end
32
36
 
33
37
  describe 'format helpers and link building' do
@@ -38,15 +42,21 @@ describe Card::Format do
38
42
  end
39
43
 
40
44
  let(:card) { Card['Home'] }
41
- let(:text_format) { card.format(:text)}
45
+ let(:text_format) { card.format(:text) }
42
46
  let(:html_format) { card.format }
43
- let(:url_text1) { 'with external free link http://localhost:2020/path?cgi=foo&bar=baz' }
44
- let(:url_text2) { 'with external in link syntax: [[http://brain.org/Home|extra]]' }
47
+ let(:url_text1) do
48
+ 'with external free link http://localhost:2020/path?cgi=foo&bar=baz'
49
+ end
50
+ let(:url_text2) do
51
+ 'with external in link syntax: [[http://brain.org/Home|extra]]'
52
+ end
45
53
  let(:url_text3) { 'with internal lik [[A]]' }
46
54
  let(:url_text4) { 'with internal lik [[Home|display text]]' }
47
- let(:url_text5) { 'external with port: http://localhost:2020/path?cgi=foo+bar=baz after '}
55
+ let(:url_text5) do
56
+ 'external with port: http://localhost:2020/path?cgi=foo+bar=baz after '
57
+ end
48
58
 
49
- it "should format links" do
59
+ it 'should format links' do
50
60
  cobj = Card::Content.new url_text1, text_format
51
61
  expect(cobj.to_s).to eq url_text1
52
62
  cobj = Card::Content.new url_text2, text_format
@@ -59,24 +69,35 @@ describe Card::Format do
59
69
  expect(cobj.to_s).to eq url_text5
60
70
  end
61
71
 
62
- it "should format html links" do
72
+ it 'should format html links' do
63
73
  cobj = Card::Content.new url_text1, html_format
64
- expect(cobj.to_s).to eq "with external free link <a target=\"_blank\" class=\"external-link\" href=\"http://localhost:2020/path?cgi=foo&amp;bar=baz\">http://localhost:2020/path?cgi=foo&bar=baz</a>"
65
- cobj = Card::Content.new url_text2+url_text3+url_text4, html_format
66
- expect(cobj.to_s).to eq url_text2+url_text3+url_text4
74
+ expect(cobj.to_s).to eq(
75
+ 'with external free link <a target="_blank" class="external-link" ' \
76
+ 'href="http://localhost:2020/path?cgi=foo&amp;bar=baz">' \
77
+ 'http://localhost:2020/path?cgi=foo&bar=baz</a>'
78
+ )
79
+ cobj = Card::Content.new url_text2 + url_text3 + url_text4, html_format
80
+ expect(cobj.to_s).to eq url_text2 + url_text3 + url_text4
67
81
  cobj = Card::Content.new url_text5, html_format
68
- expect(cobj.to_s).to eq "external with port: <a target=\"_blank\" class=\"external-link\" href=\"http://localhost:2020/path?cgi=foo+bar=baz\">http://localhost:2020/path?cgi=foo+bar=baz</a> after "
82
+ expect(cobj.to_s).to eq(
83
+ 'external with port: <a target="_blank" class="external-link" ' \
84
+ 'href="http://localhost:2020/path?cgi=foo+bar=baz">' \
85
+ 'http://localhost:2020/path?cgi=foo+bar=baz</a> after '
86
+ )
69
87
  end
70
88
 
71
- it "formats page_path" do
72
- expect(text_format.page_path card.cardname).to eq '/'+card.name
73
- expect(html_format.page_path card.cardname).to eq '/'+card.name
74
- expect(text_format.page_path card.cardname, format: 'txt', opt1: 11, opt2: 'foo').to eq "/#{card.name}.txt?opt1=11&opt2=foo"
89
+ it 'formats page_path' do
90
+ expect(text_format.page_path(card.cardname)).to eq '/' + card.name
91
+ expect(html_format.page_path(card.cardname)).to eq '/' + card.name
92
+ page_path = text_format.page_path card.cardname,
93
+ format: 'txt', opt1: 11, opt2: 'foo'
94
+ expect(page_path).to eq "/#{card.name}.txt?opt1=11&opt2=foo"
75
95
  end
76
96
 
77
- it "fomats full path and url" do
78
- expect(text_format.card_path card.name).to eq "/#{card.name}"
79
- expect(html_format.card_url card.name).to eq "http://test.host/#{card.name}"
97
+ it 'fomats full path and url' do
98
+ expect(text_format.card_path(card.name)).to eq "/#{card.name}"
99
+ expect(html_format.card_url(card.name))
100
+ .to eq "http://test.host/#{card.name}"
80
101
  end
81
102
  end
82
103
  end
@@ -1,39 +1,37 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- =begin
4
- describe Card::Loader do
5
- # let(:card_double) { double "Card" }
6
- # let(:pat_all_double) { proxy Card::AllSet }
7
- # let(:format_double) { proxy Card::Format }
8
- # let(:html_format_double) { proxy Card::HtmlFormat }
9
- # it "should auto-load Card class methods from lib/card and mods" do
10
- # #xpect(Card).to receive(:load_mods)
11
- # #
12
- # card = Card[:all]
13
- # expect(card_double).to receive(:load_formats)
14
- # #expect(Card).to receive(:load_sets)
15
- # #expect(Card).to receive(:tracks).with(:any_args) # so Card still loads without core in failure testing
16
- # Card[:all]
17
- # #expect(Card.instance_method(:version)).to be
18
- # # allow(Card).to receive(:version)
19
- # # expect(Card.instance_method(:type_card)).to be
20
- # # allow(Card).to receive(:file_path_sdfs)
21
- # #expect(Card.instance_method(:file_path)).to be
22
- # end
23
- # it "should define Card methods from modules" do
24
- # expect(Card.instance_method(:set_modules)).to be
25
- # end
26
- # it "should define Formatter methods from modules" do
27
- # #expect(Card.instance_method(:render_core)).to be
28
- # expect(Card.instance_method(:_render_raw)).to be
29
- # expect(Card.instance_method(:render_core)).to be
30
- # expect(Card.instance_method(:_render_raw)).to be
31
- # end
32
- # it "should define Formatter methods from modules" do
33
- # expect(html_format_double.method(:render_core)).to be
34
- # expect(html_format_double.method(:_render_raw)).to be
35
- # expect(html_format_double.method(:render_core)).to be
36
- # expect(html_format_double.method(:_render_raw)).to be
37
- # end
38
- end
39
- =end
3
+ # describe Card::Loader do
4
+ # # let(:card_double) { double "Card" }
5
+ # # let(:pat_all_double) { proxy Card::AllSet }
6
+ # # let(:format_double) { proxy Card::Format }
7
+ # # let(:html_format_double) { proxy Card::HtmlFormat }
8
+ # # it "should auto-load Card class methods from lib/card and mods" do
9
+ # # #xpect(Card).to receive(:load_mods)
10
+ # # #
11
+ # # card = Card[:all]
12
+ # # expect(card_double).to receive(:load_formats)
13
+ # # #expect(Card).to receive(:load_sets)
14
+ # # #expect(Card).to receive(:tracks).with(:any_args) # so Card still loads without core in failure testing
15
+ # # Card[:all]
16
+ # # #expect(Card.instance_method(:version)).to be
17
+ # # # allow(Card).to receive(:version)
18
+ # # # expect(Card.instance_method(:type_card)).to be
19
+ # # # allow(Card).to receive(:file_path_sdfs)
20
+ # # #expect(Card.instance_method(:file_path)).to be
21
+ # # end
22
+ # # it "should define Card methods from modules" do
23
+ # # expect(Card.instance_method(:set_modules)).to be
24
+ # # end
25
+ # # it "should define Formatter methods from modules" do
26
+ # # #expect(Card.instance_method(:render_core)).to be
27
+ # # expect(Card.instance_method(:_render_raw)).to be
28
+ # # expect(Card.instance_method(:render_core)).to be
29
+ # # expect(Card.instance_method(:_render_raw)).to be
30
+ # # end
31
+ # # it "should define Formatter methods from modules" do
32
+ # # expect(html_format_double.method(:render_core)).to be
33
+ # # expect(html_format_double.method(:_render_raw)).to be
34
+ # # expect(html_format_double.method(:render_core)).to be
35
+ # # expect(html_format_double.method(:_render_raw)).to be
36
+ # # end
37
+ # end