wagn 1.13.0 → 1.14.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +3 -2
  3. data/VERSION +1 -1
  4. data/app/controllers/card_controller.rb +33 -38
  5. data/config/routes.rb +2 -2
  6. data/config/version.txt +1 -1
  7. data/db/bootstrap/card_actions.yml +3543 -0
  8. data/db/bootstrap/card_acts.yml +7 -0
  9. data/db/bootstrap/card_changes.yml +9150 -0
  10. data/db/bootstrap/card_references.yml +666 -344
  11. data/db/bootstrap/cards.yml +3256 -1702
  12. data/db/migrate/20140822073704_create_new_revision_tables.rb +43 -0
  13. data/db/migrate/20141001105348_move_revisions_to_actions.rb +62 -0
  14. data/db/migrate_cards/20130411191151_renaming_for_menu.rb +42 -45
  15. data/db/migrate_cards/20130411211600_delete_old_related_tab_cards.rb +13 -16
  16. data/db/migrate_cards/20130419215612_import_help_text.rb +7 -10
  17. data/db/migrate_cards/20130823192433_add_style_cards.rb +77 -81
  18. data/db/migrate_cards/20130910183318_move_styles_to_content.rb +4 -7
  19. data/db/migrate_cards/20130920214038_jsonize_tinymce.rb +9 -12
  20. data/db/migrate_cards/20130920291703_update_stylesheets.rb +10 -13
  21. data/db/migrate_cards/20130927191728_account_events.rb +15 -18
  22. data/db/migrate_cards/20131016172445_common_css_patch.rb +5 -8
  23. data/db/migrate_cards/20140110193325_reset_account_request_type.rb +4 -7
  24. data/db/migrate_cards/20140307231621_user_data_to_cards.rb +50 -53
  25. data/db/migrate_cards/20140317035504_account_requests_to_signups.rb +39 -42
  26. data/db/migrate_cards/20140512155840_add_script_cards.rb +56 -59
  27. data/db/migrate_cards/20140629222005_add_email_cards.rb +168 -0
  28. data/db/migrate_cards/20140725180118_config_card_updates.rb +4 -7
  29. data/db/migrate_cards/data/mailer/follower_notification_email.html +9 -0
  30. data/db/migrate_cards/data/mailer/follower_notification_email.txt +11 -0
  31. data/db/migrate_cards/data/mailer/mail_config.json +22 -0
  32. data/db/migrate_cards/data/mailer/password_reset_email.html +10 -0
  33. data/db/migrate_cards/data/mailer/password_reset_email.txt +11 -0
  34. data/db/migrate_cards/data/mailer/signup_alert_email.html +7 -0
  35. data/db/migrate_cards/data/mailer/signup_alert_email.txt +5 -0
  36. data/db/migrate_cards/data/mailer/verification_email.html +9 -0
  37. data/db/migrate_cards/data/mailer/verification_email.txt +8 -0
  38. data/db/schema.rb +31 -1
  39. data/features/conflict.feature +39 -0
  40. data/features/flexmail.feature +54 -54
  41. data/features/notifications.feature +4 -2
  42. data/features/reset_password.feature +1 -1
  43. data/features/step_definitions/wagn_steps.rb +20 -2
  44. data/features/step_definitions/window_steps.rb +23 -0
  45. data/features/support/env.rb +1 -0
  46. data/features/update_includers.feature +16 -10
  47. data/features/watch.feature +2 -2
  48. data/lib/card.rb +11 -10
  49. data/lib/card/act.rb +63 -0
  50. data/lib/card/action.rb +194 -0
  51. data/lib/card/change.rb +29 -0
  52. data/lib/card/content.rb +1 -1
  53. data/lib/card/diff.rb +229 -276
  54. data/lib/card/env.rb +4 -3
  55. data/lib/card/format.rb +2 -5
  56. data/lib/card/generators/card_migration/USAGE +15 -3
  57. data/lib/card/generators/card_migration/card_migration_generator.rb +22 -2
  58. data/lib/card/generators/card_migration/templates/card_migration.erb +4 -5
  59. data/lib/card/generators/format/USAGE +2 -2
  60. data/lib/card/generators/format/format_generator.rb +2 -2
  61. data/lib/card/generators/set/USAGE +2 -2
  62. data/lib/card/mailer.rb +21 -100
  63. data/lib/card/name.rb +4 -3
  64. data/lib/card/query.rb +2 -2
  65. data/lib/card/query/card_spec.rb +20 -30
  66. data/lib/card/query/value_spec.rb +2 -3
  67. data/lib/card/set.rb +3 -0
  68. data/lib/wagn/all.rb +6 -0
  69. data/lib/wagn/application.rb +16 -6
  70. data/lib/wagn/commands.rb +87 -27
  71. data/lib/wagn/config/environments/development.rb +17 -0
  72. data/lib/wagn/config/environments/test.rb +14 -1
  73. data/lib/wagn/config/initializers/airbrake.rb +1 -1
  74. data/lib/wagn/generators/wagn/templates/Gemfile +27 -9
  75. data/lib/wagn/generators/wagn/templates/config/application.rb +12 -3
  76. data/lib/wagn/generators/wagn/templates/simplecov +5 -0
  77. data/lib/wagn/generators/wagn/templates/spec/spec_helper.rb +1 -0
  78. data/lib/wagn/generators/wagn/wagn_generator.rb +75 -45
  79. data/lib/wagn/location.rb +9 -0
  80. data/lib/wagn/migration.rb +96 -0
  81. data/lib/wagn/mods_spec_helper.rb +16 -8
  82. data/lib/wagn/simplecov_helper.rb +61 -0
  83. data/lib/wagn/{wagn_spec_helper.rb → spec_helper.rb} +11 -3
  84. data/lib/wagn/tasks/test.rake +1 -1
  85. data/lib/wagn/tasks/wagn.rake +100 -34
  86. data/lib/wagn/version.rb +7 -2
  87. data/mod/{core → 01_core}/chunk/include.rb +0 -0
  88. data/mod/{core → 01_core}/chunk/link.rb +0 -0
  89. data/mod/{core → 01_core}/chunk/literal.rb +0 -0
  90. data/mod/{core → 01_core}/chunk/reference.rb +15 -3
  91. data/mod/{core → 01_core}/chunk/uri.rb +0 -0
  92. data/mod/{core → 01_core}/format/data_format.rb +0 -0
  93. data/mod/{core → 01_core}/format/html_format.rb +5 -2
  94. data/mod/{core → 01_core}/format/text_format.rb +0 -0
  95. data/mod/{core → 01_core}/layout/blank.html +0 -0
  96. data/mod/{core → 01_core}/layout/default.html +0 -0
  97. data/mod/{core → 01_core}/layout/noside.html +0 -0
  98. data/mod/{core → 01_core}/layout/pre.html +0 -0
  99. data/mod/{core → 01_core}/layout/simple.html +0 -0
  100. data/mod/{core → 01_core}/set/all/active_card.rb +0 -0
  101. data/mod/{core → 01_core}/set/all/collection.rb +33 -5
  102. data/mod/01_core/set/all/content.rb +144 -0
  103. data/mod/01_core/set/all/erb.rb +11 -0
  104. data/mod/{core → 01_core}/set/all/fetch.rb +8 -1
  105. data/mod/01_core/set/all/haml.rb +7 -0
  106. data/mod/{core → 01_core}/set/all/initialize.rb +4 -2
  107. data/mod/{core → 01_core}/set/all/name.rb +2 -3
  108. data/mod/01_core/set/all/notify.rb +215 -0
  109. data/mod/{core → 01_core}/set/all/pattern.rb +0 -0
  110. data/mod/{core → 01_core}/set/all/permissions.rb +1 -1
  111. data/mod/{core → 01_core}/set/all/phases.rb +24 -8
  112. data/mod/{core → 01_core}/set/all/references.rb +2 -2
  113. data/mod/{core → 01_core}/set/all/rules.rb +2 -2
  114. data/mod/{core → 01_core}/set/all/states.rb +1 -1
  115. data/mod/{core → 01_core}/set/all/templating.rb +4 -4
  116. data/mod/{core → 01_core}/set/all/tracked_attributes.rb +15 -64
  117. data/mod/{core → 01_core}/set/all/trash.rb +6 -5
  118. data/mod/{core → 01_core}/set/all/type.rb +0 -0
  119. data/mod/{core → 01_core}/set/all/utils.rb +1 -1
  120. data/mod/{core → 01_core}/set_pattern/01_all.rb +0 -0
  121. data/mod/{core → 01_core}/set_pattern/02_all_plus.rb +0 -0
  122. data/mod/{core → 01_core}/set_pattern/03_type.rb +0 -0
  123. data/mod/{core → 01_core}/set_pattern/04_star.rb +0 -0
  124. data/mod/{core → 01_core}/set_pattern/05_rstar.rb +0 -0
  125. data/mod/{core → 01_core}/set_pattern/06_right.rb +0 -0
  126. data/mod/{core → 01_core}/set_pattern/07_type_plus_right.rb +0 -0
  127. data/mod/{core → 01_core}/set_pattern/08_self.rb +0 -0
  128. data/mod/01_core/spec/chunk/literal_spec.rb +14 -0
  129. data/{spec/mod/core → mod/01_core/spec}/chunk/uri_spec.rb +3 -3
  130. data/{spec/mod/core → mod/01_core/spec}/format/data_format_spec.rb +0 -0
  131. data/{spec/mod/core → mod/01_core/spec}/format/html_format_spec.rb +9 -8
  132. data/{spec/mod/core → mod/01_core/spec}/format/text_format_spec.rb +0 -0
  133. data/{spec/mod/core → mod/01_core/spec}/set/all/active_card_spec.rb +0 -0
  134. data/mod/01_core/spec/set/all/attribute_tracking_spec.rb +21 -0
  135. data/mod/01_core/spec/set/all/collection_spec.rb +65 -0
  136. data/mod/01_core/spec/set/all/content_spec.rb +15 -0
  137. data/{spec/mod/core → mod/01_core/spec}/set/all/fetch_spec.rb +70 -68
  138. data/{spec/mod/core → mod/01_core/spec}/set/all/initialize_spec.rb +12 -12
  139. data/{spec/mod/core → mod/01_core/spec}/set/all/name_spec.rb +7 -7
  140. data/mod/01_core/spec/set/all/notify_spec.rb +199 -0
  141. data/{spec/mod/core → mod/01_core/spec}/set/all/pattern_spec.rb +16 -16
  142. data/{spec/mod/core → mod/01_core/spec}/set/all/permissions_spec.rb +62 -62
  143. data/{spec/mod/core → mod/01_core/spec}/set/all/phases_spec.rb +0 -0
  144. data/{spec/mod/core → mod/01_core/spec}/set/all/references_spec.rb +1 -1
  145. data/{spec/mod/core → mod/01_core/spec}/set/all/rules2_spec.rb +57 -57
  146. data/mod/01_core/spec/set/all/rules_spec.rb +81 -0
  147. data/{spec/mod/core → mod/01_core/spec}/set/all/states_spec.rb +0 -0
  148. data/{spec/mod/core → mod/01_core/spec}/set/all/templating_spec.rb +16 -12
  149. data/{spec/mod/core → mod/01_core/spec}/set/all/tracked_attributes_spec.rb +24 -22
  150. data/{spec/mod/core → mod/01_core/spec}/set/all/trash_spec.rb +2 -2
  151. data/{spec/mod/core → mod/01_core/spec}/set/all/type_spec.rb +13 -13
  152. data/{spec/mod/core → mod/01_core/spec}/set/all/utils_spec.rb +0 -0
  153. data/mod/{core → 02_basic_types}/set/type/plain_text.rb +0 -0
  154. data/mod/{standard → 02_basic_types}/set/type/pointer.rb +21 -8
  155. data/{spec/mod/standard/set/type → mod/02_basic_types/spec/set}/plain_text_spec.rb +0 -0
  156. data/{spec/mod/standard/set/type → mod/02_basic_types/spec/set}/pointer_spec.rb +22 -9
  157. data/mod/{standard → 03_machines}/lib/card/machine.rb +3 -2
  158. data/mod/{standard → 03_machines}/lib/card/machine_input.rb +1 -1
  159. data/mod/{standard → 03_machines}/lib/javascript/html5shiv-printshiv.js +0 -0
  160. data/mod/{standard → 03_machines}/lib/javascript/jquery-ui.js +0 -0
  161. data/mod/{standard → 03_machines}/lib/javascript/jquery.autosize.js +0 -0
  162. data/mod/{standard → 03_machines}/lib/javascript/jquery.fileupload.js +0 -0
  163. data/mod/{standard → 03_machines}/lib/javascript/jquery.iframe-transport.js +0 -0
  164. data/mod/{standard → 03_machines}/lib/javascript/jquery.js +0 -0
  165. data/mod/{standard → 03_machines}/lib/javascript/jquery.ui.autocomplete.html.js +0 -0
  166. data/mod/{standard → 03_machines}/lib/javascript/jquery_ujs.js +0 -0
  167. data/mod/{standard → 03_machines}/lib/javascript/jquerymobile.js +0 -0
  168. data/mod/{standard → 03_machines}/lib/javascript/tinymce.js +0 -0
  169. data/mod/{standard → 03_machines}/lib/javascript/wagn.js.coffee +17 -9
  170. data/mod/{standard → 03_machines}/lib/javascript/wagn_menu.js +0 -0
  171. data/mod/{standard → 03_machines}/lib/javascript/wagn_mod.js.coffee +1 -1
  172. data/mod/{standard → 03_machines}/lib/stylesheets/functional.scss +1 -1
  173. data/mod/{standard → 03_machines}/lib/stylesheets/jquery-ui-smoothness.css +0 -0
  174. data/mod/{standard → 03_machines}/lib/stylesheets/standard.scss +126 -21
  175. data/mod/{standard → 03_machines}/set/right/machine_output.rb +3 -2
  176. data/mod/{standard → 03_machines}/set/self/script_card_menu.rb +1 -1
  177. data/mod/{standard → 03_machines}/set/self/script_html5shiv_printshiv.rb +1 -1
  178. data/mod/{standard → 03_machines}/set/self/script_jquery.rb +1 -1
  179. data/mod/{standard → 03_machines}/set/self/script_jquery_helper.rb +1 -1
  180. data/mod/{standard → 03_machines}/set/self/script_slot.rb +1 -1
  181. data/mod/{standard → 03_machines}/set/self/script_tinymce.rb +1 -1
  182. data/mod/{standard → 03_machines}/set/self/style_functional.rb +1 -1
  183. data/mod/{standard → 03_machines}/set/self/style_jquery_ui_smoothness.rb +1 -1
  184. data/mod/{standard → 03_machines}/set/self/style_standard.rb +1 -1
  185. data/mod/{standard → 03_machines}/set/type/coffee_script.rb +0 -0
  186. data/mod/{standard → 03_machines}/set/type/css.rb +0 -0
  187. data/mod/{standard → 03_machines}/set/type/java_script.rb +0 -0
  188. data/mod/{standard → 03_machines}/set/type/scss.rb +0 -0
  189. data/mod/{standard → 03_machines}/set/type/skin.rb +0 -0
  190. data/{spec/mod/standard → mod/03_machines/spec}/lib/machine_input_spec.rb +0 -0
  191. data/{spec/mod/standard → mod/03_machines/spec}/lib/machine_spec.rb +4 -4
  192. data/{spec/mod/standard → mod/03_machines/spec}/set/right/machine_output_spec.rb +0 -0
  193. data/{spec/mod/standard → mod/03_machines/spec}/set/self/style_functional_spec.rb +0 -0
  194. data/{spec/mod/standard → mod/03_machines/spec}/set/self/style_jquery_ui_smoothness_spec.rb +0 -0
  195. data/{spec/mod/standard → mod/03_machines/spec}/set/self/style_standard_spec.rb +0 -0
  196. data/{spec/mod/standard → mod/03_machines/spec}/set/type/coffeescript_spec.rb +0 -0
  197. data/{spec/mod/standard → mod/03_machines/spec}/set/type/css_spec.rb +0 -0
  198. data/{spec/mod/standard → mod/03_machines/spec}/set/type/javascript_spec.rb +0 -0
  199. data/{spec/mod/standard → mod/03_machines/spec}/set/type/scss_spec.rb +1 -1
  200. data/{spec/mod/standard → mod/03_machines/spec}/set/type/skin_spec.rb +22 -0
  201. data/mod/04_settings/lib/card/setting.rb +57 -0
  202. data/mod/{core/set/right/structure.rb → 04_settings/set/right/add_help.rb} +0 -2
  203. data/mod/{standard → 04_settings}/set/right/comment.rb +0 -1
  204. data/mod/{standard → 04_settings}/set/right/create.rb +0 -1
  205. data/mod/04_settings/set/right/default.rb +3 -0
  206. data/mod/{standard → 04_settings}/set/right/delete.rb +2 -0
  207. data/mod/04_settings/set/right/help.rb +3 -0
  208. data/mod/{standard → 04_settings}/set/right/read.rb +0 -0
  209. data/mod/{standard → 04_settings}/set/right/script.rb +0 -0
  210. data/mod/04_settings/set/right/structure.rb +4 -0
  211. data/mod/{standard → 04_settings}/set/right/style.rb +0 -0
  212. data/mod/{standard → 04_settings}/set/right/update.rb +0 -0
  213. data/mod/04_settings/set/self/accountable.rb +2 -0
  214. data/mod/04_settings/set/self/add_help.rb +2 -0
  215. data/mod/04_settings/set/self/autoname.rb +2 -0
  216. data/mod/04_settings/set/self/captcha.rb +2 -0
  217. data/mod/04_settings/set/self/comment.rb +2 -0
  218. data/mod/04_settings/set/self/create.rb +2 -0
  219. data/mod/04_settings/set/self/default.rb +2 -0
  220. data/mod/04_settings/set/self/delete.rb +2 -0
  221. data/mod/04_settings/set/self/help.rb +2 -0
  222. data/mod/04_settings/set/self/input.rb +2 -0
  223. data/mod/04_settings/set/self/layout.rb +2 -0
  224. data/mod/04_settings/set/self/on_create.rb +2 -0
  225. data/mod/04_settings/set/self/on_delete.rb +2 -0
  226. data/mod/04_settings/set/self/on_update.rb +2 -0
  227. data/mod/04_settings/set/self/options.rb +2 -0
  228. data/mod/04_settings/set/self/options_label.rb +2 -0
  229. data/mod/04_settings/set/self/read.rb +2 -0
  230. data/mod/04_settings/set/self/script.rb +2 -0
  231. data/mod/04_settings/set/self/structure.rb +2 -0
  232. data/mod/04_settings/set/self/style.rb +2 -0
  233. data/mod/04_settings/set/self/table_of_contents.rb +2 -0
  234. data/mod/04_settings/set/self/thanks.rb +2 -0
  235. data/mod/04_settings/set/self/update.rb +2 -0
  236. data/mod/{standard → 04_settings}/set/type/setting.rb +8 -14
  237. data/{spec/mod/standard → mod/04_settings/spec}/set/right/add_help_spec.rb +0 -0
  238. data/{spec/mod/standard → mod/04_settings/spec}/set/right/comment_spec.rb +5 -5
  239. data/{spec/mod/standard → mod/04_settings/spec}/set/right/create_spec.rb +0 -0
  240. data/{spec/mod/standard → mod/04_settings/spec}/set/right/default_spec.rb +0 -0
  241. data/{spec/mod/standard → mod/04_settings/spec}/set/right/delete_spec.rb +0 -0
  242. data/{spec/mod/standard → mod/04_settings/spec}/set/right/help_spec.rb +0 -0
  243. data/{spec/mod/standard → mod/04_settings/spec}/set/right/read_spec.rb +0 -0
  244. data/{spec/mod/standard → mod/04_settings/spec}/set/right/script_spec.rb +0 -0
  245. data/{spec/mod/standard → mod/04_settings/spec}/set/right/structure_spec.rb +4 -2
  246. data/{spec/mod/standard → mod/04_settings/spec}/set/right/style_spec.rb +1 -1
  247. data/{spec/mod/standard → mod/04_settings/spec}/set/right/update_spec.rb +0 -0
  248. data/{spec/mod/standard → mod/04_settings/spec}/set/type/setting_spec.rb +0 -0
  249. data/mod/{standard → 05_standard}/file/103/icon-6566.ico +0 -0
  250. data/mod/{standard → 05_standard}/file/103/large-6566.ico +0 -0
  251. data/mod/{standard → 05_standard}/file/103/medium-6566.ico +0 -0
  252. data/mod/{standard → 05_standard}/file/103/original-6566.ico +0 -0
  253. data/mod/{standard → 05_standard}/file/103/small-6566.ico +0 -0
  254. data/mod/{standard → 05_standard}/file/79/icon-6556.png +0 -0
  255. data/mod/{standard → 05_standard}/file/79/large-6556.png +0 -0
  256. data/mod/{standard → 05_standard}/file/79/medium-6556.png +0 -0
  257. data/mod/{standard → 05_standard}/file/79/original-6556.png +0 -0
  258. data/mod/{standard → 05_standard}/file/79/small-6556.png +0 -0
  259. data/mod/{standard → 05_standard}/file/790/icon-6419.png +0 -0
  260. data/mod/{standard → 05_standard}/file/790/large-6419.png +0 -0
  261. data/mod/{standard → 05_standard}/file/790/medium-6419.png +0 -0
  262. data/mod/{standard → 05_standard}/file/790/original-6419.png +0 -0
  263. data/mod/{standard → 05_standard}/file/790/small-6419.png +0 -0
  264. data/mod/{standard → 05_standard}/format/css_format.rb +0 -0
  265. data/mod/{standard → 05_standard}/format/csv_format.rb +0 -0
  266. data/mod/{standard → 05_standard}/format/file_format.rb +0 -0
  267. data/mod/{standard → 05_standard}/format/js_format.rb +0 -0
  268. data/mod/{standard → 05_standard}/format/json_format.rb +0 -0
  269. data/mod/{standard → 05_standard}/format/rss_format.rb +0 -0
  270. data/mod/{standard → 05_standard}/format/xml_format.rb +0 -0
  271. data/mod/{standard → 05_standard}/set/all/account.rb +0 -0
  272. data/mod/{standard → 05_standard}/set/all/all_css.rb +0 -0
  273. data/mod/{standard → 05_standard}/set/all/all_csv.rb +1 -1
  274. data/mod/05_standard/set/all/all_js.rb +7 -0
  275. data/mod/{standard → 05_standard}/set/all/attach.rb +33 -33
  276. data/mod/{standard → 05_standard}/set/all/base.rb +0 -0
  277. data/mod/{standard → 05_standard}/set/all/comment.rb +0 -0
  278. data/mod/{standard → 05_standard}/set/all/event_viz.rb +0 -0
  279. data/mod/{standard → 05_standard}/set/all/file.rb +0 -0
  280. data/mod/05_standard/set/all/follow.rb +51 -0
  281. data/mod/05_standard/set/all/history.rb +294 -0
  282. data/mod/{standard → 05_standard}/set/all/json.rb +2 -1
  283. data/mod/05_standard/set/all/observer.rb +27 -0
  284. data/mod/{standard → 05_standard}/set/all/rich_html.rb +21 -28
  285. data/mod/{standard → 05_standard}/set/all/rss.rb +0 -0
  286. data/mod/{standard → 05_standard}/set/all/text.rb +0 -0
  287. data/mod/{standard → 05_standard}/set/right/account.rb +53 -7
  288. data/mod/{standard → 05_standard}/set/right/email.rb +0 -1
  289. data/mod/{standard → 05_standard}/set/right/password.rb +1 -1
  290. data/mod/{standard → 05_standard}/set/right/salt.rb +0 -0
  291. data/mod/{standard → 05_standard}/set/right/stats.rb +1 -1
  292. data/mod/{standard → 05_standard}/set/right/status.rb +0 -0
  293. data/mod/{standard → 05_standard}/set/right/token.rb +0 -0
  294. data/mod/{standard → 05_standard}/set/right/when_created.rb +0 -0
  295. data/mod/{standard → 05_standard}/set/right/when_last_edited.rb +0 -0
  296. data/mod/{standard → 05_standard}/set/rstar/rules.rb +8 -7
  297. data/mod/{standard → 05_standard}/set/self/account_links.rb +0 -0
  298. data/mod/{standard → 05_standard}/set/self/alerts.rb +0 -0
  299. data/mod/{standard → 05_standard}/set/self/all.rb +1 -1
  300. data/mod/{standard → 05_standard}/set/self/foot.rb +0 -0
  301. data/mod/{standard → 05_standard}/set/self/head.rb +21 -6
  302. data/mod/{standard → 05_standard}/set/self/navbox.rb +0 -0
  303. data/mod/{standard → 05_standard}/set/self/now.rb +0 -0
  304. data/mod/{standard → 05_standard}/set/self/recent.rb +0 -0
  305. data/mod/{standard → 05_standard}/set/self/search.rb +0 -0
  306. data/mod/{standard → 05_standard}/set/self/signin.rb +1 -1
  307. data/mod/{standard → 05_standard}/set/self/stats.rb +2 -2
  308. data/mod/{standard → 05_standard}/set/self/version.rb +0 -0
  309. data/mod/{standard → 05_standard}/set/type/basic.rb +0 -0
  310. data/mod/{standard → 05_standard}/set/type/cardtype.rb +4 -6
  311. data/mod/{standard → 05_standard}/set/type/date.rb +0 -0
  312. data/mod/{standard → 05_standard}/set/type/file.rb +0 -0
  313. data/mod/{standard → 05_standard}/set/type/html.rb +0 -0
  314. data/mod/{standard → 05_standard}/set/type/image.rb +7 -6
  315. data/mod/{standard → 05_standard}/set/type/layout_type.rb +0 -0
  316. data/mod/{standard → 05_standard}/set/type/number.rb +0 -0
  317. data/mod/{standard → 05_standard}/set/type/phrase.rb +0 -0
  318. data/mod/{standard → 05_standard}/set/type/search_type.rb +6 -3
  319. data/mod/{standard → 05_standard}/set/type/set.rb +16 -9
  320. data/mod/{standard → 05_standard}/set/type/signup.rb +16 -17
  321. data/mod/{standard → 05_standard}/set/type/toggle.rb +0 -0
  322. data/mod/{standard → 05_standard}/set/type/user.rb +10 -11
  323. data/{spec/mod/standard → mod/05_standard/spec}/chunk/include_spec.rb +39 -39
  324. data/mod/05_standard/spec/chunk/link_spec.rb +61 -0
  325. data/{spec/mod/standard → mod/05_standard/spec}/format/css_format_spec.rb +0 -0
  326. data/{spec/mod/standard → mod/05_standard/spec}/format/csv_format_spec.rb +0 -0
  327. data/{spec/mod/standard → mod/05_standard/spec}/format/email_html_format_spec.rb +0 -0
  328. data/{spec/mod/standard → mod/05_standard/spec}/format/file_format_spec.rb +0 -0
  329. data/{spec/mod/standard → mod/05_standard/spec}/format/js_format_spec.rb +0 -0
  330. data/{spec/mod/standard → mod/05_standard/spec}/format/json_format_spec.rb +0 -0
  331. data/{spec/mod/standard → mod/05_standard/spec}/format/rss_format_spec.rb +0 -0
  332. data/{spec/mod/standard → mod/05_standard/spec}/format/xml_format_spec.rb +0 -0
  333. data/{spec/mod/standard → mod/05_standard/spec}/set/all/account_spec.rb +16 -16
  334. data/{spec/mod/standard → mod/05_standard/spec}/set/all/all_css_spec.rb +1 -1
  335. data/{spec/mod/standard → mod/05_standard/spec}/set/all/all_csv_spec.rb +1 -1
  336. data/{spec/mod/standard → mod/05_standard/spec}/set/all/attach_spec.rb +1 -1
  337. data/{spec/mod/standard → mod/05_standard/spec}/set/all/base_spec.rb +10 -10
  338. data/{spec/mod/standard → mod/05_standard/spec}/set/all/comment_spec.rb +0 -0
  339. data/mod/05_standard/spec/set/all/email_html_spec.rb +15 -0
  340. data/{spec/mod/standard → mod/05_standard/spec}/set/all/event_viz_spec.rb +1 -1
  341. data/{spec/mod/standard → mod/05_standard/spec}/set/all/file_spec.rb +0 -0
  342. data/mod/05_standard/spec/set/all/follow_spec.rb +83 -0
  343. data/mod/05_standard/spec/set/all/history_spec.rb +161 -0
  344. data/{spec/mod/standard → mod/05_standard/spec}/set/all/json_spec.rb +4 -4
  345. data/mod/05_standard/spec/set/all/observer_spec.rb +74 -0
  346. data/{spec/mod/standard → mod/05_standard/spec}/set/all/rich_html_spec.rb +14 -14
  347. data/{spec/mod/standard → mod/05_standard/spec}/set/all/rss_spec.rb +1 -1
  348. data/{spec/mod/standard → mod/05_standard/spec}/set/all/text_spec.rb +0 -0
  349. data/mod/05_standard/spec/set/right/account_spec.rb +162 -0
  350. data/{spec/mod/standard → mod/05_standard/spec}/set/right/email_spec.rb +7 -7
  351. data/{spec/mod/standard → mod/05_standard/spec}/set/right/password_spec.rb +7 -7
  352. data/{spec/mod/standard → mod/05_standard/spec}/set/right/salt_spec.rb +0 -0
  353. data/{spec/mod/standard → mod/05_standard/spec}/set/right/stats_spec.rb +0 -0
  354. data/{spec/mod/standard → mod/05_standard/spec}/set/right/status_spec.rb +0 -0
  355. data/{spec/mod/standard → mod/05_standard/spec}/set/right/token_spec.rb +0 -0
  356. data/{spec/mod/standard → mod/05_standard/spec}/set/right/when_created_spec.rb +1 -1
  357. data/{spec/mod/standard → mod/05_standard/spec}/set/right/when_last_edited_spec.rb +1 -1
  358. data/{spec/mod/standard → mod/05_standard/spec}/set/rstar/rules_spec.rb +4 -4
  359. data/{spec/mod/standard → mod/05_standard/spec}/set/self/account_links_spec.rb +0 -0
  360. data/{spec/mod/standard → mod/05_standard/spec}/set/self/alerts_spec.rb +0 -0
  361. data/{spec/mod/standard → mod/05_standard/spec}/set/self/all_spec.rb +7 -6
  362. data/{spec/mod/standard → mod/05_standard/spec}/set/self/foot_spec.rb +0 -0
  363. data/{spec/mod/standard → mod/05_standard/spec}/set/self/head_spec.rb +0 -0
  364. data/{spec/mod/standard → mod/05_standard/spec}/set/self/navbox_spec.rb +0 -0
  365. data/{spec/mod/standard → mod/05_standard/spec}/set/self/now_spec.rb +1 -1
  366. data/{spec/mod/standard → mod/05_standard/spec}/set/self/recent_spec.rb +0 -0
  367. data/{spec/mod/standard → mod/05_standard/spec}/set/self/search_spec.rb +0 -0
  368. data/{spec/mod/standard → mod/05_standard/spec}/set/self/signin_spec.rb +12 -12
  369. data/{spec/mod/standard → mod/05_standard/spec}/set/self/stats_spec.rb +0 -0
  370. data/{spec/mod/standard → mod/05_standard/spec}/set/self/version_spec.rb +1 -1
  371. data/{spec/mod/standard → mod/05_standard/spec}/set/type/basic_spec.rb +0 -0
  372. data/{spec/mod/standard → mod/05_standard/spec}/set/type/cardtype_spec.rb +0 -0
  373. data/{spec/mod/standard → mod/05_standard/spec}/set/type/date_spec.rb +0 -0
  374. data/mod/05_standard/spec/set/type/email_template_spec.rb +130 -0
  375. data/{spec/mod/standard → mod/05_standard/spec}/set/type/file_spec.rb +0 -0
  376. data/{spec/mod/standard → mod/05_standard/spec}/set/type/html_spec.rb +3 -3
  377. data/{spec/mod/standard → mod/05_standard/spec}/set/type/image_spec.rb +1 -1
  378. data/{spec/mod/standard → mod/05_standard/spec}/set/type/layout_type_spec.rb +1 -1
  379. data/{spec/mod/standard → mod/05_standard/spec}/set/type/number_spec.rb +0 -0
  380. data/{spec/mod/standard → mod/05_standard/spec}/set/type/phrase_spec.rb +0 -0
  381. data/mod/05_standard/spec/set/type/search_type_spec.rb +27 -0
  382. data/mod/05_standard/spec/set/type/set_spec.rb +26 -0
  383. data/mod/05_standard/spec/set/type/signup_spec.rb +209 -0
  384. data/{spec/mod/standard → mod/05_standard/spec}/set/type/toggle_spec.rb +2 -2
  385. data/{spec/mod/standard → mod/05_standard/spec}/set/type/user_spec.rb +0 -0
  386. data/mod/{standard → 06_email}/format/email_html_format.rb +0 -0
  387. data/mod/06_email/format/email_text_format.rb +7 -0
  388. data/mod/06_email/set/all/email_html.rb +9 -0
  389. data/mod/{standard/set/all/email_html.rb → 06_email/set/all/email_text.rb} +2 -1
  390. data/mod/06_email/set/right/bcc.rb +31 -0
  391. data/mod/06_email/set/right/cc.rb +2 -0
  392. data/mod/06_email/set/right/from.rb +2 -0
  393. data/mod/06_email/set/right/html_message.rb +3 -0
  394. data/mod/06_email/set/right/to.rb +2 -0
  395. data/mod/06_email/set/type/email_template.rb +99 -0
  396. data/spec/controllers/card_controller_spec.rb +34 -46
  397. data/spec/lib/card/action_spec.rb +14 -0
  398. data/spec/lib/card/chunk_spec.rb +3 -3
  399. data/spec/lib/card/codename_spec.rb +5 -5
  400. data/spec/lib/card/content_spec.rb +25 -25
  401. data/spec/lib/card/diff_spec.rb +107 -107
  402. data/spec/lib/card/format_spec.rb +11 -11
  403. data/spec/lib/card/loader_spec.rb +35 -29
  404. data/spec/lib/card/name_spec.rb +82 -82
  405. data/spec/lib/card/query_spec.rb +83 -82
  406. data/spec/lib/card/reference_spec.rb +30 -30
  407. data/spec/lib/card/set_pattern_spec.rb +1 -1
  408. data/spec/lib/card/set_spec.rb +86 -82
  409. data/spec/lib/wagn/cache_spec.rb +24 -24
  410. data/spec/mailers/mailer_spec.rb +41 -30
  411. data/spec/models/card/cardtype_spec.rb +19 -19
  412. data/spec/models/card/create_spec.rb +14 -14
  413. data/spec/models/card/trash_spec.rb +37 -36
  414. data/spec/models/card/type_transition_spec.rb +13 -13
  415. data/spec/models/card/validation_spec.rb +6 -6
  416. data/spec/models/card_spec.rb +40 -39
  417. data/spec/spec_helper.rb +37 -11
  418. data/test/fixtures/card_actions.yml +4726 -0
  419. data/test/fixtures/card_acts.yml +589 -0
  420. data/test/fixtures/card_changes.yml +12644 -0
  421. data/test/fixtures/card_references.yml +976 -591
  422. data/test/fixtures/cards.yml +4544 -2781
  423. data/test/seed.rb +14 -13
  424. data/wagn.gemspec +4 -0
  425. metadata +404 -403
  426. data/db/bootstrap/card_revisions.yml +0 -3379
  427. data/lib/card/flexmail.rb +0 -53
  428. data/lib/card/mailer/change_notice.html.erb +0 -32
  429. data/lib/card/mailer/confirmation_email.html.erb +0 -12
  430. data/lib/card/mailer/flexmail.html.erb +0 -6
  431. data/lib/card/mailer/password_reset.html.erb +0 -9
  432. data/lib/card/mailer/signup_alert.html.erb +0 -14
  433. data/lib/card/revision.rb +0 -47
  434. data/lib/wagn/migration_helper.rb +0 -34
  435. data/mod/core/set/all/attribute_tracking.rb +0 -85
  436. data/mod/core/set/all/content.rb +0 -94
  437. data/mod/standard/set/all/flexmail.rb +0 -3
  438. data/mod/standard/set/all/follow.rb +0 -119
  439. data/mod/standard/set/all/history.rb +0 -107
  440. data/mod/standard/set/right/add_help.rb +0 -3
  441. data/mod/standard/set/right/default.rb +0 -3
  442. data/mod/standard/set/right/help.rb +0 -3
  443. data/spec/lib/card/flexmail_spec.rb +0 -209
  444. data/spec/lib/card/revision_spec.rb +0 -30
  445. data/spec/mod/core/chunk/literal_spec.rb +0 -14
  446. data/spec/mod/core/set/all/attribute_tracking_spec.rb +0 -21
  447. data/spec/mod/core/set/all/collection_spec.rb +0 -45
  448. data/spec/mod/core/set/all/content_spec.rb +0 -14
  449. data/spec/mod/core/set/all/rules_spec.rb +0 -98
  450. data/spec/mod/standard/chunk/link_spec.rb +0 -59
  451. data/spec/mod/standard/set/all/email_html_spec.rb +0 -13
  452. data/spec/mod/standard/set/all/flexmail_spec.rb +0 -5
  453. data/spec/mod/standard/set/all/follow_spec.rb +0 -95
  454. data/spec/mod/standard/set/all/history_spec.rb +0 -10
  455. data/spec/mod/standard/set/right/account_spec.rb +0 -90
  456. data/spec/mod/standard/set/type/search_type_spec.rb +0 -27
  457. data/spec/mod/standard/set/type/set_spec.rb +0 -26
  458. data/spec/mod/standard/set/type/signup_spec.rb +0 -169
  459. data/test/fixtures/card_revisions.yml +0 -4560
