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
@@ -22,40 +22,40 @@ describe Card::Success do
22
22
  before do
23
23
  success_params id: home.id, view: 'closed'
24
24
  end
25
- it { is_expected.to eq home}
25
+ it { is_expected.to eq home }
26
26
  end
27
27
 
28
28
  context 'initialized with REDIRECT string' do
29
29
  before do
30
30
  success_params 'REDIRECT: Home'
31
31
  end
32
- it { is_expected.to eq home}
32
+ it { is_expected.to eq home }
33
33
  end
34
34
 
35
35
  context 'initialized with TEXT string' do
36
36
  before do
37
37
  success_params 'TEXT: Hi'
38
38
  end
39
- it { is_expected.to eq 'Hi'}
39
+ it { is_expected.to eq 'Hi' }
40
40
  end
41
41
 
42
42
  context 'initialized with card object' do
43
43
  before do
44
44
  success_params home
45
45
  end
46
- it { is_expected.to eq home}
46
+ it { is_expected.to eq home }
47
47
  end
48
48
 
49
49
  context 'initialized with url' do
50
50
  before do
51
51
  success_params 'http://wagn.org'
52
52
  end
53
- it { is_expected.to eq 'http://wagn.org'}
53
+ it { is_expected.to eq 'http://wagn.org' }
54
54
  end
55
55
  end
56
56
 
57
57
  describe '#to_url' do
58
- subject { @success.to_url}
58
+ subject { @success.to_url }
59
59
  context 'with params' do
60
60
  context 'using initilization' do
61
61
  before do
@@ -80,7 +80,7 @@ describe Card::Success do
80
80
  context 'using <<' do
81
81
  before do
82
82
  success_params nil
83
- @success << { card: home, view: 'closed'}
83
+ @success << { card: home, view: 'closed' }
84
84
  end
85
85
  it { is_expected.to eq '/Home?view=closed' }
86
86
  end
@@ -89,7 +89,7 @@ describe Card::Success do
89
89
  before do
90
90
  success_params 'REDIRECT: *previous'
91
91
  end
92
- it { is_expected.to eq previous}
92
+ it { is_expected.to eq previous }
93
93
  end
94
94
  end
95
95
 
@@ -102,7 +102,7 @@ describe Card::Success do
102
102
 
103
103
  describe '#hard_redirect?' do
104
104
  it 'true for "REDIRECT: anywhere"' do
105
- success_params "REDIRECT: anywhere"
105
+ success_params 'REDIRECT: anywhere'
106
106
  expect(@success.hard_redirect?).to be_truthy
107
107
  end
108
108
  end
@@ -135,15 +135,13 @@ describe Card::Success do
135
135
  expect(@success.params.keys.sort).to eq [:layout, :script, :structure, :view]
136
136
  end
137
137
  it 'ignores "id", "name", "mark", "card"", target", and "redirect"' do
138
- success_params({
139
- id: 5,
140
- name: 'Home',
141
- card: Card['Home'],
142
- mark: 'Home',
143
- target: 'Home',
144
- redirect: false,
145
- view: 'View'
146
- })
138
+ success_params(id: 5,
139
+ name: 'Home',
140
+ card: Card['Home'],
141
+ mark: 'Home',
142
+ target: 'Home',
143
+ redirect: false,
144
+ view: 'View')
147
145
  expect(@success.params.keys).to eq [:view]
148
146
  end
149
147
  end
@@ -5,4 +5,4 @@ describe Card::ViewCache do
5
5
  Card::Cache.reset_all
6
6
  expect(Card::ViewCache.cache.exist? 'testkey').to be_falsey
7
7
  end
8
- end
8
+ end
@@ -2,7 +2,7 @@
2
2
  require 'card/mailer'
3
3
 
4
4
  describe Card::Mailer do
5
- #include ActionMailer::Quoting
5
+ # include ActionMailer::Quoting
6
6
 
7
7
  before do
8
8
  ActionMailer::Base.deliveries = []
