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,158 +1,156 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Name do
4
-
5
- describe "#key" do
6
-
7
- it "should lowercase and underscore" do
8
- expect("This Name".to_name.key).to eq("this_name")
4
+ describe '#key' do
5
+ it 'should lowercase and underscore' do
6
+ expect('This Name'.to_name.key).to eq('this_name')
9
7
  end
10
-
11
- it "should remove spaces" do
12
- expect("this Name".to_name.key).to eq("this_name")
8
+
9
+ it 'should remove spaces' do
10
+ expect('this Name'.to_name.key).to eq('this_name')
13
11
  end
14
12
 
15
- describe "underscores" do
16
-
17
- it "should be treated like spaces" do
13
+ describe 'underscores' do
14
+ it 'should be treated like spaces' do
18
15
  expect('weird_ combo'.to_name.key).to eq('weird combo'.to_name.key)
19
16
  end
20
-
21
- it "should not impede pluralization checks" do
22
- expect('Mamas_and_Papas'.to_name.key).to eq("Mamas and Papas".to_name.key)
17
+
18
+ it 'should not impede pluralization checks' do
19
+ expect('Mamas_and_Papas'.to_name.key).to(
20
+ eq('Mamas and Papas'.to_name.key)
21
+ )
23
22
  end
24
-
25
- it "should be removed when before first word character" do
26
- expect("_This Name".to_name.key).to eq("this_name")
23
+
24
+ it 'should be removed when before first word character' do
25
+ expect('_This Name'.to_name.key).to eq('this_name')
27
26
  end
28
-
29
27
  end
30
28
 
31
- it "should singularize" do
32
- expect("ethans".to_name.key).to eq("ethan")
29
+ it 'should singularize' do
30
+ expect('ethans'.to_name.key).to eq('ethan')
33
31
  end
34
32
 
35
- it "should change CamelCase to snake case" do
36
- expect("ThisThing".to_name.key).to eq("this_thing")
33
+ it 'should change CamelCase to snake case' do
34
+ expect('ThisThing'.to_name.key).to eq('this_thing')
37
35
  end
38
36
 
39
- it "should handle plus cards" do
40
- expect("ThisThing+Ethans".to_name.key).to eq("this_thing+ethan")
37
+ it 'should handle plus cards' do
38
+ expect('ThisThing+Ethans'.to_name.key).to eq('this_thing+ethan')
41
39
  end
42
40
 
43
- it "should retain * for star cards" do
44
- expect("*right".to_name.key).to eq("*right")
41
+ it 'should retain * for star cards' do
42
+ expect('*right'.to_name.key).to eq('*right')
45
43
  end
46
44
 
47
45
  it "should not singularize double s's" do
48
- expect("grass".to_name.key).to eq('grass')
46
+ expect('grass'.to_name.key).to eq('grass')
49
47
  end
50
48
 
51
49
  it "should not singularize letter 'S'" do
52
50
  expect('S'.to_name.key).to eq('s')
53
51
  end
54
52
 
55
- it "should handle unicode characters" do
56
- expect("Mañana".to_name.key).to eq('mañana')
53
+ it 'should handle unicode characters' do
54
+ expect('Mañana'.to_name.key).to eq('mañana')
57
55
  end
58
56
 
59
- it "should handle weird initial characters" do
57
+ it 'should handle weird initial characters' do
60
58
  expect('__you motha @#$'.to_name.key).to eq('you_motha')
61
59
  expect('?!_you motha @#$'.to_name.key).to eq('you_motha')
62
60
  end
63
61
 
64
- it "should allow numbers" do
65
- expect("3way".to_name.key).to eq('3way')
62
+ it 'should allow numbers' do
63
+ expect('3way'.to_name.key).to eq('3way')
66
64
  end
67
65
 
68
- it "internal plurals" do
69
- expect("cards hooks label foos".to_name.key).to eq('card_hook_label_foo')
66
+ it 'internal plurals' do
67
+ expect('cards hooks label foos'.to_name.key).to eq('card_hook_label_foo')
70
68
  end
71
69
 
72
- it "should handle html entities" do
70
+ it 'should handle html entities' do
73
71
  # This no longer takes off the s, is singularize broken now?
74
- expect("Jean-françois Noubel".to_name.key).to eq('jean_françoi_noubel')
72
+ expect('Jean-françois Noubel'.to_name.key).to(
73
+ eq('jean_françoi_noubel')
74
+ )
75
75
  end
76
76
  end
77
77
 