@@ -0,0 +1,199 @@
1
+ shared_examples_for 'notifications' do
2
+ # describe '#change_notice' do
3
+ # context 'for new card with subcards' do
4
+ # name = "another card with subcards"
5
+ # content = "main content {{+s1}} {{+s2}}"
6
+ # sub1_content = 'new content of subcard 1'
7
+ # sub2_content = 'new content of subcard 2'
8
+ # before do
9
+ # Card::Auth.as_bot do
10
+ # @card = Card.create!(:name=>name, :content=>content,
11
+ # :subcards=>{ '+s1'=>{:content=>sub1_content},
12
+ # '+s2'=>{:content=>sub2_content} })
13
+ # end
14
+ # end
15
+ # subject { @card.format(:format=>format).render_change_notice }
16
+ # it { is_expected.to include content }
17
+ # it { is_expected.to include sub1_content }
18
+ # it { is_expected.to include sub2_content }
19
+ #
20
+ # context 'and missing permissions' do
21
+ # subject { Card.fetch(@card.name).format(:format=>format).render_change_notice }
22
+ # context 'for subcard' do
23
+ # before do
24
+ # Card.create_or_update! "#{name}+s1+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
25
+ # end
26
+ # it "excludes subcard content" do
27
+ # Card::Auth.as(:joe_user) do
28
+ # is_expected.not_to include sub1_content
29
+ # is_expected.to include sub2_content
30
+ # end
31
+ # end
32
+ # end
33
+ # context 'for main card' do
34
+ # before do
35
+ # Card.create_or_update! "#{name}+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
36
+ # Card.create_or_update! "#{name}+s1+*self+*read",:type=>'Pointer',:content=>'[[Anyone]]'
37
+ # end
38
+ # it 'includes subcard content' do
39
+ # Card::Auth.as(:joe_user) do
40
+ # is_expected.to include sub1_content
41
+ # end
42
+ # end
43
+ # it "excludes maincard content" do
44
+ # Card::Auth.as(:joe_user) do
45
+ # is_expected.not_to include content
46
+ # is_expected.not_to be_empty
47
+ # end
48
+ # end
49
+ # end
50
+ # context 'for all parts' do
51
+ # before do
52
+ # #Card.create_or_update! "#{name}+s1+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
53
+ # #Card.create_or_update! "#{name}+s2+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
54
+ # Card.create_or_update! "s1+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
55
+ # Card.create_or_update! "s2+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
56
+ # Card.create_or_update! "#{name}+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
57
+ # end
58
+ # it { is_expected.to be_empty }
59
+ # end
60
+ # end
61
+ # end
62
+ # end
63
+
64
+ describe '#list_of_changes' do
65
+ name = 'subedit notice'
66
+ content = 'new content'
67
+
68
+ before do
69
+ @card = Card.create!(:name=>name, :content=>content)
70
+ end
71
+ subject { @card.format(:format=>format).render_list_of_changes }
72
+
73
+ context 'for a new card' do
74
+ it { is_expected.to include "content: #{content}" }
75
+ it { is_expected.to include 'cardtype: Basic' }
76
+ end
77
+ context 'for a updated card' do
78
+ before { @card.update_attributes!(:name=>'bnn card', :type=>:pointer, :content=>'changed content') }
79
+ it { is_expected.to include 'new content: [[changed content]]' }
80
+ it { is_expected.to include 'new cardtype: Pointer' }
81
+ it { is_expected.to include 'new name: bnn card' }
82
+ end
83
+ context 'for a deleted card' do
84
+ before { @card.delete }
85
+ it { is_expected.to be_empty }
86
+ end
87
+
88
+ context 'for a given action' do
89
+ subject do
90
+ action = @card.last_action
91
+ @card.update_attributes!(:name=>'bnn card', :type=>:pointer, :content=>'changed content')
92
+ @card.format(:format=>format).render_list_of_changes(:action=>action)
93
+ end
94
+ it { is_expected.to include "content: #{content}" }
95
+ end
96
+ context 'for a given action id' do
97
+ subject do
98
+ action_id = @card.last_action.id
99
+ @card.update_attributes!(:name=>'bnn card', :type=>:pointer, :content=>'changed content')
100
+ @card.format(:format=>format).render_list_of_changes(:action_id=>action_id)
101
+ end
102
+ it { is_expected.to include "content: #{content}" }
103
+ end
104
+ end
105
+
106
+ describe 'subedit_notice' do
107
+ def list_of_changes_for card
108
+ card.db_content
109
+ end
110
+ name = 'subedit notice card'
111
+ content = 'new content'
112
+ before do
113
+ @card = Card.create!(:name=>name, :content=>content)
114
+ end
115
+ subject { @card.format(:format=>format).render_subedit_notice }
116
+
117
+ context 'for a new card' do
118
+ it { is_expected.to include name }
119
+ it { is_expected.to include 'created' }
120
+ it { is_expected.to include list_of_changes_for @card }
121
+ end
122
+
123
+ context 'for a updated card' do
124
+ changed_name = 'changed subedit notice'
125
+ changed_content = 'changed content'
126
+ before { @card.update_attributes!(:name=>changed_name, :content=>changed_content) }
127
+ it { is_expected.to include changed_name }
128
+ it { is_expected.to include 'updated' }
129
+ it { is_expected.to include list_of_changes_for @card }
130
+ end
131
+
132
+ context 'for a deleted card' do
133
+ before { @card.delete }
134
+ it { is_expected.to include name }
135
+ it { is_expected.to include 'deleted' }
136
+ end
137
+ end
138
+ end
139
+
140
+
141
+ describe Card::Set::All::Notify do
142
+ describe 'html format' do
143
+ include_examples 'notifications' do
144
+ let(:format) { 'email_html' }
145
+ end
146
+
147
+ # it 'contains html' do
148
+ # card = Card.create! :name=>'new card'
149
+ # expect(card.format(:format=>:email_html).render_change_notice).to include '<p>'
150
+ # end
151
+ end
152
+
153
+ describe 'text format' do
154
+ include_examples 'notifications' do
155
+ let(:format) { 'email_text' }
156
+ end
157
+
158
+ # it 'does not contain html' do
159
+ # card = Card.create! :name=>'new card'
160
+ # expect(card.format(:format=>:email_text).render_change_notice).not_to match /<\w+>/
161
+ # end
162
+ # it 'creates well formatted text message' do
163
+ # name = "another card with subcards"
164
+ # content = "main content {{+s1}} {{+s2}}"
165
+ # sub1_content = 'new content of subcard 1'
166
+ # sub2_content = 'new content of subcard 2'
167
+ # Card::Auth.as_bot do
168
+ # @card = Card.create!(:name=>name, :content=>content,
169
+ # :subcards=>{ '+s1'=>{:content=>sub1_content},
170
+ # '+s2'=>{:content=>sub2_content} })
171
+ # end
172
+ # result = @card.format(:format=>:email_text).render_change_notice
173
+ # expect(result).to eq(%{Dear My Wagn user
174
+ #
175
+ # "another card with subcards"
176
+ # was just created by Joe User
177
+ # cardtype: Basic
178
+ # content: main content {{+s1}} {{+s2}}
179
+ #
180
+ # This update included the following changes:
181
+ #
182
+ # another card with subcards+s1 created
183
+ # cardtype: Basic
184
+ # content: new content of subcard 1
185
+ #
186
+ #
187
+ # another card with subcards+s2 created
188
+ # cardtype: Basic
189
+ # content: new content of subcard 2
190
+ #
191
+ #
192
+ # See the card: /another_card_with_subcards
193
+ #
194
+ # You received this email because you're following "".
195
+ # Visit /update/+*following?drop_item= to stop receiving these emails.})
196
+ # end
197
+
198
+ end
199
+ end
@@ -6,40 +6,40 @@ describe Card::Set::All::Pattern do
6
6
  it "returns self, type, all for simple cards" do
