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,16 +1,15 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- describe "Card::Set::All::Follow" do
3
+ describe 'Card::Set::All::Follow' do
4
4
  def follow_view card_name
5
5
  render_card :follow_link, name: card_name
6
6
  end
7
7
 
8
- describe "follower_ids" do
9
-
8
+ describe 'follower_ids' do
10
9
  context 'when a new +*follow rule created' do
11
10
  it 'contains id of a new follower' do
12
11
  Card::Auth.as_bot do
13
- Card['Joe User'].follow "No One Sees Me"
12
+ Card['Joe User'].follow 'No One Sees Me'
14
13
  expect(Card['No One Sees Me'].follower_ids).to eq ::Set.new([Card['Joe User'].id])
15
14
  end
16
15
  end
@@ -18,51 +17,47 @@ describe "Card::Set::All::Follow" do
18
17
 
19
18
  subject { Card[cardname].follower_names.sort }
20
19
  context 'followers of No One Sees Me' do
21
- let(:cardname) {'No One Sees Me'}
20
+ let(:cardname) { 'No One Sees Me' }
22
21
  it { is_expected.to eq([]) }
23
22
  end
24
23
 
25
24
  context 'followers of Magnifier' do
26
- let(:cardname) {'Magnifier'}
27
- it { is_expected.to eq([])}
25
+ let(:cardname) { 'Magnifier' }
26
+ it { is_expected.to eq([]) }
28
27
  end
29
28
 
30
29
  context 'followers of Magnifier+lens' do
31
- let(:cardname) {'Magnifier+lens'}
32
- it { is_expected.to eq ['Big Brother','Narcissist']}
30
+ let(:cardname) { 'Magnifier+lens' }
31
+ it { is_expected.to eq ['Big Brother', 'Narcissist'] }
33
32
  end
34
33
 
35
34
  context 'followers of Sunglasses' do
36
- let(:cardname) {'Sunglasses'}
37
- it { is_expected.to eq ['Big Brother', 'Narcissist', 'Optic fan', 'Sara', 'Sunglasses fan']}
35
+ let(:cardname) { 'Sunglasses' }
36
+ it { is_expected.to eq ['Big Brother', 'Narcissist', 'Optic fan', 'Sara', 'Sunglasses fan'] }
38
37
  end
39
38
  context 'followers of Sunglasses+tint' do
40
- let(:cardname) {'Sunglasses+tint'}
41
- it { is_expected.to eq ['Big Brother', 'Narcissist', 'Optic fan', 'Sara', 'Sunglasses fan']}
39
+ let(:cardname) { 'Sunglasses+tint' }
40
+ it { is_expected.to eq ['Big Brother', 'Narcissist', 'Optic fan', 'Sara', 'Sunglasses fan'] }
42
41
  end
43
42
 
44
43
  context 'followers of Google glass' do
45
- let(:cardname) {'Google glass'}
46
- it { is_expected.to eq ['Big Brother', 'Optic fan', 'Sara']}
44
+ let(:cardname) { 'Google glass' }
45
+ it { is_expected.to eq ['Big Brother', 'Optic fan', 'Sara'] }
47
46
  end
48
47
  end
49
48
 
50
-
51
-
52
-
53
-
54
- describe "view: follow_link" do
49
+ describe 'view: follow_link' do
55
50
  before do
56
51
  Card::Auth.current_id = Card['Big Brother'].id
57
52
  end
58
53
 
59
54
  def assert_following_view name, args
60
- assert_follow_view name, args.reverse_merge(following: true, text: "unfollow" )
55
+ assert_follow_view name, args.reverse_merge(following: true, text: 'unfollow')
61
56
  end
62
57
 