78
-
79
-
80
-
81
-
82
- describe "#url_key" do
83
- cardnames = ["GrassCommons.org", 'Oh you @##', "Alice's Restaurant!", "PB & J", "Mañana"].map(&:to_name)
78
+ describe '#url_key' do
79
+ cardnames = ['GrassCommons.org', 'Oh you @##', "Alice's Restaurant!",
80
+ 'PB & J', 'Mañana'].map(&:to_name)
84
81
 
85
82
  cardnames.each do |cardname|
86
- it "should have the same key as the name" do
87
- k, k2 = cardname.key, cardname.url_key
88
- #warn "cn tok #{cardname.inspect}, #{k.inspect}, #{k2.inspect}"
83
+ it 'should have the same key as the name' do
84
+ k = cardname.key
85
+ k2 = cardname.url_key
86
+ # warn "cn tok #{cardname.inspect}, #{k.inspect}, #{k2.inspect}"
89
87
  expect(k).to eq(k2.to_name.key)
90
88
  end
91
89
  end
92
90
  end
93
91
 
94
- describe "#valid" do
95
- it "accepts valid names" do
96
- expect("this+THAT".to_name).to be_valid
97
- expect("THE*ONE*AND$!ONLY".to_name).to be_valid
92
+ describe '#valid' do
93
+ it 'accepts valid names' do
94
+ expect('this+THAT'.to_name).to be_valid
95
+ expect('THE*ONE*AND$!ONLY'.to_name).to be_valid
98
96
  end
99
97
 
100
- it "rejects invalid names" do
101
- # "Tes~sd".to_name.should_not be_valid
102
- expect("TEST/DDER".to_name).not_to be_valid
98
+ it 'rejects invalid names' do
99
+ # 'Tes~sd'.to_name.should_not be_valid
100
+ expect('TEST/DDER'.to_name).not_to be_valid
103
101
  end
104
102
 
105
- it "rejects long names" do
103
+ it 'rejects long names' do
106
104
  card = Card.new
107
- card.name="1"*256
105
+ card.name = '1' * 256
108
106
  expect(card).not_to be_valid
109
- end
110
- end
107
+ end
108
+ end
111
109
 
112
- describe "#left_name" do
113
- it "returns nil for non junction" do
114
- expect("a".to_name.left_name).to eq(nil)
110
+ describe '#left_name' do
111
+ it 'returns nil for non junction' do
112
+ expect('a'.to_name.left_name).to eq(nil)
115
113
  end
116
114
 
117
- it "returns parent for parent" do
118
- expect("a+b+c+d".to_name.left_name).to eq("a+b+c")
115
+ it 'returns parent for parent' do
116
+ expect('a+b+c+d'.to_name.left_name).to eq('a+b+c')
119
117
  end
120
118
  end
121
119
 
122
- describe "#tag_name" do
123
- it "returns last part of plus card" do
124
- expect("a+b+c".to_name.tag).to eq("c")
120
+ describe '#tag_name' do
121
+ it 'returns last part of plus card' do
122
+ expect('a+b+c'.to_name.tag).to eq('c')
125
123
  end
126
124
 
127
- it "returns name of simple card" do
128
- expect("a".to_name.tag).to eq("a")
125
+ it 'returns name of simple card' do
126
+ expect('a'.to_name.tag).to eq('a')
129
127
  end
130
128
  end
131
129
 
132
- describe "#safe_key" do
133
- it "subs pluses & stars" do
134
- expect("Alpha?+*be-ta".to_name.safe_key).to eq("alpha-Xbe_tum")
130
+ describe '#safe_key' do
131
+ it 'subs pluses & stars' do
132
+ expect('Alpha?+*be-ta'.to_name.safe_key).to eq('alpha-Xbe_tum')
135
133
  end
136
134
  end
137
135
 
138
- describe "#replace_part" do
139
- it "replaces first name part" do
140
- expect('a+b'.to_name.replace_part('a','x').to_s).to eq('x+b')
136
+ describe '#replace_part' do
137
+ it 'replaces first name part' do
138
+ expect('a+b'.to_name.replace_part('a', 'x').to_s).to eq('x+b')
141
139
  end
142
- it "replaces second name part" do
143
- expect('a+b'.to_name.replace_part('b','x').to_s).to eq('a+x')
140
+ it 'replaces second name part' do
141
+ expect('a+b'.to_name.replace_part('b', 'x').to_s).to eq('a+x')
144
142
  end
