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,25 +1,29 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::HtmlFormat do
4
-
5
- describe "views" do
6
-
7
- it "content" do
4
+ describe 'views' do
5
+ it 'content' do
8
6
  result = render_card(:content, name: 'A+B')
9
- assert_view_select result, 'div[class="card-slot content-view card-content ALL ALL_PLUS TYPE-basic RIGHT-b TYPE_PLUS_RIGHT-basic-b SELF-a-b"]'
7
+ assert_view_select(
8
+ result,
9
+ 'div[class="card-slot content-view card-content ALL ALL_PLUS ' \
10
+ 'TYPE-basic RIGHT-b TYPE_PLUS_RIGHT-basic-b SELF-a-b"]'
11
+ )
10
12
  end
11
13
 
12
-
13
- it "inclusions in multi edit" do
14
+ it 'nests in multi edit' do
14
15
  c = Card.new name: 'ABook', type: 'Book'
15
- rendered = c.format.render( :edit )
16
+ rendered = c.format.render(:edit)
16
17
 
17
18
  assert_view_select rendered, 'fieldset' do
18
- assert_select 'textarea[name=?][class~="tinymce-textarea card-content"]', 'card[subcards][+illustrator][content]'
19
+ assert_select(
20
+ 'textarea[name=?][class~="tinymce-textarea card-content"]',
21
+ 'card[subcards][+illustrator][content]'
22
+ )
19
23
  end
20
24
  end
21
25
 
22
- it "titled" do
26
+ it 'titled' do
23
27
  result = render_card :titled, name: 'A+B'
24
28
  assert_view_select result, 'div[class~="titled-view"]' do
25
29
  assert_select 'div[class~="card-header"]' do
@@ -29,21 +33,19 @@ describe Card::HtmlFormat do
29
33
  end
30
34
  end
31
35
 
32
- context "Cards with special views" do
33
-
36
+ context 'Cards with special views' do
34
37
  end
35
38
 
36
- context "Simple page with Default Layout" do
39
+ context 'Simple page with Default Layout' do
37
40
  before do
38
41
  Card::Auth.as_bot do
39
42
  card = Card['A+B']
40
43
  @simple_page = card.format.render(:layout)
41
- #warn "render sp: #{card.inspect} :: #{@simple_page}"
44
+ # warn "render sp: #{card.inspect} :: #{@simple_page}"
42
45
  end
43
46
  end
44
47
 
45
-
46
- it "renders top menu" do
48
+ it 'renders top menu' do
47
49
  assert_view_select @simple_page, 'header' do
48
50
  assert_select 'a[class="internal-link"][href="/"]', 'Home'
49
51
  assert_select 'a[class="internal-link"][href="/:recent"]', 'Recent'
@@ -53,57 +55,64 @@ describe Card::HtmlFormat do
53
55
  end
54
56
  end
55
57
 
56
- it "renders card header" do
58
+ it 'renders card header' do
57
59
  # lots of duplication here...
58
- assert_view_select @simple_page, 'div[class="card-header panel-heading"]' do
60
+ assert_view_select @simple_page,
61
+ 'div[class="card-header panel-heading"]' do
59
62
  assert_select 'div[class="card-header-title panel-title"]'
60
63
  end
61
64
  end
62
65
 
63
- it "renders card content" do
64
- assert_view_select @simple_page, 'div[class="card-body panel-body card-content ALL ALL_PLUS TYPE-basic RIGHT-b TYPE_PLUS_RIGHT-basic-b SELF-a-b"]', 'AlphaBeta'
66
+ it 'renders card content' do
67
+ assert_view_select(
68
+ @simple_page,
69
+ 'div[class="card-body panel-body card-content ALL ALL_PLUS ' \
70
+ 'TYPE-basic RIGHT-b TYPE_PLUS_RIGHT-basic-b SELF-a-b"]',
71
+ 'AlphaBeta'
72
+ )
65
73
  end