63
- # href="/card/update/Home+*self+philipp+*follow?card%5Bcontent%5D=%5B%5Bnever%5D%5D&success%5Bid%5D=Home&success%5Bview%5D=follow"
58
+ # href="/card/update/Home+*self+philipp+*follow?card%5Bcontent%5D=%5B%5Bnever%5D%5D&success%5Bid%5D=Home&success%5Bview%5D=follow"
64
59
  def assert_follow_view name, args
65
- args[:user] ||= "Big_Brother"
60
+ args[:user] ||= 'Big_Brother'
66
61
  # href = "/card/update/#{args[:add_set].to_name.url_key}+#{args[:user]}+*follow?"
67
62
  # href += CGI.escape("card[content]") + '='
68
63
  # href +=
@@ -75,61 +70,57 @@ describe "Card::Set::All::Follow" do
75
70
  # end
76
71
 
77
72
  link_class = 'follow-link'
78
- assert_view_select follow_view(name), "a[class~=#{link_class}][href*='']", args[:text] || "follow"
73
+ assert_view_select follow_view(name), "a[class~=#{link_class}][href*='']", args[:text] || 'follow'
79
74
  end
80
75
 
81
-
82
-
83
-
84
- context "when not following" do
76
+ context 'when not following' do
85
77
  it 'renders follow link' do
86
78
  assert_follow_view 'No One Sees Me', add_set: 'No One Sees Me+*self'
87
79
  end
88
80
  end
89
81
 
90
- context "when following *self" do
82
+ context 'when following *self' do
91
83
  it 'renders following link' do
92
84
  assert_following_view 'Look At Me', add_set: 'Look at me+*self'
93
85
  end
94
86
  end
95
87
 
96
- context "when following *type" do
88
+ context 'when following *type' do
97
89
  it 'renders following link' do
98
90
  assert_following_view 'Sunglasses', add_set: 'Sunglasses+*self'
99
91
  end
100
92
  end
101
93
 
102
- context "when following cardtype card" do
94
+ context 'when following cardtype card' do
103
95
  it 'renders following all link' do
104
96
  assert_following_view 'Optic', add_set: 'Optic+*type', text: 'unfollow'
105
97
  end
106
98
  end
107
99
 
108
- context "when not following cardtype card" do
100
+ context 'when not following cardtype card' do
109
101
  it "renders 'follow all' link" do
110
102
  assert_follow_view 'Basic', add_set: 'Basic+*type', text: 'follow'
111
103
  end
112
104
  end
113
105
 
114
- context "when following *right" do
115
- it "renders following link" do
106
+ context 'when following *right' do
107
+ it 'renders following link' do
116
108
  assert_following_view 'Magnifier+lens', add_set: 'Magnifier+lens+*self'
117
109
  end
118
110
  end
119
111
 
120
112
  context 'when following content I created' do
121
113
  before { Card::Auth.current_id = Card['Narcissist'].id }
122
- it "renders following link" do
114
+ it 'renders following link' do
123
115
  assert_following_view 'Sunglasses', add_set: 'Sunglasses+*self', user: 'Narcissist'
124
116
  end
125
117
  end
126
118
 
127
119
  context 'when following content I edited' do
128
120
  before { Card::Auth.current_id = Card['Narcissist'].id }
129
- it "renders following link" do
121
+ it 'renders following link' do
130
122
  assert_following_view 'Magnifier+lens', add_set: 'Magnifier+lens+*self', user: 'Narcissist'
131
123
  end
132
124
  end
133
125
  end
134
-
135
126
  end
@@ -46,7 +46,7 @@ shared_examples_for 'notifications' do
46
46
  name: 'bnn card', type: :pointer, content: 'changed content'
47
47
  )
48
48
  @card.format(format: format)
49
- .render_list_of_changes(action_id: action_id)
49
+ .render_list_of_changes(action_id: action_id)
50
50
  end
51
51
  it { is_expected.to include "content: #{content}" }
52
52
  end
@@ -102,11 +102,11 @@ describe Card::Set::All::Notify do
102
102
  before do
