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,67 +5,94 @@ describe Card::Chunk::Link do
5
5
  text = args.delete(:text)
6
6
  format_args = args.delete(:format_args)
7
7
  assert_args = ['a']
8
- args.each_pair do |key,val|
8
+ args.each_pair do |key, val|
9
9
  assert_args[0] << "[#{key}=\"#{val}\"]"
10
10
  end
11
11
  assert_args << { text: text } if text
12
12
  assert_view_select render_content(target, (format_args || {})), *assert_args
13
13
  end
14
14
 
15
- it "handles unknown cards" do
16
- assert_link '[[Nixon]]', class: "wanted-card", href: "/Nixon", text: 'Nixon'
15
+ it 'handles unknown cards' do
16
+ assert_link '[[Nixon]]', class: 'wanted-card', href: '/Nixon', text: 'Nixon'
17
17
  end
18
18
 
19
19
  it 'handles known cards' do
20
- assert_link "[[A]]", class: "known-card", href: "/A", text: 'A'
20
+ assert_link '[[A]]', class: 'known-card', href: '/A', text: 'A'
21
21
  end
22
22
 
23
-
24
23
  it 'handles custom text' do
25
- assert_link '[[Baines|Lyndon]]', class: "wanted-card", href: "/Baines", text: 'Lyndon'
24
+ assert_link '[[Baines|Lyndon]]', class: 'wanted-card', href: '/Baines',
25
+ text: 'Lyndon'
26
26
  end
27
27
 
28
- it "handles relative names" do
28
+ it 'handles relative names' do
29
29
  @card = Card.new name: 'Kennedy'
30
- assert_link '[[+Monroe]]' , class: "wanted-card", href: "/Kennedy+Monroe", text: 'Kennedy+Monroe'
31
- assert_link '[[_self+Exner]]', class: "wanted-card", href: "/Kennedy+Exner", text: 'Kennedy+Exner'
32
- assert_link '[[Onassis+]]' , class: "wanted-card", href: "/Onassis+Kennedy",text: 'Onassis+Kennedy'
30
+ assert_link '[[+Monroe]]', class: 'wanted-card',
31
+ href: '/Kennedy+Monroe',
32
+ text: 'Kennedy+Monroe'
33
+ assert_link '[[_self+Exner]]', class: 'wanted-card',
34
+ href: '/Kennedy+Exner',
35
+ text: 'Kennedy+Exner'
36
+ assert_link '[[Onassis+]]', class: 'wanted-card',
37
+ href: '/Onassis+Kennedy',
38
+ text: 'Onassis+Kennedy'
33
39
  end
34
40
 
35
- it "handles relative names in context" do
41
+ it 'handles relative names in context' do
36
42
  @card = Card.new name: 'Kennedy'
37
- format_args = { context_names: [ 'Kennedy'.to_name ] }
38
- assert_link '[[+Monroe]]' , format_args: format_args, class: "wanted-card", href: "/Kennedy+Monroe", text: '+Monroe'
39
- assert_link '[[_self+Exner]]', format_args: format_args, class: "wanted-card", href: "/Kennedy+Exner", text: '+Exner'
40
- assert_link '[[Onassis+]]' , format_args: format_args, class: "wanted-card", href: "/Onassis+Kennedy", text: 'Onassis'
43
+ format_args = { context_names: ['Kennedy'.to_name] }
44
+ assert_link '[[+Monroe]]', format_args: format_args,
45
+ class: 'wanted-card',
46
+ href: '/Kennedy+Monroe',
47
+ text: '+Monroe'
48
+ assert_link '[[_self+Exner]]', format_args: format_args,
49
+ class: 'wanted-card',
50
+ href: '/Kennedy+Exner',
51
+ text: '+Exner'
52
+ assert_link '[[Onassis+]]', format_args: format_args,
53
+ class: 'wanted-card',
54
+ href: '/Onassis+Kennedy',
55
+ text: 'Onassis'
41
56
  end
42
57
 
43
- it "handles relative urls" do
44
- assert_link '[[/recent]]', class: "internal-link", href: "/recent", text: '/recent'
58
+ it 'handles relative urls' do
59
+ assert_link '[[/recent]]', class: 'internal-link',
60
+ href: '/recent',
61
+ text: '/recent'
45
62
  end
46
63
 