@@ -43,8 +43,6 @@ describe Card::Mailer do
43
43
  # # FIXME: at least two tests should be here, with & w/o attachment.
44
44
  # end
45
45
 
46
-
47
-
48
46
  # describe "cardmail" do
49
47
  # before do
50
48
  # Card.gimme "mailtest", content: "test"
@@ -57,8 +55,8 @@ describe Card::Mailer do
57
55
  # end
58
56
 
59
57
  private
60
- def encode(subject)
58
+
59
+ def encode subject
61
60
  quoted_printable(subject, Card::Mailer::CHARSET)
62
61
  end
63
-
64
62
  end
@@ -6,14 +6,13 @@ class Card
6
6
  cattr_accessor :count
7
7
  end
8
8
 
9
- describe "Card (Cardtype)" do
10
-
11
- it "should not allow cardtype remove when instances present" do
9
+ describe 'Card (Cardtype)' do
10
+ it 'should not allow cardtype remove when instances present' do
12
11
  Card.create name: 'City', type: 'Cardtype'
13
12
  city = Card.fetch('City')
14
- c1=Card.create name: 'Sparta', type: 'City'
15
- c2=Card.create name: 'Eugene', type: 'City'
16
- assert_equal ['Eugene','Sparta'], Card.search(type: 'City').map(&:name).sort
13
+ c1 = Card.create name: 'Sparta', type: 'City'
14
+ c2 = Card.create name: 'Eugene', type: 'City'
15
+ assert_equal %w(Eugene Sparta), Card.search(type: 'City').map(&:name).sort
17
16
  assert_raises ActiveRecord::RecordInvalid do
18
17
  city.delete!
19
18
  end
@@ -21,50 +20,47 @@ describe "Card (Cardtype)" do
21
20
  expect(Card['City']).not_to be_nil
22
21
  end
23
22
 
24
- it "remove cardtype" do
23
+ it 'remove cardtype' do
25
24
  Card.create! name: 'County', type: 'Cardtype'
26
25
  c = Card['County']
27
26
  c.delete
28
27
  end
29
28
 
30
- it "cardtype creation and dynamic cardtype" do
31
-
32
- assert Card.create( name: 'BananaPudding', type: 'Cardtype' ).type_id == Card::Codename[:cardtype]
33
- assert_instance_of Card, c=Card.fetch("BananaPudding")
29
+ it 'cardtype creation and dynamic cardtype' do
30
+ assert Card.create(name: 'BananaPudding', type: 'Cardtype').type_id == Card::Codename[:cardtype]
31
+ assert_instance_of Card, c = Card.fetch('BananaPudding')
34
32
 
35
33
  # you have to have a module to include or it's just a Basic (type_code fielde excepted)
36
- cd = Card.create(type: 'banana_pudding',name: "figgy" )
34
+ cd = Card.create(type: 'banana_pudding', name: 'figgy')
37
35
  assert cd.type_name == 'BananaPudding'
38
36
  assert Card.find_by_type_id(c.id)
39
37
  end
40
38
 
41
- describe "conversion to cardtype" do
39
+ describe 'conversion to cardtype' do
42
40
  before do
43
41
  @card = Card.create!(type: 'Cardtype', name: 'Cookie')
44
42
  expect(@card.type_name).to eq('Cardtype')
45
43
  end
46
44
 
47
- it "creates cardtype model and permission" do
45
+ it 'creates cardtype model and permission' do
48
46
  @card.type_id = Card.fetch_id('cookie')
49
47
  @card.save!
50
48
  expect(@card.type_name).to eq('Cookie')
51
- @card=Card['Cookie']
49
+ @card = Card['Cookie']
52
50
  assert_instance_of Card, @card
53
51
  expect(@card.type_code).to eq(nil) # :cookie
54
- assert_equal 'Cookie', Card.create!( name: 'Oreo', type: 'Cookie' ).type_name
52
+ assert_equal 'Cookie', Card.create!(name: 'Oreo', type: 'Cookie').type_name
55
53
  end