103
103
  Card::Auth.as_bot do
104
104
  @card = Card.create!(name: name, content: content,
105
- subcards: { '+s1'=>{content: sub1_content},
106
- '+s2'=>{content: sub2_content} })
105
+ subcards: { '+s1' => { content: sub1_content },
106
+ '+s2' => { content: sub2_content } })
107
107
  end
108
108
  end
109
- subject {
109
+ subject do
110
110
  Card[:follower_notification_email].format.render_mail(
111
111
  context: @card.refresh(true),
112
112
  to: Card['Joe User'].email,
@@ -114,7 +114,7 @@ describe Card::Set::All::Notify do
114
114
  followed_set: "#{@card.name}+*self",
115
115
  follow_option: '*always'
116
116
  ).text_part.body.raw_source
117
- }
117
+ end
118
118
 
119
119
  it { is_expected.to include content }
120
120
  it { is_expected.to include sub1_content }
@@ -132,20 +132,20 @@ describe Card::Set::All::Notify do
132
132
  end
133
133
  end
134
134
  context 'for main card' do
135
- subject {
135
+ subject do
136
136
  Card[:follower_notification_email].format.render_mail(
137
- context: @card.refresh(true),
138
- to: Card['Joe User'].email,
139
- follower: Card['Joe User'].name,
140
- followed_set: @card.name+'+s1+*self',
141
- follow_option: '*always'
142
- ).text_part.body.raw_source
143
- }
137
+ context: @card.refresh(true),
138
+ to: Card['Joe User'].email,
139
+ follower: Card['Joe User'].name,
140
+ followed_set: @card.name + '+s1+*self',
141
+ follow_option: '*always'
142
+ ).text_part.body.raw_source
143
+ end
144
144
  before do
145
145
  Card.create_or_update! "#{name}+*self+*read",
146
146
  type: 'Pointer', content: '[[Administrator]]'
147
147
  Card.create_or_update! "#{name}+s1+*self+*read",
148
- type: 'Pointer',content: '[[Anyone]]'
148
+ type: 'Pointer', content: '[[Anyone]]'
149
149
  end
150
150
  it 'includes subcard content' do
151
151
  is_expected.to include sub1_content
@@ -194,17 +194,17 @@ describe Card::Set::All::Notify do
194
194
  sub2_content = 'new content of subcard 2'
195
195
  Card::Auth.as_bot do
196
196
  @card = Card.create!(name: name, content: content,
197
- subcards: { '+s1'=>{content: sub1_content},
198
- '+s2'=>{content: sub2_content} })
197
+ subcards: { '+s1' => { content: sub1_content },
198
+ '+s2' => { content: sub2_content } })
199
199
  end