47
- it "handles absolute urls" do
48
- assert_link '[[http://google.com]]', class: 'external-link', target: '_blank', href: 'http://google.com', text: 'http://google.com'
64
+ it 'handles absolute urls' do
65
+ assert_link '[[http://google.com]]',
66
+ class: 'external-link', target: '_blank',
67
+ href: 'http://google.com', text: 'http://google.com'
49
68
  end
50
69
 
51
- it "should escape spaces in cardnames with %20 (not +)" do
52
- assert_link '[[Marie "Mad Dog" Deatherage|Marie]]', class: "wanted-card", href: "/Marie_Mad_Dog_Deatherage?card%5Bname%5D=Marie+%22Mad+Dog%22+Deatherage", text: 'Marie'
70
+ it 'should escape spaces in cardnames with %20 (not +)' do
71
+ assert_link '[[Marie "Mad Dog" Deatherage|Marie]]',
72
+ class: 'wanted-card',
73
+ href: '/Marie_Mad_Dog_Deatherage' \
74
+ '?card%5Bname%5D=Marie+%22Mad+Dog%22+Deatherage',
75
+ text: 'Marie'
53
76
  end
54
77
 
55
-
56
78
  it "doesn't escape content outside of link" do
57
- content = render_content('wgw&nbsp; [[http://www.google.com|google]] &nbsp; <br>')
58
- expect(content).to eq "wgw&nbsp; <a target=\"_blank\" class=\"external-link\" href=\"http://www.google.com\">google</a> &nbsp; <br>"
79
+ content =
80
+ render_content 'wgw&nbsp; [[http://www.google.com|google]] &nbsp; <br>'
81
+ expect(content).to eq(
82
+ 'wgw&nbsp; <a target="_blank" class="external-link" ' \
83
+ 'href="http://www.google.com">google</a> &nbsp; <br>'
84
+ )
59
85
  end
60
86
 
61
- it "handles inclusions in link text" do
62
- assert_link '[[linkies|{{namies|name}}]]', class: "wanted-card", href: "/linkies", text: 'namies'
87
+ it 'handles nests in link text' do
88
+ assert_link '[[linkies|{{namies|name}}]]',
89
+ class: 'wanted-card', href: '/linkies', text: 'namies'
63
90
  end
64
91
 
65
- it "handles dot (.) in missing cardlink" do
66
- assert_link "[[Wagn 1.10.12]]", class: "wanted-card", href: "/Wagn_1_10_12?card%5Bname%5D=Wagn+1.10.12", text: 'Wagn 1.10.12'
67
-
92
+ it 'handles dot (.) in missing cardlink' do
93
+ assert_link '[[Wagn 1.10.12]]',
94
+ class: 'wanted-card',
95
+ href: '/Wagn_1_10_12?card%5Bname%5D=Wagn+1.10.12',
96
+ text: 'Wagn 1.10.12'
68
97
  end
69
-
70
98
  end
71
-
@@ -1,50 +1,48 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- describe Card::Chunk::QueryReference, "QueryReference" do
4
-
5
- context "syntax parsing" do
3
+ describe Card::Chunk::QueryReference, 'QueryReference' do
4
+ context 'syntax parsing' do
6
5
  before do
7
- @class= Card::Chunk::QueryReference
6
+ @class = Card::Chunk::QueryReference
8
7
  end
9
8
 
10
9
  let :query_refs do
11
- content = Card::Content.new @content, Card.new(type: 'Search')
10
+ content = Card::Content.new @content, Card.new(type: 'Search')
12
11
  content.find_chunks(Card::Chunk::QueryReference)
13
12
  end
14
13
 
15
14
  subject { query_refs.first.name }
16
15
 
17
- it "handles simple search" do
16
+ it 'handles simple search' do
18
17
  @content = '{"name":"Waldo"}'
19
18
  is_expected.to eq 'Waldo'
20
19
  end
21
20
 
22
- it "handles operators" do
21
+ it 'handles operators' do
23
22
  @content = '{"name":["eq","Waldo"]}'
24
23
  is_expected.to eq 'Waldo'
25
24
  end
26
25
 
27
- it "handles multiple values for operators" do
26
+ it 'handles multiple values for operators' do
28
27
  @content = '{"name":["in","Where","Waldo"]}'