7
7
  Card::Auth.as_bot do
8
8
  card = Card.new( :name => "AnewCard" )
9
- card.set_names.should == [ "Basic+*type","*all"]
9
+ expect(card.set_names).to eq([ "Basic+*type","*all"])
10
10
  card.save!
11
11
  card = Card.fetch("AnewCard")
12
- card.set_names.should == [ "AnewCard+*self","Basic+*type","*all"]
12
+ expect(card.set_names).to eq([ "AnewCard+*self","Basic+*type","*all"])
13
13
  end
14
14
  end
15
15
 
16
16
  it "returns set names for simple star cards" do
17
17
  Card::Auth.as_bot do
18
- Card.fetch('*update').set_names.should == [
18
+ expect(Card.fetch('*update').set_names).to eq([
19
19
  "*update+*self","*star","Setting+*type","*all"
20
- ]
20
+ ])
21
21
  end
22
22
  end
23
23
 
24
24
  it "returns set names for junction cards" do
25
25
  Card::Auth.as_bot do
26
- Card.new( :name=>"Iliad+author" ).set_names.should == [
26
+ expect(Card.new( :name=>"Iliad+author" ).set_names).to eq([
27
27
  "Book+author+*type plus right","author+*right","Basic+*type","*all plus","*all"
28
- ]
28
+ ])
29
29
  end