145
- it "replaces two name parts" do
146
- expect('a+b+c' .to_name.replace_part('a+b', 'x' ).to_s).to eq('x+c')
143
+ it 'replaces two name parts' do
144
+ expect('a+b+c'.to_name.replace_part('a+b', 'x').to_s).to eq('x+c')
147
145
  expect('a+b+c+d'.to_name.replace_part('a+b', 'e+f').to_s).to eq('e+f+c+d')
148
146
  end
149
147
  it "doesn't replace two part tag" do
150
- expect('a+b+c'.to_name.replace_part('b+c','x').to_s).to eq('a+b+c')
148
+ expect('a+b+c'.to_name.replace_part('b+c', 'x').to_s).to eq('a+b+c')
151
149
  end
152
150
  end
153
151
 
154
- describe "Cardnames star handling" do
155
- it "recognizes star cards" do
152
+ describe 'Cardnames star handling' do
153
+ it 'recognizes star cards' do
156
154
  expect('*a'.to_name.star?).to be_truthy
157
155
  end
158
156
 
@@ -160,7 +158,7 @@ describe Card::Name do
160
158
  expect('*a+*b'.to_name.star?).to be_falsey
161
159
  end
162
160
 
163
- it "recognizes rstar cards" do
161
+ it 'recognizes rstar cards' do
164
162
  expect('a+*a'.to_name.rstar?).to be_truthy
165
163
  end
166
164
 
@@ -173,107 +171,123 @@ describe Card::Name do
173
171
  end
174
172
  end
175
173
 
176
- describe "trait_name?" do
177
- it "returns true for content codename" do
178
- expect("bazoinga+*right+*structure".to_name.trait_name?(:structure)).to be_truthy
174
+ describe 'trait_name?' do
175
+ it 'returns true for content codename' do
176
+ expect('bazoinga+*right+*structure'.to_name.trait_name?(:structure)).to(
177
+ be_truthy
178
+ )
179
179
  end
180
180
 
181
- it "handles arrays" do
182
- expect("bazoinga+*right+*structure".to_name.trait_name?(:structure, :default)).to be_truthy
181
+ it 'handles arrays' do
182
+ structure =
183
+ 'bazoinga+*right+*structure'.to_name.trait_name?(:structure, :default)
184
+ expect(structure).to be_truthy
183
185
  end
184
186
 
185
- it "returns false for non-template" do
186
- expect("bazoinga+*right+nontent".to_name.trait_name?(:structure)).to be_falsey
187
+ it 'returns false for non-template' do
188
+ structure = 'bazoinga+*right+nontent'.to_name.trait_name?(:structure)
189
+ expect(structure).to be_falsey
187
190
  end
188
191
  end
189
192
 
190
- describe "#to_absolute" do
191
- it "handles _self, _whole, _" do
192
- expect("_self".to_name.to_absolute("foo")).to eq("foo")
193
- expect("_whole".to_name.to_absolute("foo")).to eq("foo")
194
- expect("_".to_name.to_absolute("foo")).to eq("foo")
193
+ describe '#to_absolute' do
194
+ it 'handles _self, _whole, _' do
195
+ expect('_self'.to_name.to_absolute('foo')).to eq('foo')
196
+ expect('_whole'.to_name.to_absolute('foo')).to eq('foo')
197
+ expect('_'.to_name.to_absolute('foo')).to eq('foo')
195
198
  end
196
199
 
197
- it "handles _left" do
198
- expect("_left+Z".to_name.to_absolute("A+B+C")).to eq("A+B+Z")
200
+ it 'handles _left' do
201
+ expect('_left+Z'.to_name.to_absolute('A+B+C')).to eq('A+B+Z')
199
202
  end
200
203
 
201
- it "handles white space" do
202
- expect("_left + Z".to_name.to_absolute("A+B+C")).to eq("A+B+Z")
204
+ it 'handles white space' do
205
+ expect('_left + Z'.to_name.to_absolute('A+B+C')).to eq('A+B+Z')
203
206
  end
204
207
 
205
- it "handles _right" do
206
- expect("_right+bang".to_name.to_absolute("nutter+butter")).to eq("butter+bang")
207
- expect("C+_right".to_name.to_absolute("B+A")).to eq("C+A")
208
+ it 'handles _right' do
209
+ expect('_right+bang'.to_name.to_absolute('nutter+butter')).to(
210
+ eq('butter+bang')
211
+ )
212
+ expect('C+_right'.to_name.to_absolute('B+A')).to eq('C+A')
208
213
  end
209
214
 
210
- it "handles leading +" do
211
- expect("+bug".to_name.to_absolute("hum")).to eq("hum+bug")
215
+ it 'handles leading +' do
216
+ expect('+bug'.to_name.to_absolute('hum')).to eq('hum+bug')
212
217
  end
