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
@@ -5,19 +5,24 @@ describe Card::Set::Type::Html do
5
5
  Card::Auth.current_id = Card::WagnBotID
6
6
  end
7
7
 
8
- it "should have special editor" do
8
+ it 'has special editor' do
9
9
  assert_view_select render_editor('Html'), 'textarea[rows="5"]'
10
10
  end
11
11
 
12
- it "should not render any content in closed view" do
13
- expect(render_card(:closed_content, type: 'Html', content: "<strong>Lions and Tigers</strong>")).to eq('')
12
+ it 'does not render any content in closed view' do
13
+ rendered = render_card :closed_content,
14
+ type: 'Html',
15
+ content: '<strong>Lions and Tigers</strong>'
16
+ expect(rendered).to eq('')
14
17
  end
15
18
 
16
- it "should render inclusions" do
17
- expect(render_card( :core, type: 'HTML', content: '{{a}}' )).to match(/slot/)
19
+ it 'renders nests' do
20
+ rendered = render_card :core, type: 'HTML', content: '{{a}}'
21
+ expect(rendered).to match(/slot/)
18
22
  end
19
23
 
20
- it 'should not render uris' do
21
- expect(render_card( :core, type: 'HTML', content: 'http://google.com' )).not_to match(/\<a/)
24
+ it 'does not render uris' do
25
+ rendered = render_card :core, type: 'HTML', content: 'http://google.com'
26
+ expect(rendered).not_to match(/\<a/)
22
27
  end
23
28
  end
@@ -1,90 +1,97 @@
1
- # -*- encoding : utf-8 -*-require "image_spec"
2
-
1
+ # -*- encoding : utf-8 -*-require 'image_spec'
3
2
 
4
3
  describe Card::Set::Type::Image do
5
- it "has special editor" do
4
+ it 'has special editor' do
6
5
  assert_view_select render_editor('Image'), 'div[class="choose-file"]' do
7
6
  assert_select 'input[class~="file-upload slotter"]'
8
7
  end
9
8
  end
10
9
 
11
- it "handles size argument in inclusion syntax" do
12
- file = File.new(File.join FIXTURES_PATH, 'mao2.jpg')
10
+ it 'handles size argument in nest syntax' do
11
+ file = File.new File.join(FIXTURES_PATH, 'mao2.jpg')
13
12
  image_card = Card.create! name: 'TestImage', type: 'Image', image: file
14
- including_card = Card.new name: 'Image1', content: "{{TestImage | core; size:small }}"
13
+ including_card = Card.new name: 'Image1',
14
+ content: '{{TestImage | core; size:small }}'
15
15
  rendered = including_card.format._render :core
16
- assert_view_select rendered, 'img[src=?]', "/files/~#{image_card.id}/#{image_card.last_content_action_id}-small.jpg"
16
+ assert_view_select(
17
+ rendered, 'img[src=?]',
18
+ "/files/~#{image_card.id}/#{image_card.last_content_action_id}-small.jpg"
19
+ )
17
20
  end
18
21
 
19
-
20
- context "newly created image card" do
22
+ context 'newly created image card' do
21
23
  before do
22
24
  Card::Auth.as_bot do
23
- Card.create! name: "image card", type: 'image', image: File.new( File.join FIXTURES_PATH, 'mao2.jpg' )
25
+ Card.create! name: 'image card', type: 'image',
26
+ image: File.new(File.join(FIXTURES_PATH, 'mao2.jpg'))
24
27
  end
25
28
  end
26
29
  subject { Card['image card'] }
27
- it "stores correct identifier" do
28
- expect(subject.content).to eq "~#{subject.id}/#{subject.last_action_id}.jpg"
30
+ it 'stores correct identifier' do
31
+ expect(subject.content)
32
+ .to eq "~#{subject.id}/#{subject.last_action_id}.jpg"
29
33
  end
30
34
 
31
- it "stores image" do
35
+ it 'stores image' do
32
36
  expect(subject.image.size).to eq 7202
33
37
  end
34
38
 
35
- it "stores small size" do
39
+ it 'stores small size' do
36
40
  expect(subject.image.small.size).to be < 6000
37
41
  expect(subject.image.small.size).to be > 0
38
42
  end
39
43
 
40
- it "stores icon size" do
44
+ it 'stores icon size' do
41
45
  expect(subject.image.icon.size).to be < 3000
42
46
  expect(subject.image.icon.size).to be > 0