30
30
  end
31
31
 
32
32
  it "returns set names for compound star cards" do
33
33
  Card::Auth.as_bot do
34
- Card.new( :name=>"Iliad+*to" ).set_names.should == [
35
- "Book+*to+*type plus right","*to+*right","*rstar","Phrase+*type","*all plus","*all"
36
- ]
34
+ expect(Card.new( :name=>"Iliad+*to" ).set_names).to eq([
35
+ "Book+*to+*type plus right","*to+*right","*rstar","Pointer+*type","*all plus","*all"
36
+ ])
37
37
  end
38
38
  end
39
39
 
40
40
  it "handles type plus right prototypes properly" do #right place for this? really need more prototype tests...
41
41
  Card::Auth.as_bot do
42
- Card.fetch('Fruit+flavor+*type plus right').prototype.set_names.include?('Fruit+flavor+*type plus right').should be_true
42
+ expect(Card.fetch('Fruit+flavor+*type plus right').prototype.set_names.include?('Fruit+flavor+*type plus right')).to be_truthy
43
43
  end
44
44
  end
45
45
  end
@@ -48,7 +48,7 @@ describe Card::Set::All::Pattern do
48
48
  describe :rule_set_keys do
49
49
  it "returns correct set names for new cards" do
50
50
  card = Card.new :name => "AnewCard"