213
218
 
214
- it "handles trailing +" do
215
- expect("bug+".to_name.to_absolute("tracks")).to eq("bug+tracks")
219
+ it 'handles trailing +' do
220
+ expect('bug+'.to_name.to_absolute('tracks')).to eq('bug+tracks')
216
221
  end
217
222
 
218
- it "handles _(numbers)" do
219
- expect("_1".to_name.to_absolute("A+B+C")).to eq("A")
220
- expect("_1+_2".to_name.to_absolute("A+B+C")).to eq("A+B")
221
- expect("_2+_3".to_name.to_absolute("A+B+C")).to eq("B+C")
223
+ it 'handles _(numbers)' do
224
+ expect('_1'.to_name.to_absolute('A+B+C')).to eq('A')
225
+ expect('_1+_2'.to_name.to_absolute('A+B+C')).to eq('A+B')
226
+ expect('_2+_3'.to_name.to_absolute('A+B+C')).to eq('B+C')
222
227
  end
223
228
 
224
- it "handles _LLR etc" do
225
- expect("_R".to_name.to_absolute("A+B+C+D+E")).to eq("E")
226
- expect("_L".to_name.to_absolute("A+B+C+D+E")).to eq("A+B+C+D")
227
- expect("_LR".to_name.to_absolute("A+B+C+D+E")).to eq("D")
228
- expect("_LL".to_name.to_absolute("A+B+C+D+E")).to eq("A+B+C")
229
- expect("_LLR".to_name.to_absolute("A+B+C+D+E")).to eq("C")
230
- expect("_LLL".to_name.to_absolute("A+B+C+D+E")).to eq("A+B")
231
- expect("_LLLR".to_name.to_absolute("A+B+C+D+E")).to eq("B")
232
- expect("_LLLL".to_name.to_absolute("A+B+C+D+E")).to eq("A")
229
+ it 'handles _LLR etc' do
230
+ expect('_R'.to_name.to_absolute('A+B+C+D+E')).to eq('E')
231
+ expect('_L'.to_name.to_absolute('A+B+C+D+E')).to eq('A+B+C+D')
232
+ expect('_LR'.to_name.to_absolute('A+B+C+D+E')).to eq('D')
233
+ expect('_LL'.to_name.to_absolute('A+B+C+D+E')).to eq('A+B+C')
234
+ expect('_LLR'.to_name.to_absolute('A+B+C+D+E')).to eq('C')
235
+ expect('_LLL'.to_name.to_absolute('A+B+C+D+E')).to eq('A+B')
236
+ expect('_LLLR'.to_name.to_absolute('A+B+C+D+E')).to eq('B')
237
+ expect('_LLLL'.to_name.to_absolute('A+B+C+D+E')).to eq('A')
233
238
  end
234
239
 
235
- context "mismatched requests" do
236
- it "returns _self for _left or _right on simple cards" do
237
- expect("_left+Z".to_name.to_absolute("A")).to eq("A+Z")
238
- expect("_right+Z".to_name.to_absolute("A")).to eq("A+Z")
240
+ context 'mismatched requests' do
241
+ it 'returns _self for _left or _right on simple cards' do
242
+ expect('_left+Z'.to_name.to_absolute('A')).to eq('A+Z')
243
+ expect('_right+Z'.to_name.to_absolute('A')).to eq('A+Z')
239
244
  end
240
245
 
241
- it "handles bogus numbers" do
242
- expect("_1".to_name.to_absolute("A")).to eq("A")
243
- expect("_1+_2".to_name.to_absolute("A")).to eq("A+A")
244
- expect("_2+_3".to_name.to_absolute("A")).to eq("A+A")
246
+ it 'handles bogus numbers' do
247
+ expect('_1'.to_name.to_absolute('A')).to eq('A')
248
+ expect('_1+_2'.to_name.to_absolute('A')).to eq('A+A')
249
+ expect('_2+_3'.to_name.to_absolute('A')).to eq('A+A')
245
250
  end
246
251
 