29
28
  expect(query_refs[1].name).to eq 'Waldo'
30
29
  end
31
30
 
32
- it "handles plus attributes" do
31
+ it 'handles plus attributes' do
33
32
  @content = '{"right_plus":["Waldo",{"content":"here"}]}'
34
- is_expected.to eq 'Waldo'
33
+ is_expected.to eq 'Waldo'
35
34
  end
36
35
 
37
- it "handles nested query structures" do
36
+ it 'handles nested query structures' do
38
37
  @content = '{"any":{"content":"Where", "right_plus":["is",{"name":"Waldo"}]}}'
39
38
  expect(query_refs[0].name).to eq 'Where'
40
39
  expect(query_refs[1].name).to eq 'is'
41
40
  expect(query_refs[2].name).to eq 'Waldo'
42
41
  end
43
42
 
44
- it "handles contextual names" do
45
- @content = '{"name":"_+Waldo"}'
43
+ it 'handles contextual names' do
44
+ @content = '{"name":"_+Waldo"}'
46
45
  is_expected.to eq '_+Waldo'
47
46
  end
48
47
  end
49
-
50
48
  end
@@ -1,14 +1,14 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::EmailHtmlFormat do
4
- it "renders full urls" do
4
+ it 'renders full urls' do
5
5
  Card::Env[:protocol] = 'http://'
6
6
  Card::Env[:host] = 'www.fake.com'
7
7
  expect(render_content('[[B]]', format: 'email_html')).to eq('<a class="known-card" href="http://www.fake.com/B">B</a>')
8
8
  end
9
9
 
10
- describe "raw view" do
11
- it "renders missing included cards as blank" do
10
+ describe 'raw view' do
11
+ it 'renders missing included cards as blank' do
12
12
  expect(render_content('{{strombooby}}', format: 'email_html')).to eq('')
13
13
  end
14
14
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  describe Card::Set::All::Error do
4
4
  describe 'missing view' do
5
- it "should prompt to add" do
6
- expect(render_content('{{+cardipoo|open}}').match(/Add \<span/ )).not_to be_nil
5
+ it 'should prompt to add' do
6
+ expect(render_content('{{+cardipoo|open}}').match(/Add \<span/)).not_to be_nil
7
7
  end
8
8
  end
9
- end
9
+ end
@@ -1,44 +1,44 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  describe Card::Set::All::History do
3
- context "history view" do
3
+ context 'history view' do
4
4
  # before do
5
- # Card.create! name: "my histoer card"
5
+ # Card.create! name: 'my histoer card'
6
6
  # end
7
7
  it 'should have a frame' do
8
- history = render_card :history, name: "A"
8
+ history = render_card :history, name: 'A'
9
9
  assert_view_select history, 'div[class~="card-frame"]'
10
10
  end
11
11
 
12
-
13
12
  describe '#action_summary' do
14
13
  subject do
15
14
  first = Card.fetch('First')
16
15
  first.format.render_action_summary
17
16
  end
18
17
  it 'should have a summary' do
19
- assert_view_select subject, 'del[class="diffdel diff-red"]', text: 'chicken'
20
- assert_view_select subject, 'ins[class="diffins diff-green"]', text: 'chick'
18
+ assert_view_select subject, 'del[class="diffdel diff-red"]',
19
+ text: 'chicken'
20
+ assert_view_select subject, 'ins[class="diffins diff-green"]',
21
+ text: 'chick'
21
22
  end
22
23
  end
23
24
  end
24
25
 
25
-
26
26
  describe '#create_act_and_action' do
27
- let!(:act_start_cnt) {Card::Act.count}
28
- let(:content) {"Nobody expects the Spanish inquisition"}
29
- let(:act) {@card.acts.last}
30
- let(:action) {act.actions.last}
27
+ let!(:act_start_cnt) { Card::Act.count }
28
+ let(:content) { 'Nobody expects the Spanish inquisition' }
29
+ let(:act) { @card.acts.last }
30
+ let(:action) { act.actions.last }
31
31
 
32
32
  context 'for single card' do
33
33
  before do
34
34
  @card = Card::Auth.as_bot do
35
- Card.create name: "single card", content: content
35
+ Card.create name: 'single card', content: content
36
36
  end
37
37
  end
38
38
 
39
39
  context 'when created' do