56
54
  end
57
55
 
58
- it "cardtype" do
56
+ it 'cardtype' do
59
57
  Card.all.each do |card|
60
58
  assert !card.type_card.nil?
61
59
  end
62
60
  end
63
-
64
61
  end
65
62
 
66
-
67
- describe Card, "created without permission" do
63
+ describe Card, 'created without permission' do
68
64
  before do
69
65
  Card::Auth.current_id = Card::AnonymousID
70
66
  end
@@ -72,14 +68,14 @@ describe Card, "created without permission" do
72
68
  # FIXME: this one should pass. unfortunately when I tried to fix it it started looking like the clean solution
73
69
  # was to rewrite most of the permissions section as simple validations and i decided not to go down that rabbit hole.
74
70
  #
75
- #it "should not be valid" do
71
+ # it "should not be valid" do
76
72
  # Card.new( name: 'foo', type: 'Cardtype').valid?.should_not be_true
77
- #end
73
+ # end
78
74
 
79
- it "should not create a new cardtype until saved" do
80
- expect {
81
- Card.new( name: 'foo', type: 'Cardtype')
82
- }.not_to change(Card, :count)
75
+ it 'should not create a new cardtype until saved' do
76
+ expect do
77
+ Card.new(name: 'foo', type: 'Cardtype')
78
+ end.not_to change(Card, :count)
83
79
  end
84
80
  end
85
81
 
@@ -109,37 +105,36 @@ describe Card, 'Normal card with descendants' do
109
105
  end
110
106
  end
111
107
 
112
- describe Card, "New Cardtype" do
108
+ describe Card, 'New Cardtype' do
113
109
  before do
114
110
  Card::Auth.as_bot do
115
111
  @ct = Card.create! name: 'Animal', type: 'Cardtype'
116
112
  end
117
113
  end
118
114
 
119
- it "should have create permissions" do
115
+ it 'should have create permissions' do
120
116
  expect(@ct.who_can(:create)).not_to be_nil
121
117
  end
122
118
 
123
- it "its create permissions should be based on Basic" do
119
+ it 'its create permissions should be based on Basic' do
124
120
  expect(@ct.who_can(:create)).to eq(Card['Basic'].who_can(:create))
125
121
  end
126
122
  end
127
123
 
128
- describe Card, "Wannabe Cardtype Card" do
124
+ describe Card, 'Wannabe Cardtype Card' do
129
125
  before do
130
126
  Card::Auth.as_bot do
131
127
  @card = Card.create! name: 'convertible'
132
- @card.type_id=Card::CardtypeID
128
+ @card.type_id = Card::CardtypeID
133
129
  @card.save!
134
130
  end
135
-
136
131
  end
137
- it "should successfully change its type to a Cardtype" do
132
+ it 'should successfully change its type to a Cardtype' do
138
133
  expect(Card['convertible'].type_code).to eq(:cardtype)
139
134
  end
140
135
  end
141
136
 
142
- describe Card, "Joe User" do
137
+ describe Card, 'Joe User' do
143
138
  before do
144
139
  Card::Auth.as_bot do
145
140
  @r3 = Card['r3']
@@ -150,31 +145,29 @@ describe Card, "Joe User" do
150
145
  @type_names = Card::Auth.createable_types
151
146
  end
152
147
 
153
- it "should not have r3 permissions" do
148
+ it 'should not have r3 permissions' do
154
149
  expect(@ucard.fetch(new: {}, trait: :roles).item_names.member?(@r3.name)).to be_falsey
155
150
  end
156
- it "should ponder creating a card of Cardtype F, but find that he lacks create permissions" do
151
+ it 'should ponder creating a card of Cardtype F, but find that he lacks create permissions' do
157
152
  expect(Card.new(type: 'Cardtype F').ok?(:create)).to be_falsey
158
153
  end