66
74
 
67
- it "renders card credit" do
68
- assert_view_select @simple_page, 'div[class~="SELF-Xcredit"]' do#, /Wheeled by/ do
75
+ it 'renders card credit' do
76
+ assert_view_select @simple_page, 'div[class~="SELF-Xcredit"]' do
69
77
  assert_select 'img'
70
78
  assert_select 'a', "Wagn v#{Card::Version.release}"
71
79
  end
72
80
  end
73
81
  end
74
82
 
75
- context "layout" do
83
+ context 'layout' do
76
84
  before do
77
85
  Card::Auth.as_bot do
78
86
  @layout_card = Card.create name: 'tmp layout', type: 'Layout'
79
- #warn "layout #{@layout_card.inspect}"
87
+ # warn "layout #{@layout_card.inspect}"
80
88
  end
81
- c = Card['*all+*layout'] and c.content = '[[tmp layout]]'
89
+ c = Card['*all+*layout']
90
+ c.content = '[[tmp layout]]'
82
91
  @main_card = Card.fetch('Joe User')
83
92
  Card::Env[:main_name] = @main_card.name
84
93
 
85
- #warn "lay #{@layout_card.inspect}, #{@main_card.inspect}"
94
+ # warn "lay #{@layout_card.inspect}, #{@main_card.inspect}"
86
95
  end
87
96
 
88
- # it "should default to core view when in layout mode" do
89
- # @layout_card.content = "Hi {{A}}"
90
- # Card::Auth.as_bot { @layout_card.save }
91
- #
92
- # expect(@main_card.format.render(:layout)).to match('Hi Alpha')
93
- # end
94
-
95
- # it "should default to open view for main card" do
96
- # @layout_card.content='Open up {{_main}}'
97
- # Card::Auth.as_bot { @layout_card.save }
98
- #
99
- # result = @main_card.format.render_layout
100
- # expect(result).to match(/Open up/)
101
- # expect(result).to match(/card-header/)
102
- # expect(result).to match(/Joe User/)
103
- # end
104
-
105
- it "should render custom view of main" do
106
- @layout_card.content='Hey {{_main|name}}'
97
+ # it "should default to core view when in layout mode" do
98
+ # @layout_card.content = "Hi {{A}}"
99
+ # Card::Auth.as_bot { @layout_card.save }
100
+ #
101
+ # expect(@main_card.format.render(:layout)).to match('Hi Alpha')
102
+ # end
103
+
104
+ # it "should default to open view for main card" do
105
+ # @layout_card.content='Open up {{_main}}'
106
+ # Card::Auth.as_bot { @layout_card.save }
107
+ #
108
+ # result = @main_card.format.render_layout
109
+ # expect(result).to match(/Open up/)
110
+ # expect(result).to match(/card-header/)
111
+ # expect(result).to match(/Joe User/)
112
+ # end
113
+
114
+ it 'renders custom view of main' do
115
+ @layout_card.content = 'Hey {{_main|name}}'
107
116
  Card::Auth.as_bot { @layout_card.save }
108
117
 
109
118
  result = @main_card.format.render_layout
@@ -112,28 +121,34 @@ describe Card::HtmlFormat do
112
121
  end
113
122
 
114
123
  it "shouldn't recurse" do
115
- @layout_card.content="Mainly {{_main|core}}"
124
+ @layout_card.content = 'Mainly {{_main|core}}'
116
125
  Card::Auth.as_bot { @layout_card.save }
117
126
 
