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
@@ -4,7 +4,7 @@ describe Card::Set::All::Account do
4
4
  describe 'accountable?' do
5
5
 
6
6
  it 'should be false for cards with *accountable rule off' do
7
- Card['A'].accountable?.should == false
7
+ expect(Card['A'].accountable?).to eq(false)
8
8
  end
9
9
 
10
10
  it 'should be true for cards with *accountable rule on' do
@@ -12,7 +12,7 @@ describe Card::Set::All::Account do
12
12
  Card.create :name=>'A+*self+*accountable', :content=>'1'
13
13
  Card.create :name=>'*account+*right+*create', :content=>'[[Anyone Signed In]]'
14
14
  end
15
- Card['A'].accountable?.should == true
15
+ expect(Card['A'].accountable?).to eq(true)
16
16
  end
17
17
 
18
18
  end
@@ -21,12 +21,12 @@ describe Card::Set::All::Account do
21
21
 
22
22
  it "for Wagn Bot" do
23
23
  Card::Auth.current_id = Card::WagnBotID
24
- Card::Auth.current.parties.sort.should == [Card::WagnBotID, Card::AnyoneSignedInID, Card::AdministratorID]
24
+ expect(Card::Auth.current.parties.sort).to eq([Card::WagnBotID, Card::AnyoneSignedInID, Card::AdministratorID])
25
25
  end
26
26
 
27
27
  it "for Anonymous" do
28
28
  Card::Auth.current_id = Card::AnonymousID
29
- Card::Auth.current.parties.sort.should == [Card::AnonymousID]
29
+ expect(Card::Auth.current.parties.sort).to eq([Card::AnonymousID])
30
30
  end
31
31
 
32
32
  context 'for Joe User' do
@@ -36,7 +36,7 @@ describe Card::Set::All::Account do
36
36
  end
37
37
 
38
38
  it "should initially have only auth and self " do
39
- @parties.should == [Card::AnyoneSignedInID, @joe_user_card.id]
39
+ expect(@parties).to eq([Card::AnyoneSignedInID, @joe_user_card.id])
40
40
  end
41
41
 
42
42
  it 'should update when new roles are set' do
@@ -44,14 +44,14 @@ describe Card::Set::All::Account do
44
44
  r1 = Card['r1']
45
45
 
46
46
  Card::Auth.as_bot { roles_card.items = [ r1.id ] }
47
- Card['Joe User'].parties.should == @parties # local cache still has old parties (permission does not change mid-request)
47
+ expect(Card['Joe User'].parties).to eq(@parties) # local cache still has old parties (permission does not change mid-request)
48
48
 
49
49
  Wagn::Cache.restore # simulate new request -- clears local cache, where, eg, @parties would still be cached on card
50
50
  Card::Auth.current_id = Card::Auth.current_id # simulate new request -- current_id assignment clears several class variables
51
51
 
52
52
  new_parties = [ Card::AnyoneSignedInID, r1.id, @joe_user_card.id ]
53
- Card['Joe User'].parties.should == new_parties # @parties regenerated, now with correct values
54
- Card::Auth.current. parties.should == new_parties
53
+ expect(Card['Joe User'].parties).to eq(new_parties) # @parties regenerated, now with correct values
54
+ expect(Card::Auth.current. parties).to eq(new_parties)
55
55
 
56
56
  # @joe_user_card.refresh(force=true).parties.should == new_parties # should work, but now superfluous?
57
57
  end
@@ -61,7 +61,7 @@ describe Card::Set::All::Account do
61
61
 
62
62
  describe 'among?' do
63
63
  it 'should be true for self' do
64
- Card::Auth.current.among?([Card::Auth.current_id]).should be_true
64
+ expect(Card::Auth.current.among?([Card::Auth.current_id])).to be_truthy
65
65
  end
66
66
  end
67
67
 
@@ -78,8 +78,8 @@ describe Card::Set::All::Account do
78
78
  c = Card['Joe New']
79
79
  u = Card::Auth[ 'joe@new.com' ]
80
80
 
81
- c.should == u
82
- c.type_id.should == Card::UserID
81
+ expect(c).to eq(u)
82
+ expect(c.type_id).to eq(Card::UserID)
83
83
  =begin
84
84
  email = ActionMailer::Base.deliveries.last