159
- it "should not find Cardtype F on its list of createable cardtypes" do
154
+ it 'should not find Cardtype F on its list of createable cardtypes' do
160
155
  expect(@type_names.member?('Cardtype F')).to be_falsey
161
156
  end
162
- it "should find Basic on its list of createable cardtypes" do
157
+ it 'should find Basic on its list of createable cardtypes' do
163
158
  expect(@type_names.member?('Basic')).to be_truthy
164
159
  end
165
-
166
160
  end
167
161
 
168
-
169
- describe Card, "Cardtype with Existing Cards" do
162
+ describe Card, 'Cardtype with Existing Cards' do
170
163
  before do
171
164
  @ct = Card['Cardtype F']
172
165
  end
173
- it "should have existing cards of that type" do
166
+ it 'should have existing cards of that type' do
174
167
  expect(Card.search(type: @ct.name)).not_to be_empty
175
168
  end
176
169
 
177
- it "should raise an error when you try to delete it" do
170
+ it 'should raise an error when you try to delete it' do
178
171
  Card::Auth.as_bot do
179
172
  @ct.delete
180
173
  expect(@ct.errors[:cardtype]).not_to be_empty
@@ -182,19 +175,15 @@ describe Card, "Cardtype with Existing Cards" do
182
175
  end
183
176
  end
184
177
 
185
-
186
178
  describe Card::Set::Type::Cardtype do
187
-
188
- it "should handle changing away from Cardtype" do
179
+ it 'should handle changing away from Cardtype' do
189
180
  Card::Auth.as_bot do
190
- ctg = Card.create! name: "CardtypeG", type: "Cardtype"
181
+ ctg = Card.create! name: 'CardtypeG', type: 'Cardtype'
191
182
  ctg.type_id = Card::BasicID
192
183
  ctg.save!
193
- ctg = Card["CardtypeG"]
184
+ ctg = Card['CardtypeG']
194
185
  expect(ctg.type_code).to eq(:basic)
195
- #ctg.extension.should == nil
186
+ # ctg.extension.should == nil
196
187
  end
197
188
  end
198
189
  end
199
-
200
-
@@ -1,82 +1,101 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- # FIXME this shouldn't be here
4
- describe Card::Set::Type::Cardtype, ".create with :codename" do
5
- it "should work" do
6
- expect(Card.create!(name: "Foo Type", codename: "foo", type: 'Cardtype').type_code).to eq(:cardtype)
3
+ # FIXME: this shouldn't be here
4
+ describe Card::Set::Type::Cardtype, '.create with :codename' do
5
+ it 'should work' do
6
+ card = Card.create! name: 'Foo Type', codename: 'foo',
7
+ type: 'Cardtype'
8
+ expect(card.type_code).to eq(:cardtype)
7
9
  end
8
10
  end
9
11
 
10
-
11
-
12
-
13
- describe Card, "created by Card.new " do
12
+ describe Card, 'created by Card.new' do
14
13
  before(:each) do
15
14
  Card::Auth.as_bot do
16
- @c = Card.new name: "New Card", content: "Great Content"
15
+ @c = Card.new name: 'New Card', content: 'Great Content'
17
16
  end
18
17
  end
19
18
 
20
- it "should not override explicit content with default content" do
19
+ it 'should not override explicit content with default content' do
21
20
  Card::Auth.as_bot do
22
- Card.create! name: "blue+*right+*default", content: "joe", type: "Pointer"
23
- c = Card.new name: "Lady+blue", content: "[[Jimmy]]"
24
- expect(c.content).to eq("[[Jimmy]]")
21
+ Card.create! name: 'blue+*right+*default', content: 'joe', type: 'Pointer'
22
+ c = Card.new name: 'Lady+blue', content: '[[Jimmy]]'
23
+ expect(c.content).to eq('[[Jimmy]]')
25
24
  end
26
25
  end
27
26
  end
28
27
 
29
-
30
-
31
- describe Card, "created by Card.create with valid attributes" do
28
+ describe Card, 'created by Card.create with valid attributes' do
32
29
  before(:each) do