118
- rendered = expect(@layout_card.format.render(:layout)).to eq(
119
- %{Mainly <div id="main"><div class="CodeRay">\n <div class="code"><pre>Mainly {{_main|core}}</pre></div>\n</div>\n</div>\n<div class="modal fade" role="dialog" id="modal-main-slot"><div class="modal-dialog"><div class="modal-content"></div></div></div>}
127
+ expect(@layout_card.format.render(:layout)).to eq(
128
+ "Mainly <div id=\"main\"><div class=\"CodeRay\">\n " \
129
+ "<div class=\"code\"><pre>Mainly {{_main|core}}</pre></div>\n" \
130
+ "</div>\n</div>\n" \
131
+ '<div class="modal fade" role="dialog" id="modal-main-slot">' \
132
+ '<div class="modal-dialog"><div class="modal-content">' \
133
+ '</div></div></div>'
120
134
  )
121
- #probably better to check that it matches "Mainly" exactly twice.
135
+ # probably better to check that it matches "Mainly" exactly twice.
122
136
  end
123
137
 
124
-
125
- it "should handle nested _main references" do
138
+ it 'handles nested _main references' do
126
139
  Card::Auth.as_bot do
127
- @layout_card.content="{{outer space|core}}"
140
+ @layout_card.content = '{{outer space|core}}'
128
141
  @layout_card.save!
129
- Card.create name: "outer space", content: "{{_main|name}}"
142
+ Card.create name: 'outer space', content: '{{_main|name}}'
130
143
  end
131
144
 
132
- expect(@layout_card.format.render(:layout)).to eq(%{Joe User\n<div class="modal fade" role="dialog" id="modal-main-slot"><div class="modal-dialog"><div class="modal-content"></div></div></div>})
145
+ expect(@layout_card.format.render(:layout)).to eq(
146
+ "Joe User\n" \
147
+ '<div class="modal fade" role="dialog" id="modal-main-slot">' \
148
+ '<div class="modal-dialog"><div class="modal-content">' \
149
+ '</div></div></div>'
150
+ )
133
151
  end
134
152
  end
135
-
136
-
137
153
  end
138
-
139
154
  end
@@ -1,83 +1,96 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::All::Collection do
4
- describe "#item_names" do
5
- it "returns item for each line of basic content" do
6
- expect(Card.new( name: "foo", content: "X\nY" ).item_names).to eq(["X","Y"])
4
+ describe '#item_names' do
5
+ subject do
6
+ item_names_args = @context ? { context: @context } : {}
7
+ Card.new(@args).item_names(item_names_args)
8
+ end
9
+ it 'returns item for each line of basic content' do
10
+ @args = { name: 'foo', content: "X\nY" }
11
+ is_expected.to eq(%w(X Y))
7
12
  end
8
13
 
9
- it "returns list of card names for search" do
10
- card = Card.new( name: "foo", type: "Search", content: %[{"name":"Z"}])
11
- expect(card.item_names).to eq(["Z"])
14
+ it 'returns list of card names for search' do
15
+ @args = { name: 'foo', type: 'Search', content: '{"name":"Z"}' }
16
+ is_expected.to eq(['Z'])
12
17
  end
13
18
 
14
- it "handles searches relative to context card" do
19
+ it 'handles searches relative to context card' do
15
20
  # note: A refers to 'Z'
16
- expect(Card.new(name: "foo", type: "Search", content: %[{"referred_to_by":"_self"}]).item_names( context: 'A' )).to eq(["Z"])
21
+ @context = 'A'
22
+ @args = { name: 'foo', type: 'Search',
23
+ content: '{"referred_to_by":"_self"}' }
24
+ is_expected.to eq(['Z'])
17
25
  end
18
26
  end
19
27
 
20
- describe "#extended_list" do
28
+ describe '#extended_list' do
21
29
  it "returns item's content for pointer setting" do
22
- c = Card.new(name: "foo", type: "Pointer", content: "[[Z]]")
30
+ c = Card.new(name: 'foo', type: 'Pointer', content: '[[Z]]')
23
31
  expect(c.extended_list).to eq(["I'm here to be referenced to"])
24
32
  end
25
33
  end
26
34
 
27
- describe "#extended_item_cards" do
35
+ describe '#extended_item_cards' do
28
36
  it "returns the 'leaf cards' of a tree of pointer cards" do
29
37
  Card::Auth.as_bot do
30
- Card.create!(name: "node", type: "Pointer", content: "[[Z]]")
38
+ Card.create!(name: 'node', type: 'Pointer', content: '[[Z]]')
31
39
  end
32
- c = Card.new(name: "foo", type: "Pointer", content: "[[node]]\n[[A]]")
33
- expect(c.extended_item_cards).to eq([Card.fetch("Z"),Card.fetch("A")],)
40
+ c = Card.new(name: 'foo', type: 'Pointer', content: "[[node]]\n[[A]]")
41
+ expect(c.extended_item_cards).to eq([Card.fetch('Z'), Card.fetch('A')])
34
42
  end
35
43
  end
36
44
 
37
- describe "#extended_item_contents" do
45
+ describe '#extended_item_contents' do
38
46
  it "returns the content of the 'leaf cards' of a tree of pointer cards" do
39
47
  Card::Auth.as_bot do
40
- Card.create!(name: "node", type: "Pointer", content: "[[Z]]")
48
+ Card.create!(name: 'node', type: 'Pointer', content: '[[Z]]')
41
49
  end
42
- c = Card.new(name: "foo", type: "Pointer", content: "[[node]]\n[[T]]")
43
- expect(c.extended_item_contents).to eq(["I'm here to be referenced to", "Theta"])
50
+ c = Card.new(name: 'foo', type: 'Pointer', content: "[[node]]\n[[T]]")
51
+ expect(c.extended_item_contents)
52
+ .to eq(["I'm here to be referenced to", 'Theta'])
44
53
  end
45
54
  end
46
55
 
47
- describe "#contextual_content" do
48
-
49
- it "processes inclusions relative to context card" do
50
- context_card = Card["A"] # refers to 'Z'
51
- c = Card.new(name: "foo", content: "{{_self+B|core}}")
52
- expect(c.contextual_content( context_card )).to eq("AlphaBeta")
56
+ describe '#contextual_content' do
57
+ it 'processes nests relative to context card' do
58
+ context_card = Card['A'] # refers to 'Z'
59
+ c = Card.new(name: 'foo', content: '{{_self+B|core}}')
60
+ expect(c.contextual_content(context_card)).to eq('AlphaBeta')
53
61
  end
54
62
 
55
- it "returns content even when context card is hard templated" do #why the heck is this good? -efm
56
- context_card = Card["A"] # refers to 'Z'
63
+ # why the heck is this good? -efm
64
+ it 'returns content even when context card is hard templated' do
65
+ context_card = Card['A'] # refers to 'Z'
57
66
 
58
67
  Card::Auth.as_bot do
59
- Card.create! name: "A+*self+*structure", content: "Banana"
68
+ Card.create! name: 'A+*self+*structure', content: 'Banana'
60
69
  end
61
- c = Card.new( name: "foo", content: "{{_self+B|core}}" )
62
- expect(c.contextual_content( context_card )).to eq("AlphaBeta")
70
+ c = Card.new name: 'foo', content: '{{_self+B|core}}'
71
+ expect(c.contextual_content(context_card)).to eq('AlphaBeta')
63
72
  end
64
73
  end
65
74
 
66
75
  describe '#map_nests' do
67
76
  before do
68
77
  Card::Auth.as_bot do
69
- @list = Card.create! name: 'mixed list', content: "[[A]]\n{{B}}\n[[C|link C]]\n{{D|name;title:nest D}}"
78
+ @list = Card.create!(
79
+ name: 'mixed list',
80
+ content: "[[A]]\n{{B}}\n[[C|link C]]\n{{D|name;title:nest D}}"
81
+ )
70
82
  end
71
83
  end
72
84
  it 'handles links and nest arguments' do
73
- result = @list.format.map_references_with_args do |name,args|
85
+ result = @list.format.map_references_with_args do |name, args|
74
86
  [name, args]
75
87
  end
76
88
  expect(result).to eq [
77
- ['A', {view: :closed}],
78
- ['B', {view: :closed, inc_name: "B", inc_syntax: "B"}],
79
- ['C', {view: :closed, title: 'link C'}],
80
- ['D', {view: "name", title: "nest D", inc_name: "D", inc_syntax: "D|name;title:nest D"}]
89
+ ['A', { view: :closed }],
90
+ ['B', { view: :closed, inc_name: 'B', inc_syntax: 'B' }],
91
+ ['C', { view: :closed, title: 'link C' }],
92
+ ['D', { view: 'name', title: 'nest D', inc_name: 'D',
93
+ inc_syntax: 'D|name;title:nest D' }]
81
94
  ]
82
95
  end
83
96
  end
@@ -101,7 +114,8 @@ describe Card::Set::All::Collection do
101
114
 
102
115
  it 'handles relative names' do
103
116
  Card::Auth.as_bot do
104
- Card.create! name: 'G', content: "[[+B]]", type: 'pointer', subcards: {'+B'=>'GammaBeta'}
117
+ Card.create! name: 'G', content: '[[+B]]', type: 'pointer',
118
+ subcards: { '+B' => 'GammaBeta' }
105
119
  end
106
120
  tabs = Card.fetch('G').format.render_tabs
107
121
  assert_view_select tabs, 'div[role=tabpanel]' do
@@ -118,24 +132,30 @@ describe Card::Set::All::Collection do
118
132
 
119
133
  it 'handles item params' do
120
134
  tabs = render_content '{{Fruit+*type+*create|tabs|name;structure:Home}}'
121
- path = "/Anyone?#{ {slot: {structure: 'Home'},view: :name}.to_param}"
135
+ params = { slot: { structure: 'Home' }, view: :name }.to_param
136
+ path = "/Anyone?#{params}"
122
137
  assert_view_select tabs, 'div[role=tabpanel]' do
123
- assert_select %{li > a[data-toggle="tab"][data-url="#{path}"]}
138
+ assert_select %(li > a[data-toggle="tab"][data-url="#{path}"])
124
139
  end
125
140
  end
126
141
  it 'handles nests as items' do
127
- tabs = render_card :tabs, name: 'tab_test', type_id: Card::PlainTextID, content: "{{A|type;title:my tab title}}"
142
+ tabs = render_card :tabs, name: 'tab_test', type_id: Card::PlainTextID,
143
+ content: '{{A|type;title:my tab title}}'
128
144
  assert_view_select tabs, 'div[role=tabpanel]' do
129
- assert_select 'li > a[data-toggle=tab][href="#tab_test-a"]', 'my tab title'
145
+ assert_select 'li > a[data-toggle=tab][href="#tab_test-a"]',
146
+ 'my tab title'
130
147
  assert_select 'div.tab-pane#tab_test-a', 'Basic'
131
148
  end
132
149
  end
133
150
 
134
151
  it 'works with search cards' do
135
- Card.create type: 'Search', name: 'Asearch', content: %{{"type":"User"}}
136
- tabs=render_content("{{Asearch|tabs;item:name}}")
152
+ Card.create type: 'Search', name: 'Asearch', content: '{"type":"User"}'
153
+ tabs = render_content('{{Asearch|tabs;item:name}}')
137
154
  assert_view_select tabs, 'div[role=tabpanel]' do
138
- assert_select 'li > a[data-toggle=tab][href="#asearch-joe_admin"] span.card-title', 'Joe Admin'
155
+ assert_select(
156
+ 'li > a[data-toggle=tab][href="#asearch-joe_admin"] span.card-title',
157
+ 'Joe Admin'
158
+ )
139
159
  end
140
160
  end
141
161
  end
@@ -3,13 +3,13 @@
3
3
  describe Card::Set::All::Content do
4
4
  describe 'save_content_draft' do
5
5
  it 'should store a draft revision' do
6
- @card = Card.create! name: "mango", content: "foo"
7
- @card.save_content_draft("bar")
6
+ @card = Card.create! name: 'mango', content: 'foo'
7
+ @card.save_content_draft('bar')
8
8
  expect(@card.drafts.length).to eq 1
9
- @card.save_content_draft("booboo")
9
+ @card.save_content_draft('booboo')
10
10
  @card.reload
11
11
  expect(@card.drafts.length).to eq 1
12
- expect(@card.drafts[0].new_values[:content]).to eq "booboo"
12
+ expect(@card.drafts[0].new_values[:content]).to eq 'booboo'
13
13
  end
14
14
  end
15
15
  end
@@ -55,6 +55,14 @@ describe Card::Set::All::Fetch do
55
55
  expect(Card.fetch('A+virtual')).not_to be_nil
56
56
  end
57
57
 
58
+ it 'fetches virtual set cards' do
59
+ aself = Card.fetch('A+*self')
60
+ Card::Cache.reset_all
61
+ Card.fetch 'A+*self'
62
+
63
+ expect(aself.set_names).to include('Set+*type')
64
+ end
65
+
58
66
  it 'handles name variants of cached cards' do
59
67
  expect(Card.fetch('yomama+*self').name).to eq('yomama+*self')
60
68
  expect(Card.fetch('YOMAMA+*self').name).to eq('YOMAMA+*self')
@@ -121,8 +129,9 @@ describe Card::Set::All::Fetch do
121
129
  end
122
130
 
123
131
  it 'prefers db cards to pattern virtual cards' do
124
- c1=Card.create!(name: 'y+*right+*structure', content: 'Formatted Content')
125
- c2=Card.create!(name: 'a+y', content: 'DB Content')
132
+ Card.create! name: 'y+*right+*structure',
133
+ content: 'Formatted Content'
134
+ Card.create! name: 'a+y', content: 'DB Content'
126
135
  card = Card.fetch('a+y')
127
136
  expect(card.virtual?).to be_falsey
128
137
  expect(card.rule(:structure)).to eq('Formatted Content')
@@ -141,7 +150,7 @@ describe Card::Set::All::Fetch do
141
150
 
142
151
  it 'should recognize pattern overrides' do
143
152
  # ~~~ create right rule
144
- tc=Card.create!(name: 'y+*right+*structure', content: 'Right Content')
153
+ Card.create!(name: 'y+*right+*structure', content: 'Right Content')
145
154
  card = Card.fetch('a+y')
146
155
  expect(card.virtual?).to be
147
156
  expect(card.raw_content).to eq('Right Content')
@@ -8,18 +8,18 @@ describe Card::Set::All::Name do
8
8
  end
9
9
  end
10
10
 
11
- it "should handle cards without names" do
11
+ it 'should handle cards without names' do
12
12
  c = Card.create! type: 'Book'
13
13
  expect(c.name).to eq('b1')
14
14
  end
15
15
 
16
- it "should increment again if name already exists" do
16
+ it 'should increment again if name already exists' do
17
17
  b1 = Card.create! type: 'Book'
18
18
  b2 = Card.create! type: 'Book'
19
19
  expect(b2.name).to eq('b2')
20
20
  end
21
21
 
22
- it "should handle trashed names" do
22
+ it 'should handle trashed names' do
23
23
  b1 = Card.create! type: 'Book'
24
24
  Card::Auth.as_bot { b1.delete }
25
25
  b1 = Card.create! type: 'Book'
@@ -43,7 +43,6 @@ describe Card::Set::All::Name do
43
43
  expect(@card.errors[:codename].first).to match(/already in use/)
44
44
  end
45
45
  end
46
-
47
46
  end
48
47
 
49
48
  describe 'repair_key' do