247
- it "handles bogus _llr requests" do
248
- expect("_R".to_name.to_absolute("A")).to eq("A")
249
- expect("_L".to_name.to_absolute("A")).to eq("A")
250
- expect("_LR".to_name.to_absolute("A")).to eq("A")
251
- expect("_LL".to_name.to_absolute("A")).to eq("A")
252
- expect("_LLR".to_name.to_absolute("A")).to eq("A")
253
- expect("_LLL".to_name.to_absolute("A")).to eq("A")
254
- expect("_LLLR".to_name.to_absolute("A")).to eq("A")
255
- expect("_LLLL".to_name.to_absolute("A")).to eq("A")
252
+ it 'handles bogus _llr requests' do
253
+ expect('_R'.to_name.to_absolute('A')).to eq('A')
254
+ expect('_L'.to_name.to_absolute('A')).to eq('A')
255
+ expect('_LR'.to_name.to_absolute('A')).to eq('A')
256
+ expect('_LL'.to_name.to_absolute('A')).to eq('A')
257
+ expect('_LLR'.to_name.to_absolute('A')).to eq('A')
258
+ expect('_LLL'.to_name.to_absolute('A')).to eq('A')
259
+ expect('_LLLR'.to_name.to_absolute('A')).to eq('A')
260
+ expect('_LLLL'.to_name.to_absolute('A')).to eq('A')
256
261
  end
257
262
  end
258
263
 
259
- it "does session user substitution" do
260
- expect("_user".to_name.to_absolute("A")).to eq(Card::Auth.current.name)
264
+ it 'does session user substitution' do
265
+ expect('_user'.to_name.to_absolute('A')).to eq(Card::Auth.current.name)
261
266
  Card::Auth.as_bot do
262
- expect("_user".to_name.to_absolute("A")).to eq(Card::Auth.current.name)
267
+ expect('_user'.to_name.to_absolute('A')).to eq(Card::Auth.current.name)
263
268
  end
264
269
  end
265
270
  end
266
271
 
267
- describe "#to_show" do
268
- it "ignores ignorables" do
269
- expect('you+awe'.to_name.to_show('you')).to eq('+awe')
270
- expect('me+you+awe'.to_name.to_show('you')).to eq('me+awe') #HMMM..... what should this do?
271
- expect('me+you+awe'.to_name.to_show('me' )).to eq('+you+awe')
272
- expect('me+you+awe'.to_name.to_show('me','you')).to eq('+awe')
273
- expect('me+you'.to_name.to_show('me','you')).to eq('me+you')
274
- expect('?a?+awe'.to_name.to_show('A')).to eq('+awe')
275
- expect('+awe'.to_name.to_show()).to eq('+awe')
272
+ describe '#to_show' do
273
+ it 'ignores ignorables' do
274
+ expect('you+awe'.to_name.to_show('you')).to eq('+awe')
275
+ # HMMM..... what should this do?
276
+ expect('me+you+awe'.to_name.to_show('you')).to eq('me+awe')
277
+ expect('me+you+awe'.to_name.to_show('me')).to eq('+you+awe')
278
+ expect('me+you+awe'.to_name.to_show('me', 'you')).to eq('+awe')
279
+ expect('me+you'.to_name.to_show('me', 'you')).to eq('me+you')
280
+ expect('?a?+awe'.to_name.to_show('A')).to eq('+awe')
281
+ expect('+awe'.to_name.to_show).to eq('+awe')
276
282
  end
277
283
  end
278
284
 
285
+ describe 'part creation' do
286
+ it 'creates parts' do
287
+ Card::Auth.as_bot do
288
+ Card.create name: 'left+right'
289
+ end
290
+ expect(Card.fetch('right')).to be_truthy
291
+ end
292
+ end
279
293
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- A_JOINEES = %w( B C D E F )
4
- CARDS_MATCHING_TWO = ['Joe User', 'One+Two', 'One+Two+Three', 'Two']
3
+ A_JOINEES = %w( B C D E F ).freeze
4
+ CARDS_MATCHING_TWO = ['Joe User', 'One+Two', 'One+Two+Three', 'Two'].freeze
5
5
 
6
6
  describe Card::Query do
7
7
  subject do
@@ -271,12 +271,12 @@ describe Card::Query do
271
271
 
272
272
  describe 'compound relationships' do
273
273
  it 'right_plus should handle subqueries' do
274
- @query = { right_plus: ['*create', refer_to: 'Anyone']}
274
+ @query = { right_plus: ['*create', refer_to: 'Anyone'] }
275
275
  is_expected.to eq(['Fruit+*type', 'Sign up+*type'])
276
276
  end
277
277
 
278
278
  it 'plus should handle subqueries' do # albeit more slowly :)
279
- @query = { plus: ['*create', refer_to: 'Anyone']}
279
+ @query = { plus: ['*create', refer_to: 'Anyone'] }
280
280
  is_expected.to eq(['Fruit+*type', 'Sign up+*type'])
281
281
  end
282
282
  end