43
47
  end
44
48
 
45
- it "saves original file name as action comment" do
46
- expect(subject.last_action.comment).to eq "mao2.jpg"
49
+ it 'saves original file name as action comment' do
50
+ expect(subject.last_action.comment).to eq 'mao2.jpg'
47
51
  end
48
52
 
49
- it "has correct original filename" do
50
- expect(subject.original_filename).to eq "mao2.jpg"
53
+ it 'has correct original filename' do
54
+ expect(subject.original_filename).to eq 'mao2.jpg'
51
55
  end
52
56
 
53
- it "has correct url" do
54
- expect(subject.image.url).to eq "/files/~#{subject.id}/#{subject.last_action_id}-original.jpg"
57
+ it 'has correct url' do
58
+ expect(subject.image.url)
59
+ .to eq "/files/~#{subject.id}/#{subject.last_action_id}-original.jpg"
55
60
  end
56
61
 
57
-
58
62
  describe 'view: source' do
59
63
  it 'renders url' do
60
- expect(subject.format.render(:source)).to eq("/files/~#{subject.id}/#{subject.last_action_id}-medium.jpg")
64
+ expect(subject.format.render(:source))
65
+ .to eq("/files/~#{subject.id}/#{subject.last_action_id}-medium.jpg")
61
66
  end
62
67
  end
63
68
 
64
-
65
69
  describe 'view: act_expanded' do
66
70
  it 'gets image url' do
67
- act_summary = subject.format.render(:act_expanded, act: subject.last_act)
71
+ act_summary = subject.format
72
+ .render(:act_expanded, act: subject.last_act)
68
73
  current_url = subject.image.versions[:medium].url
69
- expect(act_summary).to match /#{Regexp.quote current_url}/
74
+ expect(act_summary).to match(/#{Regexp.quote current_url}/)
70
75
  end
71
76
  end
72
77
 
73
-
74
- context "updated file card" do
78
+ context 'updated file card' do
75
79
  before do
76
- subject.update_attributes! image: File.new( File.join FIXTURES_PATH, 'rails.gif' )
80
+ subject.update_attributes!(
81
+ image: File.new(File.join(FIXTURES_PATH, 'rails.gif'))
82
+ )
77
83
  end
78
- it "updates file" do
84
+ it 'updates file' do
79
85
  expect(subject.image.size).to eq 8533
80
86
  end
81
87
 
82
- it "updates original file name" do
83
- expect(subject.image.original_filename).to eq "rails.gif"
88
+ it 'updates original file name' do
89
+ expect(subject.image.original_filename).to eq 'rails.gif'
84
90
  end
85
91
 
86
- it "updates url" do
87
- expect(subject.image.url).to eq "/files/~#{subject.id}/#{subject.last_action_id}-original.gif"
92
+ it 'updates url' do
93
+ expect(subject.image.url)
94
+ .to eq "/files/~#{subject.id}/#{subject.last_action_id}-original.gif"
88
95
  end
89
96
  end
90
97
  end
@@ -95,31 +102,34 @@ describe Card::Set::Type::Image do
95
102
  expect(subject.image.size).to be > 0
96
103
  end
97
104
  it 'has correct url' do
98
- expect(subject.image.url).to eq "/files/:logo/05_standard-original.png"
105
+ expect(subject.image.url).to eq '/files/:logo/05_standard-original.png'
99
106
  end
100
- it "has correct url as content" do
107
+ it 'has correct url as content' do
101
108
  expect(subject.content).to eq ":#{subject.codename}/05_standard.png"
102
109
  end
103
110
 
104
- it "becomes a regular file when changed" do
111
+ it 'becomes a regular file when changed' do
105
112
  Card::Auth.as_bot do
106
- subject.update_attributes! image: File.new( File.join FIXTURES_PATH, 'rails.gif' )
113
+ subject.update_attributes!(
114
+ image: File.new(File.join(FIXTURES_PATH, 'rails.gif'))
115
+ )
107
116
  end
108
117
  expect(subject.mod_file?).to be_falsey
109
- expect(subject.image.url).to eq "/files/~#{subject.id}/#{subject.last_action_id}-original.gif"
118
+ expect(subject.image.url)
119
+ .to eq "/files/~#{subject.id}/#{subject.last_action_id}-original.gif"
110
120
  end
111
121
 
112
- describe "#mod_file?" do
113
- it "returns the mod name" do
122
+ describe '#mod_file?' do
123
+ it 'returns the mod name' do
114
124
  expect(subject.mod_file?).to eq('05_standard')
115
125
  end
116
126
  end
117
127
 
118
- describe "source view" do
119
- it "renders url with medium version" do
120
- expect(subject.format.render_source).to eq "/files/:#{subject.codename}/05_standard-medium.png"
128
+ describe 'source view' do
129
+ it 'renders url with medium version' do
130
+ expect(subject.format.render_source)
131
+ .to eq "/files/:#{subject.codename}/05_standard-medium.png"
121
132
  end
122
133
  end
123
134
  end
124
-
125
135
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::LayoutType do
4
- it "should include Html card methods" do
5
- expect(Card.new( type: 'Layout' ).clean_html?).to be_falsey
4
+ it 'should include Html card methods' do
5
+ expect(Card.new(type: 'Layout').clean_html?).to be_falsey
6
6
  end
7
7
  end
@@ -81,7 +81,7 @@ describe Card::Set::Type::ListedBy do
81
81
  }