85
85
  email.to.should == ['joe@new.com']
@@ -95,13 +95,13 @@ describe Card::Set::All::Account do
95
95
  end
96
96
  it "should handle email updates" do
97
97
  @card.update_attributes! '+*account'=>{ '+*email'=>'joe@user.co.uk' }
98
- @card.account.email.should == 'joe@user.co.uk'
98
+ expect(@card.account.email).to eq('joe@user.co.uk')
99
99
  end
100
100
 
101
101
  it "should let Wagn Bot block accounts" do
102
102
  Card::Auth.as_bot do
103
103
  @card.account.status_card.update_attributes! :content => 'blocked'
104
- @card.account.blocked?.should be_true
104
+ expect(@card.account.blocked?).to be_truthy
105
105
  end
106
106
  end
107
107
 
@@ -110,7 +110,7 @@ describe Card::Set::All::Account do
110
110
  expect do
111
111
  @card.account.status_card.update_attributes! :content => 'blocked'
112
112
  end.to raise_error
113
- @card.account.blocked?.should be_false
113
+ expect(@card.account.blocked?).to be_falsey
114
114
  end
115
115
  end
116
116
 
@@ -121,14 +121,14 @@ describe Card::Set::All::Account do
121
121
 
122
122
 
123
123
  it "*all+*read should apply to Joe User" do
124
- @read_rules.member?(Card.fetch('*all+*read').id).should be_true
124
+ expect(@read_rules.member?(Card.fetch('*all+*read').id)).to be_truthy
125
125
  end
126
126
 
127
127
  it "9 more should apply to Joe Admin" do
128
128
  # includes lots of account rules...
129
129
  Card::Auth.as(:joe_admin) do
130
130
  ids = Card::Auth.as_card.read_rules
131
- ids.length.should == @read_rules.size + 9
131
+ expect(ids.length).to eq(@read_rules.size + 9)
132
132
  end
133
133
  end
134
134
 
@@ -5,6 +5,6 @@ describe Card::Set::All::AllCss do
5
5
  content = '#box { display: block }'
6
6
  rendered = render_card :content, { :content=>content }, :format=>:css
7
7
  # rendered.should =~ /Style Card\:/