40
40
  it 'adds new act' do
41
- expect(Card::Act.count).to eq(act_start_cnt+1)
41
+ expect(Card::Act.count).to eq(act_start_cnt + 1)
42
42
  expect(act.card_id).to eq(@card.id)
43
43
  end
44
44
  it 'adds create action' do
@@ -48,12 +48,12 @@ describe Card::Set::All::History do
48
48
 
49
49
  context 'when updated' do
50
50
  it 'adds no act if nothing changed' do
51
- @card.update_attributes name: "single card", content: content
52
- expect(Card::Act.count).to eq(act_start_cnt+1)
51
+ @card.update_attributes name: 'single card', content: content
52
+ expect(Card::Act.count).to eq(act_start_cnt + 1)
53
53
  end
54
54
  it 'adds new act' do
55
- @card.update_attributes content: "new content"
56
- expect(Card::Act.count).to eq(act_start_cnt+2)
55
+ @card.update_attributes content: 'new content'
56
+ expect(Card::Act.count).to eq(act_start_cnt + 2)
57
57
  end
58
58
  end
59
59
 
@@ -64,7 +64,7 @@ describe Card::Set::All::History do
64
64
  end
65
65
  end
66
66
  it 'adds act' do
67
- expect(Card::Act.count).to eq(act_start_cnt+2)
67
+ expect(Card::Act.count).to eq(act_start_cnt + 2)
68
68
  end
69
69
  it 'adds delete action' do
70
70
  expect(action.action_type).to eq(:delete)
@@ -79,7 +79,7 @@ describe Card::Set::All::History do
79
79
  it "doesn't create an act" do
80
80
  Card::Auth.as(:anonymous) do
81
81
  act_count = Card::Act.count
82
- Card.create name: "create fail"
82
+ Card.create name: 'create fail'
83
83
  expect(Card::Act.count).to eq act_count
84
84
  end
85
85
  end
@@ -87,7 +87,7 @@ describe Card::Set::All::History do
87
87
  it "doesn't create an action" do
88
88
  Card::Auth.as(:anonymous) do
89
89
  action_count = Card::Action.count
90
- Card.create name: "create fail"
90
+ Card.create name: 'create fail'
91
91
  expect(Card::Action.count).to eq action_count
92
92
  end
93
93
  end
@@ -96,20 +96,21 @@ describe Card::Set::All::History do
96
96
  Card::Auth.as('joe_user') do
97
97
  act_count = Card::Act.count
98
98
  action_count = Card::Action.count
99
- Card.create name: "crete fail", subcards: {'*all+*create'=>''}
99
+ Card.create name: 'crete fail', subcards: { '*all+*create' => '' }
100
100
  expect(Card::Action.count).to eq action_count
101
101
  expect(Card::Act.count).to eq act_count
102
102
  end
103
103
  end
104
-
105
-
106
104
  end
107
105
  end
108
106
 
109
107
  context 'for subcard' do
110
108
  before do
111
109
  Card::Auth.as_bot do
112
- @card = Card.create name: "left", subcards: {"+right" =>{ content: content}}
110
+ content = 'Nobody expects the Spanish inquisition'
111
+ @card = Card.create! name: 'left',
112
+ subcards: { '+right' => { content: content } }
113
+ act = @card.acts.last
113
114
  @left_action = act.actions[0]
114
115
  @right_action = act.actions[2]
115
116
  @plus_action = act.actions[1]
@@ -118,27 +119,30 @@ describe Card::Set::All::History do
118
119
 
119
120
  context 'when created' do
120
121
  it 'adds only a act for left card' do
121
- expect(Card::Act.count).to eq(act_start_cnt+1)
122
+ expect(Card::Act.count).to eq(act_start_cnt + 1)
122
123
  expect(act.card).to eq(@card)
123
124
  end
124
125
 
125
126
  it 'adds three actions' do
127
+ act = @card.acts.last
126
128
  expect(act.actions.size).to eq(3)
127
129
  end
128
130
  it 'adds action for left part of type create' do
129
- expect(@left_action.card.name).to eq("left")
131
+ expect(@left_action.card.name).to eq('left')
130
132
  expect(@left_action.action_type).to eq(:create)
131
133
  end
132
134
  it 'adds action for right part of type create' do