51
- card.rule_set_keys.should == [ "#{Card::BasicID}+type", "all"]
51
+ expect(card.rule_set_keys).to eq([ "#{Card::BasicID}+type", "all"])
52
52
  end
53
53
 
54
54
  end
@@ -57,25 +57,25 @@ describe Card::Set::All::Pattern do
57
57
  it "returns css names for simple star cards" do
58
58
  Card::Auth.as_bot do
59
59
  card = Card.new( :name => "*AnewCard")
60
- card.safe_set_keys.should == "ALL TYPE-basic STAR"
60
+ expect(card.safe_set_keys).to eq("ALL TYPE-basic STAR")
61
61
  card.save!
62
62
  card = Card.fetch("*AnewCard")
63
- card.safe_set_keys.should == "ALL TYPE-basic STAR SELF-Xanew_card"
63
+ expect(card.safe_set_keys).to eq("ALL TYPE-basic STAR SELF-Xanew_card")
64
64
  end
65
65
  end
66
66
 
67
67
  it "returns set names for junction cards" do
68
68
  card=Card.new( :name=>"Iliad+author" )
69
- card.safe_set_keys.should == "ALL ALL_PLUS TYPE-basic RIGHT-author TYPE_PLUS_RIGHT-book-author"
69
+ expect(card.safe_set_keys).to eq("ALL ALL_PLUS TYPE-basic RIGHT-author TYPE_PLUS_RIGHT-book-author")
70
70
  card.save!