8
- rendered.should =~ /#{ Regexp.escape content }/
8
+ expect(rendered).to match(/#{ Regexp.escape content }/)
9
9
  end
10
10
  end
@@ -3,7 +3,7 @@
3
3
  describe Card::Set::All::AllCsv, "CSV mod" do
4
4
  context "csv_row view" do
5
5
  it "should handle inclusions" do
6
- render_card( :csv_row, { :content=>'{{A+B}} {{T}}' }, :format => :csv ).should == "AlphaBeta,Theta"
6
+ expect(render_card( :csv_row, { :content=>'{{A+B}} {{T}}' }, :format => :csv )).to eq("AlphaBeta,Theta")
7
7
  end
8
8
  end
9
9
  end
@@ -4,6 +4,6 @@ describe Card::Set::All::Attach do
4
4
  it 'should be triggered by image card creation' do
5
5
  file = File.new("#{ Wagn.gem_root }/test/fixtures/mao2.jpg")
6
6
  card = Card.create :name => "Bananamaster", :type=>'Image', :attach=>file
7
- card.attach.url.should =~ /^\/files\/Bananamaster-original-\d+/
7
+ expect(card.attach.url).to match(/^\/files\/Bananamaster-original-\d+/)
8
8
  end
9
9
  end
@@ -4,27 +4,27 @@ describe Card::Set::All::Base do
4
4
 
5
5
  describe 'handles view' do
6
6
 
7
- it("name" ) { render_card(:name).should == 'Tempo Rary' }
8
- it("key" ) { render_card(:key).should == 'tempo_rary' }
9
- it("linkname") { render_card(:linkname).should == 'Tempo_Rary' }
7
+ it("name" ) { expect(render_card(:name)).to eq('Tempo Rary') }
8
+ it("key" ) { expect(render_card(:key)).to eq('tempo_rary') }
9
+ it("linkname") { expect(render_card(:linkname)).to eq('Tempo_Rary') }
10
10
 
11
11
  it "url" do
12
12
  Card::Env[:protocol] = 'http://'
13
13
  Card::Env[:host] = 'eric.skippy.com'
14
- render_card(:url).should == 'http://eric.skippy.com/Tempo_Rary'
14
+ expect(render_card(:url)).to eq('http://eric.skippy.com/Tempo_Rary')
15
15
  end
16
16
 
17
17
  it :raw do
18
18
  @a = Card.new :content=>"{{A}}"
19
- @a.format._render(:raw).should == "{{A}}"
19
+ expect(@a.format._render(:raw)).to eq("{{A}}")
20
20
  end
21
21
 
22
22
  it "core" do
23
- render_card(:core, :name=>'A+B').should == "AlphaBeta"
23
+ expect(render_card(:core, :name=>'A+B')).to eq("AlphaBeta")
24
24
  end
25
25
 
26
26
  it 'core for new card' do
27
- Card.new.format._render_core.should == ''
27
+ expect(Card.new.format._render_core).to eq('')
28
28
  end
29
29
 
30
30
  describe 'array' do
@@ -33,7 +33,7 @@ describe Card::Set::All::Base do
33
33
  Card.create! :name => "n+b", :type=>"Phrase", :content=>"say:\"what\""
34
34
  Card.create! :name => "n+c", :type=>"Number", :content=>"30"
35
35
  c = Card.new :name => 'nplusarray', :content => "{{n+*children+by create|array}}"
36
- c.format._render( :core ).should == %{["10", "say:\\"what\\"", "30"]}
36
+ expect(c.format._render( :core )).to eq(%{["10", "say:\\"what\\"", "30"]})
37
37
  end
38
38
 
39
39
  it "of pointer items" do
@@ -42,11 +42,11 @@ describe Card::Set::All::Base do
42
42
  Card.create! :name => "n+c", :type=>"Number", :content=>"30"
43
43
  Card.create! :name => "npoint", :type=>"Pointer", :content => "[[n+a]]\n[[n+b]]\n[[n+c]]"
44
44
  c = Card.new :name => 'npointArray', :content => "{{npoint|array}}"
45
- c.format._render( :core ).should == %q{["10", "20", "30"]}
45
+ expect(c.format._render( :core )).to eq(%q{["10", "20", "30"]})
46
46
  end
47
47
 
48
48
  it "of basic items" do
49
- render_card(:array, :content=>'yoing').should==%{["yoing"]}
49
+ expect(render_card(:array, :content=>'yoing')).to eq(%{["yoing"]})
50
50
  end
51
51
  end
52
52
 
@@ -0,0 +1,15 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ describe Card::EmailHtmlFormat do
4
+ it "renders full urls" do
5
+ Card::Env[:protocol] = 'http://'
6
+ Card::Env[:host] = 'www.fake.com'
7
+ expect(render_content('[[B]]', :format=>'email_html')).to eq('<a class="known-card" href="http://www.fake.com/B">B</a>')
8
+ end
9
+
10
+ describe "raw view" do
11
+ it "renders missing included cards as blank" do
12
+ expect(render_content('{{strombooby}}', :format=>'email_html')).to eq('')
13
+ end
14
+ end
15
+ end
@@ -3,7 +3,7 @@
3
3
  describe Card::Set::All::EventViz do
4
4
  describe '#events' do
5
5
  it "should have at least twenty events" do
6
- Card['A'].events( :update ).split("\n").length.should > 20
6
+ expect(Card['A'].events( :update ).split("\n").length).to be > 20
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,83 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ describe Card do
4
+ before do
5
+ Timecop.travel(Wagn.future_stamp) # make sure we're ahead of all the test data
6
+ @just_s = [Card["Sara"].id]
7
+ @s_and_j= [Card["Sara"].id, Card["John"].id].sort
8
+ end
9
+ end
10
+
11
+
12
+ describe "Card::Set::All::Follow" do
13
+
14
+ def expect_user user_name
15
+ expect(Card.fetch(user_name).account)
16
+ end
17
+
18
+ def be_notified_of card_name
19
+ receive(:send_change_notice).with(kind_of(Card::Act), card_name)
20
+ end
21
+
22
+ context "when following cards" do
23
+ before do
24
+ Card::Auth.current_id = Card['john'].id
25
+ Timecop.travel(Wagn.future_stamp) # make sure we're ahead of all the test data
26
+ end
27
+
28
+ def expect_notice_for card_name
29
+ expect_any_instance_of(Card::Set::Right::Account).to receive(:send_change_notice).with(kind_of(Card::Act), card_name)
30
+ end
31
+
32
+ it "sends notifications of edits" do
33
+ expect_user("Sara").to be_notified_of "Sara Following"
34
+ Card::Auth.current_id = Card['john'].id
35
+ Card["Sara Following"].update_attributes :content => "A new change"
36
+ end
37
+
38
+ it "does not send notification to author of change" do
39
+ expect_user("John").not_to receive(:send_change_notice)
40
+ Card["All Eyes On Me"].update_attributes :content => "edit by John"
41
+ end
42
+ end
43
+
44
+ context "when following cardtypes" do
45
+ before do
46
+ Card::Auth.current_id = Card['joe admin'].id
47
+ end
48
+ it "sends notifications of additions" do
49
+ new_card = Card.new :name => "Microscope", :type => "Optic"
50
+ expect_user("Sara").to be_notified_of "Optic"
51
+ new_card.save!
52
+ end
53
+
54
+ it "sends notification of updates" do
55
+ expect_user("Sara").to be_notified_of "Optic"
56
+ Card["Sunglasses"].update_attributes :content => 'updated content'
57
+ end
58
+
59
+ it "sends only one notification per user" do
60
+ expect_user("Sara").to receive(:send_change_notice).exactly(1)
61
+ Card["Google glass"].update_attributes :content => 'updated content'
62
+ end
63
+ end
64
+
65
+
66
+ context "when following trunk" do
67
+ before do
68
+ Timecop.travel(Wagn.future_stamp) # make sure we're ahead of all the test data
69
+ Card::Auth.current_id = Card['joe user'].id
70
+ Card.create :type=>'Book', :name=>'Ulysses'
71
+ expect(Card['Ulysses']).to be
72
+ Card.create :name=> 'joe camel+*following', :content=>'[[Ulysses]]'
73
+ Card.create :name=> 'joe admin+*following', :content=>'[[Book]]'
74
+ end
75
+
76
+ it "sends notification to Joe Camel" do
77
+ name = "Ulysses+author"
78
+ expect_user("joe admin").to be_notified_of "Book"
79
+ expect_user("joe camel").to be_notified_of "Ulysses"
80
+ Card.create :name=>name, :content => "James Joyce"
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,161 @@
1
+ # -*- encoding : utf-8 -*-
2
+ describe Card::Set::All::History do
3
+ context "history view" do
4
+ # before do
5
+ # Card.create! :name=>"my histoer card"
6
+ # end
7
+ it 'should have a frame' do
8
+ history = render_card :history, :name=>"A"
9
+ assert_view_select history, 'div[class~="card-frame"]'
10
+ end
11
+ end
12
+
13
+
14
+ describe '#create_act_and_action' do
15
+ let!(:act_start_cnt) {Card::Act.count}
16
+ let(:content) {"Nobody expects the Spanish inquisition"}
17
+ let(:act) {@card.acts.last}
18
+ let(:action) {act.actions.last}
19
+
20
+ context 'for single card' do
21
+ before do
22
+ @card = Card::Auth.as_bot do
23
+ Card.create :name=>"single card", :content=>content
24
+ end
25
+ end
26
+
27
+ context 'when created' do
28
+ it 'adds new act' do
29
+ expect(Card::Act.count).to eq(act_start_cnt+1)
30
+ expect(act.card_id).to eq(@card.id)
31
+ end
32
+ it 'adds create action' do
33
+ expect(action.action_type).to eq(:create)
34
+ end
35
+ end
36
+
37
+ context 'when updated' do
38
+ it 'adds no act if nothing changed' do
39
+ @card.update_attributes :name=>"single card", :content=>content
40
+ expect(Card::Act.count).to eq(act_start_cnt+1)
41
+ end
42
+ it 'adds new act' do
43
+ @card.update_attributes :content=>"new content"
44
+ expect(Card::Act.count).to eq(act_start_cnt+2)
45
+ end
46
+ end
47
+
48
+ context 'when deleted' do
49
+ before do
50
+ Card::Auth.as_bot do
51
+ @card.delete
52
+ end
53
+ end
54
+ it 'adds act' do
55
+ expect(Card::Act.count).to eq(act_start_cnt+2)
56
+ end
57
+ it 'adds delete action' do
58
+ expect(action.action_type).to eq(:delete)
59
+ end
60
+ it 'adds trash change' do
61
+ expect(action.changes.last.field).to eq('trash')
62
+ expect(action.changes.last.value).to eq('1')
63
+ end
64
+ end
65
+ end
66
+
67
+ context 'for subcard' do
68
+ before do
69
+ Card::Auth.as_bot do
70
+ @card = Card.create :name=>"left", :subcards=>{"+right" =>{ :content=>content}}
71
+ @left_action = act.actions[0]
72
+ @right_action = act.actions[2]
73
+ @plus_action = act.actions[1]
74
+ end
75
+ end
76
+
77
+ context 'when created' do
78
+ it 'adds only a act for left card' do
79
+ expect(Card::Act.count).to eq(act_start_cnt+1)
80
+ expect(act.card).to eq(@card)
81
+ end
82
+
83
+ it 'adds three actions' do
84
+ expect(act.actions.size).to eq(3)
85
+ end
86
+ it 'adds action for left part of type create' do
87
+ expect(@left_action.card.name).to eq("left")
88
+ expect(@left_action.action_type).to eq(:create)
89
+ end
90
+ it 'adds action for right part of type create' do
91
+ expect(@right_action.card.name).to eq("right")
92
+ expect(@right_action.action_type).to eq(:create)
93
+ end
94
+ it 'adds action for plus card of type create' do
95
+ expect(@plus_action.card.name).to eq("left+right")
96
+ expect(@plus_action.action_type).to eq(:create)
97
+ end
98
+ it 'adds content change' do
99
+ expect(@plus_action.changes.find_by_field(:db_content).value).to eq(content)
100
+ end
101
+ it 'adds superaction for plus card' do
102
+ expect(@plus_action.super_action_id).to eq(@left_action.id)
103
+ end
104
+ end
105
+
106
+ context 'when updated' do
107
+ it 'adds act for left card' do
108
+ @card.update_attributes :subcards=>{"+right"=>{:content=>"New content", :db_content=>"New Content"}}
109
+ expect(Card::Act.count).to eq(act_start_cnt+2)
110
+ expect(act.card).to eq(@card)
111
+ end
112
+ it 'adds action for subcard' do
113
+ @card.update_attributes :subcards=>{"+right"=>{:content=>"New content", :content=>"New Content"}}
114
+ act = @card.acts.last
115
+ expect(act.actions.count).to eq(1)
116
+ expect(act.actions.last.action_type).to eq(:update)
117
+ expect(act.actions.last.card.name).to eq("left+right")
118
+ end
119
+ end
120
+ end
121
+
122
+ context 'for plus card' do
123
+ before do
124
+ Card::Auth.as_bot do
125
+ @card = Card.create :name=>'left+right', :content=>content
126
+ @left_action = act.actions[1]
127
+ @plus_action = act.actions[0]
128
+ @right_action = act.actions[2]
129
+ end
130
+ end
131
+
132
+ context 'adds' do
133
+ it 'only a act for plus card' do
134
+ expect(Card::Act.count).to eq(act_start_cnt+1)
135
+ expect(act.card_id).to eq(@card.id)
136
+ end
137
+ it 'three actions' do
138
+ expect(act.actions.size).to eq(3)
139
+ end
140
+ it 'action for left part of type create' do
141
+ expect(@left_action.card.name).to eq("left")
142
+ expect(@left_action.action_type).to eq(:create)
143
+ end
144
+ it 'superaction for left part' do
145
+ expect(@left_action.super_action_id).to eq(@plus_action.id)
146
+ end
147
+ it 'action for right part of type create' do
148
+ expect(@right_action.card.name).to eq("right")
149
+ expect(@right_action.action_type).to eq(:create)
150
+ end
151
+ it 'action for plus card of type create' do
152
+ expect(@plus_action.card.name).to eq("left+right")
153
+ expect(@plus_action.action_type).to eq(:create)
154
+ end
155
+ it 'content change' do
156
+ expect(@plus_action.changes.find_by_field(:db_content).value).to eq(content)
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end