82
82
  )
83
83
  Card.fetch('Adventures of Buckleharry Finn+authors')
84
- .update_attributes!(content: '[[Darles Chickens]]')
84
+ .update_attributes!(content: '[[Darles Chickens]]')
85
85
  end
86
86
  end
87
87
  it do
@@ -110,7 +110,7 @@ describe Card::Set::Type::ListedBy do
110
110
  )
111
111
  end
112
112
  end
113
- it { is_expected.to eq ['50 grades of shy','Parry Moppins'] }
113
+ it { is_expected.to eq ['50 grades of shy', 'Parry Moppins'] }
114
114
  end
115
115
 
116
116
  context 'when the name of Darles Chickens changed' do
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Number do
4
- it "should have special editor" do
4
+ it 'should have special editor' do
5
5
  assert_view_select render_editor('Number'), 'input[type="text"]'
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Phrase do
4
- it "should have special editor" do
4
+ it 'should have special editor' do
5
5
  assert_view_select render_editor('Phrase'), 'input[type="text"][class~="card-content"]'
6
6
  end
7
7
  end
@@ -1,38 +1,38 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::SearchType do
4
- it "wraps search items with correct view class" do
5
- Card.create type: 'Search', name: 'Asearch', content: %{{"type":"User"}}
6
- c=render_content("{{Asearch|core;item:name}}")
4
+ it 'wraps search items with correct view class' do
5
+ Card.create type: 'Search', name: 'Asearch', content: %({"type":"User"})
6
+ c = render_content('{{Asearch|core;item:name}}')
7
7
  expect(c).to match('search-result-item item-name')
8
- expect(render_content("{{Asearch|core}}" ).scan('search-result-item item-closed').size).to eq(14)
9
- expect(render_content("{{Asearch|core;item:open}}").scan('search-result-item item-open' ).size).to eq(14)
10
- expect(render_content("{{Asearch|core|titled}}" ).scan('search-result-item item-titled').size).to eq(14)
8
+ expect(render_content('{{Asearch|core}}').scan('search-result-item item-closed').size).to eq(14)
9
+ expect(render_content('{{Asearch|core;item:open}}').scan('search-result-item item-open').size).to eq(14)
10
+ expect(render_content('{{Asearch|core|titled}}').scan('search-result-item item-titled').size).to eq(14)
11
11
  end
12
12
 
13
13
  it "handles returning 'count'" do
14
- expect(render_card(:core, type: 'Search', content: %{{ "type":"User", "return":"count"}})).to eq('14')
14
+ expect(render_card(:core, type: 'Search', content: %({ "type":"User", "return":"count"}))).to eq('14')
15
15
  end
16
16
 
17
- it "passes item args correctly" do
17
+ it 'passes item args correctly' do
18
18
  Card.create!(
19
19
  name: 'Pointer2Searches',
20
20
  type_id: Card::PointerID,
21
21
  content: "[[Layout+*type+by name]]\n[[PlainText+*type+by name]]"
22
22
  )
23
- r = render_content "{{Pointer2Searches|core|closed|hide:menu}}"
23
+ r = render_content '{{Pointer2Searches|core|closed|hide:menu}}'
24
24
  expect(r.scan('"view":"link"').size).to eq(0)
25
- expect(r.scan('item-closed').size).to eq(2) #there are two of each
25
+ expect(r.scan('item-closed').size).to eq(2) # there are two of each
26
26
  end