200
- result = Card[:follower_notification_email].format.render_mail(
200
+ result = Card[:follower_notification_email].format.render_mail(
201
201
  context: @card,
202
202
  to: Card['Joe User'].email,
203
203
  follower: Card['Joe User'].name,
204
204
  followed_set: "#{@card.name}+*self",
205
205
  follow_option: '*always'
206
206
  ).text_part.body.raw_source
207
- expect(result).to eq(%{"another card with subcards" was just created by Joe User.
207
+ expect(result).to eq(%("another card with subcards" was just created by Joe User.
208
208
 
209
209
  cardtype: Basic
210
210
  content: main content {{+s1}} {{+s2}}
@@ -230,12 +230,11 @@ See the card: /another_card_with_subcards
230
230
  You received this email because you're following "another card with subcards".
231
231
 
232
232
  Use this link to unfollow /update/Joe_User+*follow?card%5Bsubcards%5D%5Banother+card+with+subcards%2B%2Aself%2BJoe+User%2B%2Afollow%5D=%2Anever
233
- })
233
+ ))
234
234
  end
235
235
  end
236
236
 
237
-
238
- describe "#notify_followers" do
237
+ describe '#notify_followers' do
239
238
  def expect_user user_name
240
239
  expect(Card.fetch(user_name).account)
241
240
  end
@@ -252,8 +251,6 @@ Use this link to unfollow /update/Joe_User+*follow?card%5Bsubcards%5D%5Banother+
252
251
  Card[card_name].update_attributes! content: new_content
253
252
  end
254
253
 
255
-
256
-
257
254
  it 'sends notifications of edits' do
258
255
  expect_user('Big Brother').to be_notified_of 'All Eyes On Me+*self'
259
256
  update 'All Eyes On Me'
@@ -275,8 +272,6 @@ Use this link to unfollow /update/Joe_User+*follow?card%5Bsubcards%5D%5Banother+
275
272
  update 'No One Sees Me'
276
273
  end
277
274
 
278
-
279
-
280
275
  context 'when following *type sets' do
281
276
  before do
282
277
  Card::Auth.current_id = Card['joe admin'].id
@@ -343,7 +338,7 @@ Use this link to unfollow /update/Joe_User+*follow?card%5Bsubcards%5D%5Banother+
343
338
 
344
339
  context 'and follow fields rule contains *include' do
345
340
  it 'sends notification of new included card' do
346
- new_card = Card.new name: 'Sunglasses+lens'
341
+ new_card = Card.new name: 'Sunglasses+lens'
347
342
  expect_user('Sunglasses fan').to be_notified_of 'Sunglasses+*self'
348
343
  new_card.save!
349
344
  end
@@ -3,44 +3,63 @@
3
3
  describe Card::Set::Type::EmailTemplate do
4
4
  before :each do
5
5
  Card::Auth.as_bot do
6
- Card.create! name: "mail template", type_code: 'email_template', subcards: {'+*html message'=>{content: 'Hi Joe! My name is {{_self|name}}'},
7
- '+*to'=>{content: 'joe@user.com'},
8
- '+*from'=>{content: 'from@user.com'} }
6
+ Card.create! name: 'mail template', type_code: 'email_template',
7
+ subcards: {
8
+ '+*html message' => {
9
+ content: 'Hi Joe! My name is {{_self|name}}'
10
+ },
11
+ '+*to' => { content: 'joe@user.com' },
12
+ '+*from' => { content: 'from@user.com' }
13
+ }
9
14
  end
10
15
  end
11
16
  it 'sends email on update' do
12
17
  Card::Auth.as_bot do
13
- Card.create! name: "mail test+*self+*on update", type_code: :pointer, content: "[[mail template]]"
18
+ Card.create! name: 'mail test+*self+*on update', type_code: :pointer,
19
+ content: '[[mail template]]'
14
20
  end
15
- card = Card.fetch "mail test"
16
- expect { Card::Auth.as_bot { card.update_attributes(content: "test") } }.to change { Mail::TestMailer.deliveries.count }.by(1)
21
+ card = Card.fetch 'mail test'
22
+ expect { Card::Auth.as_bot { card.update_attributes(content: 'test') } }
23
+ .to change { Mail::TestMailer.deliveries.count }.by(1)
17
24
  end
18
25
 
19
26
  it 'sends email on delete' do
20
27
  Card::Auth.as_bot do
21
- Card.create! name: "mail test+*self+*on delete", type_code: :pointer, content: "[[mail template]]"
28
+ Card.create! name: 'mail test+*self+*on delete', type_code: :pointer,
29
+ content: '[[mail template]]'
22
30
  end
23
- card = Card.fetch "mail test"
24
- expect { Card::Auth.as_bot { card.delete } }.to change { Mail::TestMailer.deliveries.count }.by(1)
31
+ card = Card.fetch 'mail test'
32
+ expect { Card::Auth.as_bot { card.delete } }
33
+ .to change { Mail::TestMailer.deliveries.count }.by(1)
25
34
  end
26
35
 
27
36
  it 'sends email on create' do
28
37
  Card::Auth.as_bot do
29
- Card.create! name: "Cardtype A+*type+*on create", type_code: :pointer, content: "[[mail template]]"
38
+ Card.create! name: 'Cardtype A+*type+*on create', type_code: :pointer,
39
+ content: '[[mail template]]'
30
40
  end
31
- expect { Card::Auth.as_bot { Card.create! name: "mail test", type_code: :cardtype_a} }.to change { ActionMailer::Base.deliveries.count }.by(1)
41
+ expect do
42
+ Card::Auth.as_bot { Card.create! name: 'mailme', type_code: :cardtype_a }
43
+ end.to change { ActionMailer::Base.deliveries.count }.by(1)
32
44
  end
33
45
 
34
46
  describe '#send_action_mails' do
35
47
  before do
36
48
  Card::Auth.as_bot do
37
- Card.create! name: "another mail template", type_code: 'email_template', subcards: {'+*html message'=>{content: 'Hi Joe! My name is {{_self|name}}'},
38
- '+*to'=>{content: 'joe@user.com'},
39
- '+*from'=>{content: 'from@user.com'} }
40
- Card.create! name: "mail test+*self+*on update", type_code: :pointer, content: "[[mail template]]\n[[another mail template]]"
41
- Card.create! name: "mail test+*self+*on delete", type_code: :pointer, content: "[[mail template]]\n[[another mail template]]"
49
+ Card.create! name: 'another mail template',
50
+ type_code: 'email_template',
51
+ subcards: {
52
+ '+*html message' => {
53
+ content: 'Hi Joe! My name is {{_self|name}}'
54
+ },
55
+ '+*to' => { content: 'joe@user.com' },
56
+ '+*from' => { content: 'from@user.com' } }
57
+ Card.create! name: 'mail test+*self+*on update', type_code: :pointer,
58
+ content: "[[mail template]]\n[[another mail template]]"
59
+ Card.create! name: 'mail test+*self+*on delete', type_code: :pointer,
60
+ content: "[[mail template]]\n[[another mail template]]"
42
61
  end
43
- card = Card.fetch "mail test"
62
+ card = Card.fetch 'mail test'
44
63
  ActionMailer::Base.deliveries = []
45
64
  card.send_action_mails on: :update
46
65
  end
@@ -49,28 +68,30 @@ describe Card::Set::Type::EmailTemplate do
49
68
  expect(ActionMailer::Base.deliveries.size).to eq(2)
50
69
  end
51
70
  it 'uses correct context' do
52
- expect(ActionMailer::Base.deliveries.last.body.raw_source).to include('My name is mail test')
71
+ expect(ActionMailer::Base.deliveries.last.body.raw_source)
72
+ .to include('My name is mail test')
53
73
  end
54
74
  end
55
75
 
56
76
  # describe '#send_timer_mails' do
57
- # before do
58
- # ActionMailer::Base.deliveries = []
59
- # Card::Auth.as_bot do
60
- # Card.create! name: "A+*hourly", type_code: 'email_template', subcards: {'+*message'=>{content: 'hourly update name:{{_self|name}}'},
61
- # '+*to'=>{content: 'joe@user.com'},
62
- # '+*from'=>{content: 'from@user.com'}}
63
- # end
64
- # Card::Set::All::Observer.send_timer_mails :hourly
65
- # @mail = ActionMailer::Base.deliveries.last
66
- # end
67
- #
68
- # it 'delivers hourly mails' do
69
- # expect(@mail.body.raw_source).to include('hourly update')
70
- # end
71
- # it 'uses correct context' do
72
- # expect(@mail.body.raw_source).to include('name:A')
73
- # end
74
- # end
77
+ # before do
78
+ # ActionMailer::Base.deliveries = []
79
+ # Card::Auth.as_bot do
80
+ # Card.create! name: "A+*hourly", type_code: 'email_template',
81
+ # subcards: {
82
+ # '+*message'=>{content: 'hourly update name:{{_self|name}}'},
83
+ # '+*to'=>{content: 'joe@user.com'},
84
+ # '+*from'=>{content: 'from@user.com'}}
85
+ # end
86
+ # Card::Set::All::Observer.send_timer_mails :hourly
87
+ # @mail = ActionMailer::Base.deliveries.last
88
+ # end
89
+ #
90
+ # it 'delivers hourly mails' do
91
+ # expect(@mail.body.raw_source).to include('hourly update')
92
+ # end
93
+ # it 'uses correct context' do
94
+ # expect(@mail.body.raw_source).to include('name:A')
95
+ # end
96
+ # end
75
97
  end
76
-
@@ -1,13 +1,11 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Right::Followers do
4
-
5
-
6
-
7
4
  describe '#raw_content' do
8
5
  it 'returns a pointer list of followers' do
9
6
  card = Card.fetch 'All Eyes on me'
10
- expect( card.followers_card.item_names.sort).to eq ['Big Brother','John','Sara']
7
+ expect(card.followers_card.item_names.sort)
8
+ .to eq ['Big Brother', 'John', 'Sara']
11
9
  end
12
10
  end
13
11
 
@@ -15,7 +13,7 @@ describe Card::Set::Right::Followers do
15
13
  it 'contains follower' do
16
14
  card = Card.fetch 'All Eyes on me'
17
15
  view = card.followers_card.format.render_core
18
- expect(view).to include("Sara")
16
+ expect(view).to include('Sara')
19
17
  end
20
18
  end
21
19
 
@@ -23,16 +21,16 @@ describe Card::Set::Right::Followers do
23
21
  it 'renders a pointer list of followers' do
24
22
  card = Card.fetch 'All Eyes on me'
25
23
  view = card.followers_card.format.render_raw
26
- expect(view.split("\n").sort).to eq ['[[Big Brother]]','[[John]]','[[Sara]]']
24
+ expect(view.split("\n").sort)
25
+ .to eq ['[[Big Brother]]', '[[John]]', '[[Sara]]']
27
26
  end
28
27
  end
29
28
 
30
-
31
29
  describe 'item_names' do
32
30
  subject { @card.followers_card.item_names.sort }
33
31
  it 'is an array of followers' do
34
32
  @card = Card['All Eyes On Me']
35
- is_expected.to eq ['Big Brother','John','Sara']
33
+ is_expected.to eq ['Big Brother', 'John', 'Sara']
36
34
  end
37
35
 
38
36
  it 'recognizes card name changes' do
@@ -88,7 +86,7 @@ describe Card::Set::Right::Followers do
88
86
  context 'when following content I created' do
89
87
  it 'contains creator' do
90
88
  Card::Auth.current_id = Card['Big Brother'].id
91
- @card = Card.create! name: "created by Follower"
89
+ @card = Card.create! name: 'created by Follower'
92
90
  is_expected.to include('Big Brother')
93
91
  end
94
92
  end
@@ -99,14 +97,13 @@ describe Card::Set::Right::Followers do
99
97
  Card['Sara'].follow '*all', '*edited'
100
98
  end
101
99
 
102
- @card = Card.create! name: "edited by Sara"
100
+ @card = Card.create! name: 'edited by Sara'
103
101
  Card::Auth.current_id = Card['Sara'].id
104
102
  @card.update_attributes! content: 'some content'
105
103
  is_expected.to include('Sara')
106
104
  end
107
105
  end
108
106
 
109
-
110
107
  context 'for a set card' do
111
108
  it 'contains followers of that set' do
112
109
  @card = Card['lens+*right']
@@ -120,7 +117,5 @@ describe Card::Set::Right::Followers do
120
117
  is_expected.to include('Optic fan')
121
118
  end
122
119
  end
123
-
124
120
  end
125
-
126
- end
121
+ end