133
- expect(@right_action.card.name).to eq("right")
135
+ expect(@right_action.card.name).to eq('right')
134
136
  expect(@right_action.action_type).to eq(:create)
135
137
  end
136
138
  it 'adds action for plus card of type create' do
137
- expect(@plus_action.card.name).to eq("left+right")
139
+ expect(@plus_action.card.name).to eq('left+right')
138
140
  expect(@plus_action.action_type).to eq(:create)
139
141
  end
140
142
  it 'adds content change' do
141
- expect(@plus_action.card_changes.find_by_field_name(:db_content).value).to eq(content)
143
+ changed_content =
144
+ @plus_action.card_changes.find_by_field_name(:db_content).value
145
+ expect(changed_content).to eq(content)
142
146
  end
143
147
  it 'adds superaction for plus card' do
144
148
  expect(@plus_action.super_action_id).to eq(@left_action.id)
@@ -147,16 +151,22 @@ describe Card::Set::All::History do
147
151
 
148
152
  context 'when updated' do
149
153
  it 'adds act for left card' do
150
- @card.update_attributes subcards: {"+right"=>{content: "New content", db_content: "New Content"}}
151
- expect(Card::Act.count).to eq(act_start_cnt+2)
154
+ @card.update_attributes subcards: {
155
+ '+right' => {
156
+ content: 'New content', db_content: 'New Content'
157
+ }
158
+ }
159
+ expect(Card::Act.count).to eq(act_start_cnt + 2)
152
160
  expect(act.card).to eq(@card)
153
161
  end
154
162
  it 'adds action for subcard' do
155
- @card.update_attributes subcards: {"+right"=>{content: "New Content"}}
163
+ @card.update_attributes subcards: {
164
+ '+right' => { content: 'New Content' }
165
+ }
156
166
  act = @card.acts.last
157
167
  expect(act.actions.count).to eq(1)
158
168
  expect(act.actions.last.action_type).to eq(:update)
159
- expect(act.actions.last.card.name).to eq("left+right")
169
+ expect(act.actions.last.card.name).to eq('left+right')
160
170
  end
161
171
  end
162
172
  end
@@ -164,7 +174,9 @@ describe Card::Set::All::History do
164
174
  context 'for plus card' do
165
175
  before do
166
176
  Card::Auth.as_bot do
177
+ content = 'Nobody expects the Spanish inquisition'
167
178
  @card = Card.create name: 'left+right', content: content
179
+ act = @card.acts.last
168
180
  @left_action = act.actions[1]
169
181
  @plus_action = act.actions[0]
170
182
  @right_action = act.actions[2]
@@ -173,29 +185,31 @@ describe Card::Set::All::History do
173
185
 
174
186
  context 'adds' do
175
187
  it 'only a act for plus card' do
176
- expect(Card::Act.count).to eq(act_start_cnt+1)
188
+ expect(Card::Act.count).to eq(act_start_cnt + 1)
177
189
  expect(act.card_id).to eq(@card.id)
178
190
  end
179
191
  it 'three actions' do
192
+ act = @card.acts.last
180
193
  expect(act.actions.size).to eq(3)
181
194
  end
182
195
  it 'action for left part of type create' do
183
- expect(@left_action.card.name).to eq("left")
196
+ expect(@left_action.card.name).to eq('left')
184
197
  expect(@left_action.action_type).to eq(:create)
185
198
  end
186
199
  it 'superaction for left part' do
187
200
  expect(@left_action.super_action_id).to eq(@plus_action.id)
188
201
  end
189
202
  it 'action for right part of type create' do
190
- expect(@right_action.card.name).to eq("right")
203
+ expect(@right_action.card.name).to eq('right')
191
204
  expect(@right_action.action_type).to eq(:create)
192
205
  end
193
206
  it 'action for plus card of type create' do
194
- expect(@plus_action.card.name).to eq("left+right")
207
+ expect(@plus_action.card.name).to eq('left+right')
195
208
  expect(@plus_action.action_type).to eq(:create)
196
209
  end
197
210
  it 'content change' do
198
- expect(@plus_action.card_changes(true).find_by_field_name(:db_content).value).to eq(content)
211
+ expect(@plus_action.card_changes(true)
212
+ .find_by_field_name(:db_content).value).to eq(content)
199
213
  end
200
214
  end
201
215
  end