27
27
 
28
28
  it 'handles type update from pointer' do
29
29
  pointer_card = Card.create!(
30
- name: "PointerToSearches",
31
- type_id: Card::PointerID,
30
+ name: 'PointerToSearches',
31
+ type_id: Card::PointerID
32
32
  )
33
33
 
34
- pointer_card.update_attributes! type_id: Card::SearchTypeID,content: %{{"type":"User"}}
35
- expect(pointer_card.content).to eq(%{{"type":"User"}})
34
+ pointer_card.update_attributes! type_id: Card::SearchTypeID, content: %({"type":"User"})
35
+ expect(pointer_card.content).to eq(%({"type":"User"}))
36
36
  end
37
37
 
38
38
  context 'references' do
@@ -47,12 +47,11 @@ describe Card::Set::Type::SearchType do
47
47
  Card['Y'].update_attributes! name: 'YYY', update_referers: true
48
48
  expect(subject.content).to eq '{"name":"YYY"}'
49
49
  end
50
-
51
50
  end
52
51
  context 'rss format' do
53
52
  it 'render rss without errors' do
54
53
  search_card = Card.create type: 'Search', name: 'Asearch',
55
- content: %{{"id":"1"}}
54
+ content: %({"id":"1"})
56
55
  rss = search_card.format(:rss).render_feed
57
56
  expect(rss).to have_tag('title', text: 'Wagn Bot')
58
57
  end
@@ -1,26 +1,25 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Set do
4
-
5
4
  describe :junction_only? do
6
- it "should identify sets that only apply to plus cards" do
7
- expect(Card.fetch("*all").junction_only?).to be_falsey
8
- expect(Card.fetch("*all plus").junction_only?).to be_truthy
9
- expect(Card.fetch("Book+*type").junction_only?).to be_falsey
10
- expect(Card.fetch("*to+*right").junction_only?).to be_truthy
11
- expect(Card.fetch("Book+*to+*type plus right").junction_only?).to be_truthy
5
+ it 'should identify sets that only apply to plus cards' do
6
+ expect(Card.fetch('*all').junction_only?).to be_falsey
7
+ expect(Card.fetch('*all plus').junction_only?).to be_truthy
8
+ expect(Card.fetch('Book+*type').junction_only?).to be_falsey
9
+ expect(Card.fetch('*to+*right').junction_only?).to be_truthy
10
+ expect(Card.fetch('Book+*to+*type plus right').junction_only?).to be_truthy
12
11
  end
13
12
  end
14
-
13
+
15
14
  describe :inheritable? do
16
- it "should identify sets that can inherit rules" do
17
- expect(Card.fetch("A+*self").inheritable?).to be_falsey
18
- expect(Card.fetch("A+B+*self").inheritable?).to be_truthy
19
- expect(Card.fetch("Book+*to+*type plus right").inheritable?).to be_truthy
20
- expect(Card.fetch("Book+*type").inheritable?).to be_falsey
21
- expect(Card.fetch("*to+*right").inheritable?).to be_truthy
22
- expect(Card.fetch("*all plus").inheritable?).to be_truthy
23
- expect(Card.fetch("*all").inheritable?).to be_falsey
15
+ it 'should identify sets that can inherit rules' do
16
+ expect(Card.fetch('A+*self').inheritable?).to be_falsey
17
+ expect(Card.fetch('A+B+*self').inheritable?).to be_truthy
18
+ expect(Card.fetch('Book+*to+*type plus right').inheritable?).to be_truthy
19
+ expect(Card.fetch('Book+*type').inheritable?).to be_falsey
20
+ expect(Card.fetch('*to+*right').inheritable?).to be_truthy
21
+ expect(Card.fetch('*all plus').inheritable?).to be_truthy
22
+ expect(Card.fetch('*all').inheritable?).to be_falsey
24
23
  end
25
24
  end
26
- end
25
+ end
@@ -58,7 +58,9 @@ describe Card::Set::Type::Signup do
58
58
  end
59
59
 
60
60
  it 'notifies someone' do
61
- expect(ActionMailer::Base.deliveries.last.to).to eq(['signups@wagn.org'])
61
+ expect(ActionMailer::Base.deliveries.map(&:to).sort).to(
62
+ eq [['signups@wagn.org'], ['wolf@wagn.org']]
63
+ )
62
64
  end