71
71
  card = Card.fetch("Iliad+author")
72
- card.safe_set_keys.should == "ALL ALL_PLUS TYPE-basic RIGHT-author TYPE_PLUS_RIGHT-book-author SELF-iliad-author"
72
+ expect(card.safe_set_keys).to eq("ALL ALL_PLUS TYPE-basic RIGHT-author TYPE_PLUS_RIGHT-book-author SELF-iliad-author")
73
73
  end
74
74
  end
75
75
 
76
76
  describe :label do
77
77
  it "returns label for name" do
78
- Card.new(:name=>'address+*right').label.should== %{All "+address" cards}
78
+ expect(Card.new(:name=>'address+*right').label).to eq(%{All "+address" cards})
79
79
  end
80
80
  end
81
81
  end
@@ -66,9 +66,9 @@ describe Card::Set::All::Permissions do
66
66
 
67
67
  it "should be *all+*read by default" do
68
68
  card = Card.fetch('Home')
69
- card.read_rule_id.should == Card.fetch('*all+*read').id
70
- card.who_can(:read).should == [Card::AnyoneID]
71
- Card::Auth.as(:anonymous){ card.ok?(:read).should be_true }
69
+ expect(card.read_rule_id).to eq(Card.fetch('*all+*read').id)
70
+ expect(card.who_can(:read)).to eq([Card::AnyoneID])
71
+ Card::Auth.as(:anonymous){ expect(card.ok?(:read)).to be_truthy }
72
72
  end