33
30
  Card::Auth.as_bot do
34
- @b = Card.create name: "New Card", content: "Great Content"
31
+ @b = Card.create name: 'New Card', content: 'Great Content'
35
32
  @c = Card.find(@b.id)
36
33
  end
37
34
  end
38
35
 
39
- it "should not have errors" do expect(@b.errors.size).to eq(0) end
40
- it "should have the right class" do expect(@c.class).to eq(Card) end
41
- it "should have the right key" do expect(@c.key).to eq("new_card") end
42
- it "should have the right name" do expect(@c.name).to eq("New Card") end
43
- it "should have the right content" do expect(@c.content).to eq("Great Content") end
36
+ it 'does not have errors' do
37
+ expect(@b.errors.size).to eq(0)
38
+ end
39
+ it 'has the right class' do
40
+ expect(@c.class).to eq(Card)
41
+ end
42
+ it 'has the right key' do
43
+ expect(@c.key).to eq('new_card')
44
+ end
45
+ it 'has the right name' do
46
+ expect(@c.name).to eq('New Card')
47
+ end
48
+ it 'has the right content' do
49
+ expect(@c.content).to eq('Great Content')
50
+ end
44
51
 
45
- it "should have the right content" do
46
- @c.db_content == "Great Content"
52
+ it 'has the right content' do
53
+ @c.db_content == 'Great Content'
47
54
  end
48
55
 
49
- it "should be findable by name" do
50
- expect(Card["New Card"].class).to eq(Card)
56
+ it 'is findable by name' do
57
+ expect(Card['New Card'].class).to eq(Card)
51
58
  end
52
59
  end
53
60
 
54
-
55
- describe Card, "create junction" do
61
+ describe Card, 'create junction two parts' do
56
62
  before(:each) do
57
- @c = Card.create! name: "Peach+Pear", content: "juicy"
63
+ @c = Card.create! name: 'Peach+Pear', content: 'juicy'
58
64
  end
59
65
 
60
- it "should not have errors" do
66
+ it "doesn't have errors" do
61
67
  expect(@c.errors.size).to eq(0)
62
68
  end
63
69
 
64
- it "should create junction card" do
65
- expect(Card["Peach+Pear"].class).to eq(Card)
70
+ it 'creates junction card' do
71
+ expect(Card['Peach+Pear'].class).to eq(Card)
66
72
  end
67
73
 
68
- it "should create trunk card" do
69
- expect(Card["Peach"].class).to eq(Card)
74
+ it 'creates trunk card' do
75
+ expect(Card['Peach'].class).to eq(Card)
70
76
  end
71
77
 
72
- it "should create tag card" do
73
- expect(Card["Pear"].class).to eq(Card)
78
+ it 'creates tag card' do
79
+ expect(Card['Pear'].class).to eq(Card)
74
80
  end
75
81
  end
76
82
 
83
+ describe Card, 'create junction three parts' do
84
+ it 'creates very left card' do
85
+ Card.create! name: 'Apple+Peach+Pear', content: 'juicy'
86
+ expect(Card['Apple'].class).to eq(Card)
87
+ end
77
88
 
78
-
79
- describe Card, "types" do
80
-
89
+ it 'sets left and right ids' do
90
+ Card.create! name: 'Sugar+Milk+Flour', content: 'tasty'
91
+ sugar_milk = Card['Sugar+Milk']
92
+ sugar_milk_flour = Card['Sugar+Milk+Flour']
93
+ expect(sugar_milk_flour.left_id).to eq(sugar_milk.id)
94
+ expect(sugar_milk_flour.right_id).to eq(Card.fetch_id('Flour'))
95
+ expect(sugar_milk.left_id).to eq(Card.fetch_id('Sugar'))
96
+ expect(sugar_milk.right_id).to eq(Card.fetch_id('Milk'))
97
+ end
81
98
  end
82
99
 
100
+ describe Card, 'types' do
101
+ end