63
65
 
64
66
  it 'is activated by an update' do
@@ -77,7 +79,7 @@ describe Card::Set::Type::Signup do
77
79
  8.days.ago.strftime('%F %T')
78
80
  @account.token_card.expire
79
81
  Card::Env.params[:token] = @token
80
-
82
+ @signup = Card.fetch 'big bad wolf'
81
83
  result = @signup.update_attributes!({})
82
84
  # successfully completes save
83
85
  expect(result).to eq(true)
@@ -175,9 +177,9 @@ describe Card::Set::Type::Signup do
175
177
  end
176
178
 
177
179
  it 'sends welcome email when account is activated' do
178
- @signup.run_phase :approve do
179
- @signup.activate_account
180
- end
180
+ # @signup.run_phase :approve do
181
+ @signup.activate_account
182
+ # end
181
183
  @mail = ActionMailer::Base.deliveries.find { |a| a.subject == 'welcome' }
182
184
  Mail::TestMailer.deliveries.clear
183
185
 
@@ -1,12 +1,12 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Toggle do
4
- it "should have special editor" do
4
+ it 'should have special editor' do
5
5
  assert_view_select render_editor('Toggle'), 'input[type="checkbox"]'
6
6
  end
7
7
 
8
- it "should have yes/no as processed content" do
9
- expect(render_card(:core, type: 'Toggle', content: "0")).to eq('no')
10
- expect(render_card(:closed_content, type: 'Toggle', content: "1")).to eq('yes')
8
+ it 'should have yes/no as processed content' do
9
+ expect(render_card(:core, type: 'Toggle', content: '0')).to eq('no')
10
+ expect(render_card(:closed_content, type: 'Toggle', content: '1')).to eq('yes')
11
11
  end
12
12
  end
@@ -1,41 +1,41 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Uri do
4
- it "should have special editor" do
4
+ it 'should have special editor' do
5
5
  assert_view_select render_editor('Uri'), 'input[type="text"][class~="card-content"]'
6
6
  end
7
7
 
8
- it "renders core view links" do
8
+ it 'renders core view links' do
9
9
  card = Card.create(type: 'URI', name: 'A URI card', content: 'http://wagn.org/Home')
10
10
  assert_view_select card.format.render('core'), 'a[class="external-link"][href="http://wagn.org/Home"]' do
11
- assert_select 'span[class="card-title"]', {text: 'A URI card' }
11
+ assert_select 'span[class="card-title"]', text: 'A URI card'
12
12
  end
13
13
  end
14
14
 
15
- it "renders core view links with title arg" do
15
+ it 'renders core view links with title arg' do
16
16
  card = Card.create(type: 'URI', name: 'A URI card', content: 'http://wagn.org/Home')
17
17
  assert_view_select card.format.render('core', title: 'My Title'), 'a[class="external-link"][href="http://wagn.org/Home"]' do
18
- assert_select 'span[class="card-title"]', {text: 'My Title' }
18
+ assert_select 'span[class="card-title"]', text: 'My Title'
19
19
  end
20
20
  end
21
21
 
22
- it "renders title view in a plain formatter" do
22
+ it 'renders title view in a plain formatter' do
23
23
  card = Card['A']
24
24
  card.format(:text).render('title', title: 'My Title').should == 'My Title'
25
25
  card.format(:text).render('title').should == 'A'
26
26
  end
27
27
 
28
- it "renders url_link for regular cards" do
28
+ it 'renders url_link for regular cards' do
29
29
  card = Card['A']
30
30
  card.format(:text).render('url_link').should == '/A'
31
31
  assert_view_select card.format.render('url_link'),
32
- 'a[class="internal-link"][href="/A"]',
33
- {text: '/A' }
32
+ 'a[class="internal-link"][href="/A"]',
33
+ text: '/A'
34
34
  end
35
35
 
36
- it "renders a url_link view" do
36
+ it 'renders a url_link view' do
37
37
  card = Card.create(type: 'URI', name: 'A URI card', content: 'http://wagn.org/Home')
38
- assert_view_select card.format.render('url_link'), 'a[class="external-link"]', {text: 'http://wagn.org/Home'}
38
+ assert_view_select card.format.render('url_link'), 'a[class="external-link"]', text: 'http://wagn.org/Home'
39
39
  card.format(:text).render('url_link').should == 'http://wagn.org/Home'
40
40
  end
41
41
  end