73
73
 
74
74
  it "should update to role ('Anyone Signed In')" do
@@ -78,10 +78,10 @@ describe Card::Set::All::Permissions do
78
78
  pc = Card[name]
79
79
  card = Card['Home']
80
80
  #warn "card #{name}, #{card.inspect}, #{pc.inspect}"
81
- pc.should be
82
- card.read_rule_id.should == pc.id
83
- card.who_can(:read).should == [Card::AnyoneSignedInID]
84
- Card::Auth.as(:anonymous){ card.ok?(:read).should be_false }
81
+ expect(pc).to be
82
+ expect(card.read_rule_id).to eq(pc.id)
83
+ expect(card.who_can(:read)).to eq([Card::AnyoneSignedInID])
84
+ Card::Auth.as(:anonymous){ expect(card.ok?(:read)).to be_falsey }
85
85
  end
86
86
 
87
87
  it "should update to user ('Joe Admin')" do
@@ -89,12 +89,12 @@ describe Card::Set::All::Permissions do
89
89
  Card::Auth.as_bot { @perm_card.save! }
90
90
 
91
91
  card = Card.fetch('Home')
92
- card.read_rule_id.should == @perm_card.id
93
- card.who_can(:read).should == [Card['joe_admin'].id]
94
- Card::Auth.as(:anonymous) { card.ok?(:read).should be_false }
95
- Card::Auth.as(:joe_user) { card.ok?(:read).should be_false }
96
- Card::Auth.as(:joe_admin) { card.ok?(:read).should be_true }
97
- Card::Auth.as_bot { card.ok?(:read).should be_true }
92
+ expect(card.read_rule_id).to eq(@perm_card.id)
93
+ expect(card.who_can(:read)).to eq([Card['joe_admin'].id])
94
+ Card::Auth.as(:anonymous) { expect(card.ok?(:read)).to be_falsey }
95
+ Card::Auth.as(:joe_user) { expect(card.ok?(:read)).to be_falsey }
96
+ Card::Auth.as(:joe_admin) { expect(card.ok?(:read)).to be_truthy }
97
+ Card::Auth.as_bot { expect(card.ok?(:read)).to be_truthy }
98
98
  end
99
99
 
100
100
  it "should revert to more general rule when more specific (self) rule is deleted" do
@@ -103,7 +103,7 @@ describe Card::Set::All::Permissions do
103
103
  @perm_card.delete!
104
104
  end
105
105
  card = Card.fetch('Home')
106
- card.read_rule_id.should == Card.fetch('*all+*read').id
106
+ expect(card.read_rule_id).to eq(Card.fetch('*all+*read').id)
107
107
  end
108
108
 
109
109
  it "should revert to more general rule when more specific (right) rule is deleted" do
@@ -111,13 +111,13 @@ describe Card::Set::All::Permissions do
111
111
  Card::Auth.as_bot do
112
112
  pc=Card.create(:name=>'B+*right+*read', :type=>'Pointer', :content=>'[[Anyone Signed In]]')
113
113
  end
114
- pc.should be
114
+ expect(pc).to be
115
115
  card = Card.fetch('A+B')
116
- card.read_rule_id.should == pc.id
116
+ expect(card.read_rule_id).to eq(pc.id)
117
117
  pc = Card.fetch(pc.name) #important to re-fetch to catch issues with detecting change in trash status.
118
118
  Card::Auth.as_bot { pc.delete }
119
119
  card = Card.fetch('A+B')
120
- card.read_rule_id.should == Card.fetch('*all+*read').id
120
+ expect(card.read_rule_id).to eq(Card.fetch('*all+*read').id)
121
121
  end
122
122
 
123
123
  it "should revert to more general rule when more specific rule is renamed" do
@@ -130,7 +130,7 @@ describe Card::Set::All::Permissions do
130
130
  end
131
131
 
132
132
  card = Card.fetch('Home')
133
- card.read_rule_id.should == Card.fetch('*all+*read').id
133
+ expect(card.read_rule_id).to eq(Card.fetch('*all+*read').id)
134
134
  end
135
135
 
136
136
  it "should not be overruled by a more general rule added later" do
@@ -143,17 +143,17 @@ describe Card::Set::All::Permissions do
143
143
  end
144
144
 
145
145
  card = Card.fetch('Home')
146
- card.read_rule_id.should == @perm_card.id
146
+ expect(card.read_rule_id).to eq(@perm_card.id)
147
147
  end
148
148
 
149
149
  it "should get updated when trunk type change makes type-plus-right apply / unapply" do
150
150
  @perm_card.name = "Phrase+B+*type plus right+*read"
151
151
  Card::Auth.as_bot { @perm_card.save! }
152
- Card.fetch('A+B').read_rule_id.should == Card.fetch('*all+*read').id
152
+ expect(Card.fetch('A+B').read_rule_id).to eq(Card.fetch('*all+*read').id)
153
153
  c = Card.fetch('A')
154
154
  c.type_id = Card::PhraseID
155
155
  c.save!
156
- Card.fetch('A+B').read_rule_id.should == @perm_card.id
156
+ expect(Card.fetch('A+B').read_rule_id).to eq(@perm_card.id)
157
157
  end
158
158
 
159
159
  it "should work with relative settings" do
@@ -163,10 +163,10 @@ describe Card::Set::All::Permissions do
163
163
  all_plus.save
164
164
  end
165
165
  c = Card.new(:name=>'Home+Heart')
166
- c.who_can(:read).should == [Card::AnyoneSignedInID]
167
- c.permission_rule_card(:read).first.id.should == @perm_card.id
166
+ expect(c.who_can(:read)).to eq([Card::AnyoneSignedInID])
167
+ expect(c.permission_rule_card(:read).first.id).to eq(@perm_card.id)
168
168
  c.save
169
- c.read_rule_id.should == @perm_card.id
169
+ expect(c.read_rule_id).to eq(@perm_card.id)
170
170
  end
171
171
 
172
172
  it "should get updated when relative settings change" do
@@ -175,18 +175,18 @@ describe Card::Set::All::Permissions do
175
175
  all_plus.save
176
176
  end
177
177
  c = Card.new(:name=>'Home+Heart')
178
- c.who_can(:read).should == [Card::AnyoneID]
179
- c.permission_rule_card(:read).first.id.should == Card.fetch('*all+*read').id
178
+ expect(c.who_can(:read)).to eq([Card::AnyoneID])
179
+ expect(c.permission_rule_card(:read).first.id).to eq(Card.fetch('*all+*read').id)
180
180
  c.save
181
- c.read_rule_id.should == Card.fetch('*all+*read').id
181
+ expect(c.read_rule_id).to eq(Card.fetch('*all+*read').id)
182
182
  Card::Auth.as_bot { @perm_card.save! }
183
183
  c2 = Card.fetch('Home+Heart')
184
- c2.who_can(:read).should == [Card::AnyoneSignedInID]
185
- c2.read_rule_id.should == @perm_card.id
186
- Card.fetch('Home+Heart').read_rule_id.should == @perm_card.id
184
+ expect(c2.who_can(:read)).to eq([Card::AnyoneSignedInID])
185
+ expect(c2.read_rule_id).to eq(@perm_card.id)
186
+ expect(Card.fetch('Home+Heart').read_rule_id).to eq(@perm_card.id)
187
187
  Card::Auth.as_bot{ @perm_card.delete }
188
- Card.fetch('Home').read_rule_id.should == Card.fetch('*all+*read').id
189
- Card.fetch('Home+Heart').read_rule_id.should == Card.fetch('*all+*read').id
188
+ expect(Card.fetch('Home').read_rule_id).to eq(Card.fetch('*all+*read').id)
189
+ expect(Card.fetch('Home+Heart').read_rule_id).to eq(Card.fetch('*all+*read').id)
190
190
  end
191
191
 
192
192
  it "should insure that class overrides work with relative settings" do
@@ -195,15 +195,15 @@ describe Card::Set::All::Permissions do
195
195
  all_plus.save
196
196
  Card::Auth.as_bot { @perm_card.save! }
197
197
  c = Card.create(:name=>'Home+Heart')
198
- c.read_rule_id.should == @perm_card.id
198
+ expect(c.read_rule_id).to eq(@perm_card.id)
199
199
  r = Card.create(:name=>'Heart+*right+*read', :type=>'Pointer', :content=>'[[Administrator]]')
200
- Card.fetch('Home+Heart').read_rule_id.should == r.id
200
+ expect(Card.fetch('Home+Heart').read_rule_id).to eq(r.id)
201
201
  end
202
202
  end
203
203
 
204
204
  it "should work on virtual+virtual cards" do
205
205
  c = Card.fetch('Number+*type+by name')
206
- c.ok?(:read).should be_true
206
+ expect(c.ok?(:read)).to be_truthy
207
207
  end
208
208
 
209
209
  end
@@ -222,21 +222,21 @@ describe Card::Set::All::Permissions do
222
222
 
223
223
  it "checking ok read should not add to errors" do
224
224
  Card::Auth.as_bot do
225
- Card::Auth.always_ok?.should == true
225
+ expect(Card::Auth.always_ok?).to eq(true)
226
226
  end
227
227
  Card::Auth.as(:joe_user) do
228
- Card::Auth.always_ok?.should == false
228
+ expect(Card::Auth.always_ok?).to eq(false)
229
229
  end
230
230
  Card::Auth.as(:joe_admin) do
231
- Card::Auth.always_ok?.should == true
231
+ expect(Card::Auth.always_ok?).to eq(true)
232
232
  Card.create! :name=>"Hidden"
233
233
  Card.create(:name=>'Hidden+*self+*read', :type=>'Pointer', :content=>'[[Anyone Signed In]]')
234
234
  end
235
235
 
236
236
  Card::Auth.as(:anonymous) do
237
237
  h = Card.fetch('Hidden')
238
- h.ok?(:read).should == false
239
- h.errors.empty?.should_not == nil
238
+ expect(h.ok?(:read)).to eq(false)
239
+ expect(h.errors.empty?).not_to eq(nil)
240
240
  end
241
241
  end
242
242
 
@@ -244,8 +244,8 @@ describe Card::Set::All::Permissions do
244
244
  Card::Auth.as_bot do
245
245
  c1 = Card['c1']
246
246
  Card.create! :name=>'c1+*self+*comment', :type=>'Pointer', :content=>'[[r1]]'
247
- c1.who_can( :comment ).should == [Card['r1'].id]
248
- c1.ok?(:comment).should be_true
247
+ expect(c1.who_can( :comment )).to eq([Card['r1'].id])
248
+ expect(c1.ok?(:comment)).to be_truthy
249
249
  end
250
250
  end
251
251
 
@@ -253,8 +253,8 @@ describe Card::Set::All::Permissions do
253
253
  Card.where(:trash=>false).each do |c|
254
254
  prc = c.permission_rule_card(:read)
255
255
  #warn "C #{c.inspect}, #{c.read_rule_id}, #{prc.first.id}, #{c.read_rule_class}, #{prc.second}, #{prc.first.inspect}" unless prc.last == c.read_rule_class && prc.first.id == c.read_rule_id
256
- prc.last.should == c.read_rule_class
257
- prc.first.id.should == c.read_rule_id
256
+ expect(prc.last).to eq(c.read_rule_class)
257
+ expect(prc.first.id).to eq(c.read_rule_id)
258
258
  end
259
259
  end
260
260
 
@@ -358,11 +358,11 @@ describe Card::Set::All::Permissions do
358
358
 
359
359
  it "should inherit" do
360
360
  Card::Auth.as(:anyone_signed_in) do
361
- Card.fetch( 'A+*self' ).ok?(:create).should be_true #explicitly granted above
362
- Card.fetch( 'A+*right').ok?(:create).should be_false #by default restricted
361
+ expect(Card.fetch( 'A+*self' ).ok?(:create)).to be_truthy #explicitly granted above
362
+ expect(Card.fetch( 'A+*right').ok?(:create)).to be_falsey #by default restricted
363
363
 
364
- Card.fetch( 'A+*self+*structure', :new=>{} ).ok?(:create).should be_true # +*structure granted;
365
- Card.fetch( 'A+*right+*structure', :new=>{} ).ok?(:create).should be_false # can't create A+B, therefore can't create A+B+C
364
+ expect(Card.fetch( 'A+*self+*structure', :new=>{} ).ok?(:create)).to be_truthy # +*structure granted;
365
+ expect(Card.fetch( 'A+*right+*structure', :new=>{} ).ok?(:create)).to be_falsey # can't create A+B, therefore can't create A+B+C
366
366
  end
367
367
  end
368
368
 
@@ -379,10 +379,10 @@ describe Card::Set::All::Permissions do
379
379
  end
380
380
 
381
381
  Card::Auth.as(@u1) do
382
- Card.search(:content=>'WeirdWord').map(&:name).sort.should == %w( c1 c2 c3 )
382
+ expect(Card.search(:content=>'WeirdWord').map(&:name).sort).to eq(%w( c1 c2 c3 ))
383
383
  end
384
384
  Card::Auth.as(@u2) do
385
- Card.search(:content=>'WeirdWord').map(&:name).sort.should == %w( c2 c3 )
385
+ expect(Card.search(:content=>'WeirdWord').map(&:name).sort).to eq(%w( c2 c3 ))
386
386
  end
387
387
  end
388
388
 
@@ -398,11 +398,11 @@ describe Card::Set::All::Permissions do
398
398
  end
399
399
 
400
400
  Card::Auth.as(@u1) do
401
- Card.search(:content=>'WeirdWord').map(&:name).sort.should == %w( c1 c2 c3 )
401
+ expect(Card.search(:content=>'WeirdWord').map(&:name).sort).to eq(%w( c1 c2 c3 ))
402
402
  end
403
403
  Card::Auth.current_id =nil # for Card::Auth.as to be effective, you can't have a logged in user
404
404
  Card::Auth.as(@u2) do
405
- Card.search(:content=>'WeirdWord').map(&:name).sort.should == %w( c2 c3 )
405
+ expect(Card.search(:content=>'WeirdWord').map(&:name).sort).to eq(%w( c2 c3 ))
406
406
  end
407
407
  end
408
408
 
@@ -432,7 +432,7 @@ describe Card::Set::All::Permissions do
432
432
 
433
433
 
434
434
  it "should let joe view new cards" do
435
- Card.new.ok?(:read).should be_true
435
+ expect(Card.new.ok?(:read)).to be_truthy
436
436
  end
437
437
 
438
438
 
@@ -443,24 +443,24 @@ describe Card::Set::All::Permissions do
443
443
 
444
444
  it "should let anonymous users view basic cards" do
445
445
  Card::Auth.as :anonymous do
446
- @c.ok?(:read).should be_true
446
+ expect(@c.ok?(:read)).to be_truthy
447
447
  end
448
448
  end
449
449
 
450
450
  it "should let joe user basic cards" do
451
451
  Card::Auth.as :joe_user do
452
- @c.ok?(:read).should be_true
452
+ expect(@c.ok?(:read)).to be_truthy
453
453
  end
454
454
  end
455
455
  end
456
456
 
457
457
  it "should allow anyone signed in to create Basic Cards" do
458
- Card.new.ok?(:create).should be_true
458
+ expect(Card.new.ok?(:create)).to be_truthy
459
459
  end
460
460
 
461
461
  it "should not allow someone not signed in to create Basic Cards" do
462
462
  Card::Auth.as :anonymous do
463
- Card.new.ok?(:create).should_not be_true
463
+ expect(Card.new.ok?(:create)).not_to be_truthy
464
464
  end
465
465
  end
466
466
 
@@ -478,18 +478,18 @@ describe Card::Set::All::Permissions do
478
478
 
479
479
  it "should handle delete as a setting" do
480
480
  c = Card.new :name=>'whatever'
481
- c.who_can(:delete).should == [Card['joe_user'].id]
481
+ expect(c.who_can(:delete)).to eq([Card['joe_user'].id])
482
482
  Card::Auth.as(:joe_user) do
483
- c.ok?(:delete).should == true
483
+ expect(c.ok?(:delete)).to eq(true)
484
484
  end
485
485
  Card::Auth.as(:u1) do
486
- c.ok?(:delete).should == false
486
+ expect(c.ok?(:delete)).to eq(false)
487
487
  end
488
488
  Card::Auth.as(:anonymous) do
489
- c.ok?(:delete).should == false
489
+ expect(c.ok?(:delete)).to eq(false)
490
490
  end
491
491
  Card::Auth.as_bot do
492
- c.ok?(:delete).should == true #because administrator
492
+ expect(c.ok?(:delete)).to eq(true) #because administrator
493
493
  end
494
494
  end
495
495
  end