zen 0.2.8 → 0.3b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. data/.gems +20 -0
  2. data/.mailmap +3 -2
  3. data/.rvmrc +1 -1
  4. data/.travis.yml +13 -2
  5. data/.yardopts +13 -0
  6. data/AUTHORS +1 -1
  7. data/README.md +115 -77
  8. data/Rakefile +6 -7
  9. data/bin/zen +12 -5
  10. data/guide/_static/categories/categories.png +0 -0
  11. data/guide/_static/categories/category_groups.png +0 -0
  12. data/guide/_static/categories/new_category.png +0 -0
  13. data/guide/_static/categories/new_category_group.png +0 -0
  14. data/guide/_static/comments/comments.png +0 -0
  15. data/guide/_static/comments/edit_comment.png +0 -0
  16. data/guide/_static/custom_fields/custom_field_groups.png +0 -0
  17. data/guide/_static/custom_fields/custom_field_types.png +0 -0
  18. data/guide/_static/custom_fields/custom_fields.png +0 -0
  19. data/guide/_static/custom_fields/edit_custom_field_general.png +0 -0
  20. data/guide/_static/custom_fields/edit_custom_field_group.png +0 -0
  21. data/guide/_static/custom_fields/edit_custom_field_settings.png +0 -0
  22. data/guide/_static/custom_fields/edit_custom_field_type.png +0 -0
  23. data/guide/_static/menus/edit_menu.png +0 -0
  24. data/guide/_static/menus/edit_menu_item.png +0 -0
  25. data/guide/_static/menus/menu_items.png +0 -0
  26. data/guide/_static/menus/menus.png +0 -0
  27. data/guide/_static/sections/edit_entry.png +0 -0
  28. data/guide/_static/sections/edit_entry_categories.png +0 -0
  29. data/guide/_static/sections/edit_entry_general.png +0 -0
  30. data/guide/_static/sections/edit_entry_meta.png +0 -0
  31. data/guide/_static/sections/edit_section_comments.png +0 -0
  32. data/guide/_static/sections/edit_section_general.png +0 -0
  33. data/guide/_static/sections/edit_section_groups.png +0 -0
  34. data/guide/_static/sections/entries.png +0 -0
  35. data/guide/_static/sections/sections.png +0 -0
  36. data/guide/_static/settings/overview_general.png +0 -0
  37. data/guide/_static/settings/overview_security.png +0 -0
  38. data/guide/_static/settings/overview_user.png +0 -0
  39. data/guide/_static/users/edit_user.png +0 -0
  40. data/guide/_static/users/edit_user_group.png +0 -0
  41. data/guide/_static/users/edit_user_group_permissions.png +0 -0
  42. data/guide/_static/users/edit_user_permissions.png +0 -0
  43. data/guide/_static/users/overview.png +0 -0
  44. data/guide/_static/users/user_groups_overview.png +0 -0
  45. data/guide/asset_management.md +117 -0
  46. data/{CHANGELOG.md → guide/changelog.md} +42 -0
  47. data/guide/css/common.css +20 -0
  48. data/guide/getting_started.md +61 -0
  49. data/guide/hacking.md +52 -0
  50. data/guide/installation.md +44 -0
  51. data/guide/javascript.md +352 -0
  52. data/lib/vendor/sequel_sluggable.rb +137 -0
  53. data/lib/yard/tags.rb +13 -0
  54. data/lib/zen.rb +148 -78
  55. data/lib/zen/asset_groups.rb +85 -0
  56. data/lib/zen/bin/create.rb +267 -56
  57. data/lib/zen/bin/default.rb +84 -0
  58. data/lib/zen/controller/admin_controller.rb +1 -82
  59. data/lib/zen/controller/base_controller.rb +9 -5
  60. data/lib/zen/controller/frontend_controller.rb +0 -1
  61. data/lib/zen/controller/main_controller.rb +30 -42
  62. data/lib/zen/controller/preview.rb +9 -8
  63. data/lib/zen/controller/translations.rb +49 -0
  64. data/lib/zen/error.rb +17 -0
  65. data/lib/zen/event.rb +118 -0
  66. data/lib/zen/helper/asset.rb +63 -0
  67. data/lib/zen/helper/breadcrumb.rb +1 -4
  68. data/lib/zen/helper/controller.rb +73 -0
  69. data/lib/zen/helper/locale.rb +42 -0
  70. data/lib/zen/helper/message.rb +0 -3
  71. data/lib/zen/helper/search.rb +54 -0
  72. data/lib/zen/helper/stacked_aspect.rb +249 -0
  73. data/lib/zen/helper/theme.rb +3 -10
  74. data/lib/zen/language.rb +356 -181
  75. data/lib/zen/language/en/zen_general.rb +52 -0
  76. data/lib/zen/language/en/zen_models.rb +19 -0
  77. data/lib/zen/language/nl/zen_general.rb +57 -0
  78. data/lib/zen/language/nl/zen_models.rb +22 -0
  79. data/lib/zen/language/translation.rb +132 -0
  80. data/lib/zen/languages.rb +9 -0
  81. data/lib/zen/layout/admin.xhtml +3 -3
  82. data/lib/zen/layout/login.xhtml +1 -1
  83. data/lib/zen/markup.rb +189 -0
  84. data/lib/zen/model/helper.rb +65 -0
  85. data/lib/zen/model/init.rb +62 -0
  86. data/lib/zen/model/methods.rb +6 -7
  87. data/lib/zen/package.rb +312 -201
  88. data/lib/zen/package/all.rb +4 -3
  89. data/lib/zen/package/categories/lib/categories.rb +29 -41
  90. data/lib/zen/package/categories/lib/categories/controller/categories.rb +185 -130
  91. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +172 -102
  92. data/lib/zen/package/categories/lib/categories/helper/category.rb +4 -9
  93. data/lib/zen/package/categories/lib/categories/helper/category_frontend.rb +86 -0
  94. data/lib/zen/package/categories/lib/categories/language/en/categories.rb +40 -0
  95. data/lib/zen/package/categories/lib/categories/language/en/category_groups.rb +39 -0
  96. data/lib/zen/package/categories/lib/categories/language/nl/categories.rb +42 -0
  97. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.rb +42 -0
  98. data/lib/zen/package/categories/lib/categories/model/category.rb +21 -25
  99. data/lib/zen/package/categories/lib/categories/model/category_group.rb +21 -15
  100. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +25 -26
  101. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +24 -24
  102. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +18 -20
  103. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +21 -18
  104. data/lib/zen/package/comments/lib/comments.rb +30 -50
  105. data/lib/zen/package/comments/lib/comments/anti_spam.rb +138 -0
  106. data/lib/zen/package/comments/lib/comments/controller/comments.rb +159 -92
  107. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +122 -34
  108. data/lib/zen/package/comments/lib/comments/helper/comment.rb +0 -3
  109. data/lib/zen/package/comments/lib/comments/helper/comment_frontend.rb +90 -0
  110. data/lib/zen/package/comments/lib/comments/language/en/comments.rb +57 -0
  111. data/lib/zen/package/comments/lib/comments/language/nl/comments.rb +61 -0
  112. data/lib/zen/package/comments/lib/comments/model/comment.rb +147 -49
  113. data/lib/zen/package/comments/lib/comments/model/comment_status.rb +0 -2
  114. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +37 -40
  115. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +23 -42
  116. data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +12 -4
  117. data/lib/zen/package/comments/migrations/1313851786_remove_defensio_signature.rb +11 -0
  118. data/lib/zen/package/custom_fields/lib/custom_fields.rb +40 -43
  119. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +72 -17
  120. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +154 -118
  121. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +147 -90
  122. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +161 -131
  123. data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +4 -9
  124. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +42 -0
  125. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.rb +51 -0
  126. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.rb +60 -0
  127. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.rb +41 -0
  128. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.rb +49 -0
  129. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.rb +61 -0
  130. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +18 -23
  131. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +20 -19
  132. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +1 -3
  133. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +19 -9
  134. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +18 -15
  135. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +18 -18
  136. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +30 -24
  137. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +15 -10
  138. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +24 -19
  139. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +18 -13
  140. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +30 -20
  141. data/lib/zen/package/extensions/lib/extensions.rb +20 -0
  142. data/lib/zen/package/extensions/lib/extensions/controller/extensions.rb +41 -0
  143. data/lib/zen/package/extensions/lib/extensions/language/en/extensions.rb +23 -0
  144. data/lib/zen/package/extensions/lib/extensions/language/nl/extensions.rb +25 -0
  145. data/lib/zen/package/extensions/lib/extensions/view/admin/extensions/index.xhtml +86 -0
  146. data/lib/zen/package/menu.rb +109 -0
  147. data/lib/zen/package/menus/lib/menus.rb +25 -34
  148. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +143 -107
  149. data/lib/zen/package/menus/lib/menus/controller/menus.rb +166 -115
  150. data/lib/zen/package/menus/lib/menus/helper/menu.rb +2 -8
  151. data/lib/zen/package/menus/lib/menus/helper/menu_frontend.rb +114 -0
  152. data/lib/zen/package/menus/lib/menus/language/en/menu_items.rb +48 -0
  153. data/lib/zen/package/menus/lib/menus/language/en/menus.rb +48 -0
  154. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.rb +48 -0
  155. data/lib/zen/package/menus/lib/menus/language/nl/menus.rb +50 -0
  156. data/lib/zen/package/menus/lib/menus/model/menu.rb +24 -17
  157. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +37 -13
  158. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +32 -25
  159. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +23 -17
  160. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +31 -26
  161. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +20 -22
  162. data/lib/zen/package/sections/lib/sections.rb +25 -68
  163. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +178 -138
  164. data/lib/zen/package/sections/lib/sections/controller/sections.rb +173 -140
  165. data/lib/zen/package/sections/lib/sections/helper/section.rb +3 -6
  166. data/lib/zen/package/sections/lib/sections/helper/section_frontend.rb +146 -0
  167. data/lib/zen/package/sections/lib/sections/language/en/section_entries.rb +50 -0
  168. data/lib/zen/package/sections/lib/sections/language/en/sections.rb +55 -0
  169. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.rb +50 -0
  170. data/lib/zen/package/sections/lib/sections/language/nl/sections.rb +55 -0
  171. data/lib/zen/package/sections/lib/sections/model/section.rb +36 -36
  172. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +52 -59
  173. data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +2 -2
  174. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +24 -21
  175. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +24 -26
  176. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +33 -31
  177. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +24 -25
  178. data/lib/zen/package/sections/migrations/1308672298_use_id_for_default_section.rb +14 -10
  179. data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +12 -6
  180. data/lib/zen/package/settings/lib/settings.rb +25 -120
  181. data/lib/zen/package/settings/lib/settings/blue_form_parameters.rb +157 -0
  182. data/lib/zen/package/settings/lib/settings/controller/settings.rb +94 -69
  183. data/lib/zen/package/settings/lib/settings/language/en/settings.rb +41 -0
  184. data/lib/zen/package/settings/lib/settings/language/nl/settings.rb +41 -0
  185. data/lib/zen/package/settings/lib/settings/model/setting.rb +0 -2
  186. data/lib/zen/package/settings/lib/settings/setting.rb +379 -0
  187. data/lib/zen/package/settings/lib/settings/setting_groups.rb +11 -0
  188. data/lib/zen/package/settings/lib/settings/settings.rb +83 -0
  189. data/lib/zen/package/settings/lib/settings/settings_group.rb +84 -0
  190. data/lib/zen/package/settings/lib/settings/singleton_methods.rb +35 -0
  191. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +15 -57
  192. data/lib/zen/package/settings/migrations/1321197919_remove_unused_columns.rb +17 -0
  193. data/lib/zen/package/users/lib/users.rb +51 -36
  194. data/lib/zen/package/users/lib/users/controller/user_groups.rb +133 -98
  195. data/lib/zen/package/users/lib/users/controller/users.rb +253 -136
  196. data/lib/zen/package/users/lib/users/helper/access.rb +102 -0
  197. data/lib/zen/package/users/lib/users/helper/acl.rb +113 -0
  198. data/lib/zen/package/users/lib/users/helper/users.rb +41 -24
  199. data/lib/zen/package/users/lib/users/language/en/permissions.rb +16 -0
  200. data/lib/zen/package/users/lib/users/language/en/user_groups.rb +39 -0
  201. data/lib/zen/package/users/lib/users/language/en/users.rb +73 -0
  202. data/lib/zen/package/users/lib/users/language/nl/permissions.rb +16 -0
  203. data/lib/zen/package/users/lib/users/language/nl/user_groups.rb +41 -0
  204. data/lib/zen/package/users/lib/users/language/nl/users.rb +74 -0
  205. data/lib/zen/package/users/lib/users/model/permission.rb +28 -0
  206. data/lib/zen/package/users/lib/users/model/user.rb +104 -65
  207. data/lib/zen/package/users/lib/users/model/user_group.rb +28 -24
  208. data/lib/zen/package/users/lib/users/model/user_status.rb +27 -0
  209. data/lib/zen/package/users/lib/users/public/admin/css/users/permissions.css +22 -0
  210. data/lib/zen/package/users/lib/users/public/admin/js/users/permissions.js +33 -0
  211. data/lib/zen/package/users/lib/users/settings.rb +19 -0
  212. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +58 -28
  213. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +19 -15
  214. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +93 -62
  215. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +23 -36
  216. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +13 -6
  217. data/lib/zen/package/users/lib/users/view/admin/users/permissions.xhtml +33 -0
  218. data/lib/zen/package/users/lib/users/view/admin/users/register.xhtml +52 -0
  219. data/lib/zen/package/users/migrations/1313786058_update_default_date.rb +41 -0
  220. data/lib/zen/package/users/migrations/1316432327_permissions.rb +36 -0
  221. data/lib/zen/package/users/migrations/1320272365_status_ids.rb +67 -0
  222. data/lib/zen/public/admin/css/zen/buttons.css +3 -11
  223. data/lib/zen/public/admin/css/zen/datepicker.css +23 -13
  224. data/lib/zen/public/admin/css/zen/editor.css +6 -14
  225. data/lib/zen/public/admin/css/zen/forms.css +19 -12
  226. data/lib/zen/public/admin/css/zen/general.css +22 -18
  227. data/lib/zen/public/admin/css/zen/grid.css +1 -20
  228. data/lib/zen/public/admin/css/zen/layout.css +26 -11
  229. data/lib/zen/public/admin/css/zen/messages.css +3 -10
  230. data/lib/zen/public/admin/css/zen/reset.css +13 -15
  231. data/lib/zen/public/admin/css/zen/tables.css +8 -10
  232. data/lib/zen/public/admin/css/zen/tabs.css +2 -10
  233. data/lib/zen/public/admin/css/zen/window.css +2 -8
  234. data/lib/zen/public/admin/js/vendor/datepicker.js +540 -240
  235. data/lib/zen/public/admin/js/vendor/mootools/core.js +273 -283
  236. data/lib/zen/public/admin/js/vendor/mootools/more.js +131 -136
  237. data/lib/zen/public/admin/js/zen/index.js +8 -14
  238. data/lib/zen/public/admin/js/zen/lib/editor.js +36 -33
  239. data/lib/zen/public/admin/js/zen/lib/editor/markdown.js +0 -6
  240. data/lib/zen/public/admin/js/zen/lib/editor/textile.js +0 -6
  241. data/lib/zen/public/admin/js/zen/lib/html_table.js +0 -5
  242. data/lib/zen/public/admin/js/zen/lib/tabs.js +22 -79
  243. data/lib/zen/public/admin/js/zen/lib/window.js +12 -22
  244. data/lib/zen/spec/bacon/color_output.rb +1 -1
  245. data/lib/zen/spec/helper.rb +6 -11
  246. data/lib/zen/spec/simplecov.rb +3 -3
  247. data/lib/zen/task.rb +0 -1
  248. data/lib/zen/task/build.rake +46 -26
  249. data/lib/zen/task/clean.rake +14 -7
  250. data/lib/zen/task/db.rake +31 -29
  251. data/lib/zen/task/package.rake +19 -23
  252. data/lib/zen/task/proto.rake +3 -5
  253. data/lib/zen/task/setup.rake +4 -0
  254. data/lib/zen/task/test.rake +31 -6
  255. data/lib/zen/task/theme.rake +13 -19
  256. data/lib/zen/theme.rb +377 -52
  257. data/lib/zen/validation.rb +22 -30
  258. data/lib/zen/version.rb +1 -2
  259. data/lib/zen/view/bottom.xhtml +9 -1
  260. data/lib/zen/view/head.xhtml +1 -1
  261. data/lib/zen/view/main.xhtml +1 -1
  262. data/lib/zen/view/search.xhtml +9 -0
  263. data/proto/app/Rakefile +0 -1
  264. data/proto/app/app.rb +21 -16
  265. data/proto/app/config/config.rb.erb +41 -0
  266. data/proto/app/config/{database.rb → database.rb.erb} +17 -14
  267. data/proto/app/config/middlewares.rb +1 -1
  268. data/proto/app/theme/default/index.xhtml +25 -0
  269. data/proto/app/theme/theme.rb +19 -0
  270. data/proto/app/{log/database/dev → tmp}/.gitkeep +0 -0
  271. data/proto/migration.rb +3 -5
  272. data/proto/rack/thin.yml +41 -0
  273. data/proto/rack/unicorn.rb +38 -0
  274. data/spec/Rakefile +15 -11
  275. data/spec/fixtures/zen/helper/controller.rb +13 -0
  276. data/spec/fixtures/zen/helper/locale.rb +7 -0
  277. data/spec/fixtures/zen/helper/message.rb +0 -4
  278. data/spec/fixtures/zen/language.rb +31 -0
  279. data/spec/fixtures/zen/language/en/spec.rb +11 -0
  280. data/spec/fixtures/zen/language/nl/spec.rb +11 -0
  281. data/spec/fixtures/zen/package.rb +0 -10
  282. data/spec/fixtures/zen/package/categories/helper/category_frontend.rb +16 -0
  283. data/spec/fixtures/zen/package/comments/helper/comment_frontend.rb +16 -0
  284. data/spec/fixtures/zen/package/sections/helper/section_frontend.rb +16 -0
  285. data/spec/fixtures/zen/package/settings/controller/settings.rb +17 -0
  286. data/spec/fixtures/zen/package/users/helper/access.rb +18 -0
  287. data/spec/fixtures/zen/package/users/helper/acl.rb +23 -0
  288. data/spec/fixtures/zen/theme/{default-section → default}/index.xhtml +0 -0
  289. data/spec/helper.rb +12 -27
  290. data/{proto/app/log/database/live → spec/public}/.gitkeep +0 -0
  291. data/spec/zen/controller/admin_controller.rb +5 -6
  292. data/spec/zen/controller/main_controller.rb +29 -35
  293. data/spec/zen/controller/preview.rb +9 -10
  294. data/spec/zen/event.rb +44 -0
  295. data/spec/zen/helper/breadcrumb.rb +4 -5
  296. data/spec/zen/helper/controller.rb +21 -0
  297. data/spec/zen/helper/locale.rb +25 -0
  298. data/spec/zen/helper/message.rb +4 -11
  299. data/spec/zen/helper/theme.rb +11 -14
  300. data/spec/zen/language.rb +48 -22
  301. data/spec/zen/markup.rb +39 -0
  302. data/spec/zen/package.rb +48 -11
  303. data/spec/zen/package/categories/controller/categories.rb +99 -45
  304. data/spec/zen/package/categories/controller/category_groups.rb +109 -33
  305. data/spec/zen/package/categories/helper/category.rb +19 -32
  306. data/spec/zen/package/categories/helper/category_frontend.rb +61 -0
  307. data/spec/zen/package/comments/anti_spam.rb +50 -0
  308. data/spec/zen/package/comments/controller/comments.rb +121 -61
  309. data/spec/zen/package/comments/controller/comments_form.rb +120 -94
  310. data/spec/zen/package/comments/helper/comment.rb +13 -13
  311. data/spec/zen/package/comments/helper/comment_frontend.rb +92 -0
  312. data/spec/zen/package/custom_fields/blue_form_parameters.rb +50 -50
  313. data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +135 -43
  314. data/spec/zen/package/custom_fields/controller/custom_field_types.rb +153 -48
  315. data/spec/zen/package/custom_fields/controller/custom_fields.rb +130 -51
  316. data/spec/zen/package/custom_fields/helper/custom_field.rb +8 -8
  317. data/spec/zen/package/extensions/controller/extensions.rb +38 -0
  318. data/spec/zen/package/menus/controller/menu_items.rb +121 -42
  319. data/spec/zen/package/menus/controller/menus.rb +125 -38
  320. data/spec/zen/package/menus/helper/menu.rb +26 -26
  321. data/spec/zen/package/menus/helper/menu_frontend.rb +104 -0
  322. data/spec/zen/package/sections/controller/section_entries.rb +145 -89
  323. data/spec/zen/package/sections/controller/sections.rb +130 -35
  324. data/spec/zen/package/sections/helper/section.rb +27 -38
  325. data/spec/zen/package/sections/helper/section_frontend.rb +160 -0
  326. data/spec/zen/package/settings/controller/settings.rb +73 -8
  327. data/spec/zen/package/settings/settings.rb +119 -0
  328. data/spec/zen/package/users/controller/user_groups.rb +134 -34
  329. data/spec/zen/package/users/controller/users.rb +189 -44
  330. data/spec/zen/package/users/helper/access.rb +29 -0
  331. data/spec/zen/package/users/helper/acl.rb +46 -0
  332. data/spec/zen/package/users/helper/users.rb +20 -64
  333. data/spec/zen/theme.rb +7 -9
  334. data/spec/zen/validation.rb +1 -2
  335. data/zen.gemspec +25 -22
  336. metadata +303 -222
  337. data/lib/zen/asset.rb +0 -292
  338. data/lib/zen/bin/runner.rb +0 -118
  339. data/lib/zen/error/language_error.rb +0 -10
  340. data/lib/zen/error/package_error.rb +0 -10
  341. data/lib/zen/error/plugin_error.rb +0 -10
  342. data/lib/zen/error/theme_error.rb +0 -10
  343. data/lib/zen/error/validation_error.rb +0 -10
  344. data/lib/zen/helper/acl.rb +0 -182
  345. data/lib/zen/helper/blue_form_vendor.rb +0 -689
  346. data/lib/zen/language/en/zen_general.yml +0 -25
  347. data/lib/zen/language/en/zen_models.yml +0 -13
  348. data/lib/zen/language/nl/zen_general.yml +0 -25
  349. data/lib/zen/language/nl/zen_models.yml +0 -13
  350. data/lib/zen/model/settings.rb +0 -78
  351. data/lib/zen/package/base.rb +0 -62
  352. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +0 -36
  353. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +0 -34
  354. data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +0 -40
  355. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +0 -34
  356. data/lib/zen/package/categories/lib/categories/plugin/categories.rb +0 -141
  357. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +0 -48
  358. data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +0 -50
  359. data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +0 -156
  360. data/lib/zen/package/comments/lib/comments/plugin/comments.rb +0 -115
  361. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +0 -33
  362. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.yml +0 -40
  363. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +0 -54
  364. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +0 -33
  365. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.yml +0 -40
  366. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +0 -54
  367. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +0 -41
  368. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +0 -40
  369. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +0 -41
  370. data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +0 -40
  371. data/lib/zen/package/menus/lib/menus/plugin/menus.rb +0 -152
  372. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +0 -44
  373. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -48
  374. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +0 -44
  375. data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +0 -48
  376. data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +0 -244
  377. data/lib/zen/package/sections/lib/sections/plugin/sections.rb +0 -87
  378. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +0 -36
  379. data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +0 -37
  380. data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +0 -39
  381. data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +0 -133
  382. data/lib/zen/package/settings/lib/settings/plugin/settings.rb +0 -251
  383. data/lib/zen/package/users/lib/users/controller/access_rules.rb +0 -284
  384. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +0 -38
  385. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +0 -32
  386. data/lib/zen/package/users/lib/users/language/en/users.yml +0 -57
  387. data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +0 -38
  388. data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +0 -32
  389. data/lib/zen/package/users/lib/users/language/nl/users.yml +0 -57
  390. data/lib/zen/package/users/lib/users/model/access_rule.rb +0 -42
  391. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +0 -65
  392. data/lib/zen/package/users/lib/users/public/admin/js/users/lib/access_rules.js +0 -49
  393. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +0 -120
  394. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +0 -102
  395. data/lib/zen/plugin.rb +0 -182
  396. data/lib/zen/plugin/base.rb +0 -46
  397. data/lib/zen/plugin/helper.rb +0 -47
  398. data/lib/zen/plugin/markup/lib/markup.rb +0 -14
  399. data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +0 -6
  400. data/lib/zen/plugin/markup/lib/markup/markup.rb +0 -165
  401. data/lib/zen/public/admin/js/zen/lib/asset.js +0 -111
  402. data/lib/zen/task/plugin.rake +0 -18
  403. data/lib/zen/theme/base.rb +0 -65
  404. data/proto/app/config/config.rb +0 -18
  405. data/spec/fixtures/zen/language/en/spec.yml +0 -10
  406. data/spec/fixtures/zen/language/nl/spec.yml +0 -7
  407. data/spec/fixtures/zen/package/settings/plugin/settings.rb +0 -20
  408. data/spec/zen/asset.rb +0 -97
  409. data/spec/zen/bin/create.rb +0 -89
  410. data/spec/zen/bin/runner.rb +0 -47
  411. data/spec/zen/helper/acl.rb +0 -149
  412. data/spec/zen/package/categories/plugin/categories.rb +0 -92
  413. data/spec/zen/package/comments/plugin/anti_spam.rb +0 -59
  414. data/spec/zen/package/comments/plugin/comments.rb +0 -107
  415. data/spec/zen/package/menus/plugin/menus.rb +0 -120
  416. data/spec/zen/package/sections/plugin/section_entries.rb +0 -161
  417. data/spec/zen/package/sections/plugin/sections.rb +0 -75
  418. data/spec/zen/package/settings/plugin/settings.rb +0 -33
  419. data/spec/zen/package/users/controller/access_rules.rb +0 -90
  420. data/spec/zen/plugin.rb +0 -64
  421. data/spec/zen/plugin/helper.rb +0 -11
  422. data/spec/zen/plugin/markup.rb +0 -44
@@ -0,0 +1,61 @@
1
+ require File.expand_path('../../../../../helper', __FILE__)
2
+ require File.join(Zen::FIXTURES, 'package/categories/helper/category_frontend')
3
+
4
+ describe('Ramaze::Helper::CategoryFrontend') do
5
+ behaves_like :capybara
6
+
7
+ extend Ramaze::Helper::CategoryFrontend
8
+
9
+ category_group = ::Categories::Model::CategoryGroup.create(
10
+ :name => 'Spec group'
11
+ )
12
+
13
+ category1 = ::Categories::Model::Category.create(
14
+ :name => 'Spec category',
15
+ :category_group_id => category_group.id
16
+ )
17
+
18
+ category2 = ::Categories::Model::Category.create(
19
+ :name => 'Spec category 2',
20
+ :category_group_id => category_group.id
21
+ )
22
+
23
+ it('Retrieve categories for a group ID') do
24
+ categories = get_categories(category_group.id).all
25
+
26
+ categories.length.should == 2
27
+ categories[0].name.should == category1.name
28
+ end
29
+
30
+ it('Retrieve categories for a group slug') do
31
+ categories = get_categories(category_group.name).all
32
+
33
+ categories.length.should == 2
34
+ categories[0].name.should == category1.name
35
+ end
36
+
37
+ it('Limit the amount of results') do
38
+ categories = get_categories(category_group.id, :limit => 1).all
39
+
40
+ categories.length.should == 1
41
+ categories[0].name.should == category1.name
42
+ end
43
+
44
+ it('Retrieve and paginate two categories') do
45
+ visit('/spec-category-frontend')
46
+
47
+ page.has_selector?('p').should == true
48
+ page.find('p:first-child').text.should == category1.name
49
+ page.has_selector?('.pager').should == true
50
+
51
+ visit('/spec-category-frontend?page=2')
52
+
53
+ page.has_selector?('p').should == true
54
+ page.find('p:first-child').text.should == category2.name
55
+ page.has_selector?('.pager').should == true
56
+ end
57
+
58
+ category1.destroy
59
+ category2.destroy
60
+ category_group.destroy
61
+ end
@@ -0,0 +1,50 @@
1
+ require File.expand_path('../../../../helper', __FILE__)
2
+
3
+ describe('Comments::AntiSpam') do
4
+ behaves_like :capybara
5
+
6
+ spam_comment = 'Hello, you can buy viagra here ' \
7
+ '<a href="http://buyviagra.com/">Buy Viagra</a>'
8
+
9
+ yaml_response = <<-YAML.strip
10
+ defensio-result:
11
+ api-version: 2.0
12
+ status: success
13
+ message:
14
+ signature: 1234abc
15
+ allow: false
16
+ classification: spam
17
+ spaminess: 0.9
18
+ profanity-match: false
19
+ YAML
20
+
21
+ stub_request(
22
+ :post,
23
+ 'http://api.defensio.com/2.0/users/test/documents.yaml'
24
+ ).to_return(:body => yaml_response)
25
+
26
+ it('Fail to use an invalid engine') do
27
+ should.raise?(ArgumentError) do
28
+ Comments::AntiSpam.validate(:foobar, nil, nil, nil, spam_comment)
29
+ end
30
+ end
31
+
32
+ it('Validate a spam comment using Defensio') do
33
+ get_setting(:defensio_key).value = 'test'
34
+
35
+ Comments::AntiSpam.validate(:defensio, nil, nil, nil, spam_comment) \
36
+ .should == true
37
+ end
38
+
39
+ it('Fail to validate using defensio without an API key') do
40
+ get_setting(:defensio_key).value = nil
41
+
42
+ should.raise? do
43
+ Comments::AntiSpam.validate(:defensio, nil, nil, nil, spam_comment)
44
+ end
45
+
46
+ get_setting(:defensio_key).value = 'test'
47
+ end
48
+
49
+ WebMock.reset!
50
+ end
@@ -1,26 +1,33 @@
1
1
  require File.expand_path('../../../../../helper', __FILE__)
2
2
 
3
- describe("Comments::Controller::Comments") do
3
+ describe('Comments::Controller::Comments') do
4
4
  behaves_like :capybara
5
5
 
6
- it("Create all test data") do
7
- @section = Sections::Model::Section.create(
8
- :name => 'Spec section',
9
- :comment_allow => true,
10
- :comment_require_account => false,
11
- :comment_moderate => false,
12
- :comment_format => 'markdown'
6
+ index_url = Comments::Controller::Comments.r(:index).to_s
7
+ edit_url = Comments::Controller::Comments.r(:edit).to_s
8
+ save_button = lang('comments.buttons.save')
9
+ user_id = Users::Model::User[:email => 'spec@domain.tld'].id
10
+ section = Sections::Model::Section.create(
11
+ :name => 'Spec section',
12
+ :comment_allow => true,
13
+ :comment_require_account => false,
14
+ :comment_moderate => false,
15
+ :comment_format => 'markdown'
16
+ )
17
+
18
+ entry = Sections::Model::SectionEntry.create(
19
+ :title => 'Spec entry',
20
+ :user_id => user_id,
21
+ :section_id => section.id
22
+ )
23
+
24
+ after do
25
+ Zen::Event.delete(
26
+ :before_edit_comment,
27
+ :after_edit_comment,
28
+ :before_delete_comment,
29
+ :after_delete_comment
13
30
  )
14
-
15
- @entry = Sections::Model::SectionEntry.create(
16
- :title => 'Spec entry',
17
- :status => 'published',
18
- :user_id => 1,
19
- :section_id => @section.id
20
- )
21
-
22
- @section.name.should === 'Spec section'
23
- @entry.title.should === 'Spec entry'
24
31
  end
25
32
 
26
33
  it('Submit a form without a CSRF token') do
@@ -28,41 +35,77 @@ describe("Comments::Controller::Comments") do
28
35
  Comments::Controller::Comments.r(:save).to_s
29
36
  )
30
37
 
31
- response.body.include?(lang('zen_general.errors.csrf')).should === true
32
- response.status.should === 403
38
+ response.body.include?(lang('zen_general.errors.csrf')).should == true
39
+ response.status.should == 403
33
40
  end
34
41
 
35
- it("No comments should exist") do
36
- index_url = Comments::Controller::Comments.r(:index).to_s
37
- message = lang('comments.messages.no_comments')
42
+ it('Find no existing comments') do
43
+ message = lang('comments.messages.no_comments')
38
44
 
39
45
  visit(index_url)
40
46
 
41
- page.has_content?(message).should === true
42
- page.has_selector?('table tbody tr').should === false
47
+ page.has_content?(message).should == true
48
+ page.has_selector?('table tbody tr').should == false
43
49
  end
44
50
 
45
- it("Create a new comment") do
51
+ it('Create a new comment') do
46
52
  comment = Comments::Model::Comment.create(
47
53
  :user_id => 1,
48
- :section_entry_id => @entry.id,
54
+ :section_entry_id => entry.id,
49
55
  :email => 'spec@domain.tld',
50
56
  :comment => 'Spec comment'
51
57
  )
52
58
 
53
- index_url = Comments::Controller::Comments.r(:index).to_s
54
- message = lang('comments.messages.no_comments')
59
+ message = lang('comments.messages.no_comments')
55
60
 
56
61
  visit(index_url)
57
62
 
58
- page.has_content?(message).should === false
59
- page.has_selector?('table tbody tr').should === true
63
+ page.has_content?(message).should == false
64
+ page.has_selector?('table tbody tr').should == true
65
+ end
66
+
67
+ it('Search for a comment') do
68
+ visit(index_url)
69
+ search_button = lang('zen_general.buttons.search')
70
+ error = lang('zen_general.errors.invalid_search')
71
+
72
+ within('#search_form') do
73
+ fill_in('query', :with => 'Spec comment')
74
+ click_on(search_button)
75
+ end
76
+
77
+ page.has_content?(error).should == false
78
+ page.has_content?('Spec comment').should == true
79
+
80
+ within('#search_form') do
81
+ fill_in('query', :with => 'spec@domain.tld')
82
+ click_on(search_button)
83
+ end
84
+
85
+ page.has_content?(error).should == false
86
+ page.has_content?('Spec comment').should == true
87
+
88
+ within('#search_form') do
89
+ fill_in('query', :with => 'does not exist')
90
+ click_on(search_button)
91
+ end
92
+
93
+ page.has_content?(error).should == false
94
+ page.has_content?('Spec comment').should == false
60
95
  end
61
96
 
62
- it("Edit an existing comment") do
63
- index_url = Comments::Controller::Comments.r(:index).to_s
64
- edit_url = Comments::Controller::Comments.r(:edit).to_s
65
- save_button = lang('comments.buttons.save')
97
+ it('Edit an existing comment') do
98
+ event_comment = nil
99
+ event_comment2 = nil
100
+ comment = 'Spec modified 123'
101
+
102
+ Zen::Event.listen(:before_edit_comment) do |comment|
103
+ event_comment = comment.comment
104
+ end
105
+
106
+ Zen::Event.listen(:after_edit_comment) do |comment|
107
+ event_comment2 = comment.comment
108
+ end
66
109
 
67
110
  visit(index_url)
68
111
  click_link('Spec comment')
@@ -70,23 +113,35 @@ describe("Comments::Controller::Comments") do
70
113
  current_path.should =~ /#{edit_url}\/[0-9]+/
71
114
 
72
115
  within('#comment_form') do
73
- fill_in('comment', :with => 'Spec comment modified')
116
+ fill_in('comment', :with => comment)
74
117
  select(lang('comments.labels.open'), :from => 'comment_status_id')
75
118
  click_on(save_button)
76
119
  end
77
120
 
78
- page.find('textarea[name="comment"]').value \
79
- .should === 'Spec comment modified'
121
+ page.find('textarea[name="comment"]').value.should == comment
80
122
 
81
123
  page.find('select[name="comment_status_id"] option[selected]').text \
82
- .should === lang('comments.labels.open')
83
- end
124
+ .should == lang('comments.labels.open')
125
+
126
+ event_comment.should == comment
127
+ event_comment2.should == event_comment
128
+
129
+ Zen::Event.delete(:before_edit_comment, :after_edit_comment)
130
+
131
+ # Modify the comment using an event
132
+ Zen::Event.listen(:before_edit_comment) do |comment|
133
+ comment.comment = 'Spec comment modified'
134
+ end
135
+
136
+ within('#comment_form') do
137
+ click_on(save_button)
138
+ end
84
139
 
85
- it("Edit an existing comment with invalid data") do
86
- index_url = Comments::Controller::Comments.r(:index).to_s
87
- edit_url = Comments::Controller::Comments.r(:edit).to_s
88
- save_button = lang('comments.buttons.save')
140
+ page.find('textarea[name="comment"]') \
141
+ .value.should == 'Spec comment modified'
142
+ end
89
143
 
144
+ it('Edit an existing comment with invalid data') do
90
145
  visit(index_url)
91
146
  click_link('Spec comment')
92
147
 
@@ -97,38 +152,43 @@ describe("Comments::Controller::Comments") do
97
152
  click_on(save_button)
98
153
  end
99
154
 
100
- page.has_selector?('span.error').should === true
155
+ page.has_selector?('span.error').should == true
101
156
  end
102
157
 
103
- it('Try to delete a set of comments without IDs') do
104
- index_url = Comments::Controller::Comments.r(:index).to_s
158
+ it('Fail to delete a set of comments without IDs') do
105
159
  delete_button = lang('comments.buttons.delete')
106
160
 
107
161
  visit(index_url)
108
162
  click_on(delete_button)
109
163
 
110
- page.has_selector?('input[name="comment_ids[]"]').should === true
164
+ page.has_selector?('input[name="comment_ids[]"]').should == true
111
165
  end
112
166
 
113
- it("Delete an existing comment") do
114
- index_url = Comments::Controller::Comments.r(:index).to_s
115
- delete_button = lang('comments.buttons.delete')
116
- message = lang('comments.messages.no_comments')
167
+ it('Delete an existing comment') do
168
+ delete_button = lang('comments.buttons.delete')
169
+ message = lang('comments.messages.no_comments')
170
+ event_comment = nil
171
+ event_comment2 = nil
172
+
173
+ Zen::Event.listen(:before_delete_comment) do |comment|
174
+ event_comment = comment.comment
175
+ end
176
+
177
+ Zen::Event.listen(:after_delete_comment) do |comment|
178
+ event_comment2 = comment.comment
179
+ end
117
180
 
118
181
  visit(index_url)
119
182
  check('comment_ids[]')
120
183
  click_on(delete_button)
121
184
 
122
- page.has_content?(message).should === true
123
- page.has_selector?('table tbody tr').should === false
124
- end
125
-
126
- it("Delete all test data") do
127
- @entry.destroy
128
- @section.destroy
185
+ page.has_content?(message).should == true
186
+ page.has_selector?('table tbody tr').should == false
129
187
 
130
- Sections::Model::Section.filter[:name => 'Spec section'].should === nil
131
- Sections::Model::SectionEntry.filter[:title => 'Spec entry'].should === nil
188
+ event_comment.should == 'Spec comment modified'
189
+ event_comment2.should == event_comment
132
190
  end
133
191
 
192
+ entry.destroy
193
+ section.destroy
134
194
  end
@@ -1,41 +1,49 @@
1
1
  require File.expand_path('../../../../../helper', __FILE__)
2
- require File.join(Zen::Fixtures, 'package/comments/controller/comments_form')
2
+ require File.join(Zen::FIXTURES, 'package/comments/controller/comments_form')
3
3
 
4
4
  describe("Comments::Controller::CommentsForm") do
5
5
  behaves_like :capybara
6
6
 
7
7
  before do
8
- plugin(:settings, :get, :defensio_key).value = 'test'
8
+ get_setting(:defensio_key).value = 'test'
9
9
  end
10
10
 
11
11
  after do
12
12
  Comments::Model::Comment.destroy
13
- plugin(:settings, :get, :defensio_key).value = nil
13
+
14
+ get_setting(:defensio_key).value = nil
15
+
16
+ Zen::Event.delete(:before_new_comment, :after_new_comment)
14
17
  end
15
18
 
16
- it('Create the test data') do
17
- user_id = Users::Model::User[:name => 'Spec'].id
18
- entry_status = Sections::Model::SectionEntryStatus[:name => 'published'].id
19
-
20
- @section = Sections::Model::Section.create(
21
- :name => 'Spec section',
22
- :comment_allow => true,
23
- :comment_require_account => true,
24
- :comment_moderate => false,
25
- :comment_format => 'plain'
26
- )
27
-
28
- @section_entry = Sections::Model::SectionEntry.create(
29
- :title => 'Spec entry',
30
- :user_id => user_id,
31
- :section_entry_status_id => entry_status,
32
- :section_id => @section.id
33
- )
34
-
35
- @section.name.should === 'Spec section'
36
- @section_entry.title.should === 'Spec entry'
37
-
38
- Comments::Model::Comment.all.empty?.should === true
19
+ # Set up all the required data
20
+ get_setting(:enable_antispam).value = false
21
+ get_setting(:frontend_language).value = 'en'
22
+
23
+ user_id = Users::Model::User[:name => 'Spec'].id
24
+ entry_status = Sections::Model::SectionEntryStatus[:name => 'published'].id
25
+
26
+ section = Sections::Model::Section.create(
27
+ :name => 'Spec section',
28
+ :comment_allow => true,
29
+ :comment_require_account => true,
30
+ :comment_moderate => false,
31
+ :comment_format => 'plain',
32
+ )
33
+
34
+ section_entry = Sections::Model::SectionEntry.create(
35
+ :title => 'Spec entry',
36
+ :user_id => user_id,
37
+ :section_entry_status_id => entry_status,
38
+ :section_id => section.id
39
+ )
40
+
41
+ it('Submit a comment without a CSRF token') do
42
+ url = Comments::Controller::CommentsForm.r(:save).to_s
43
+ response = page.driver.post(url)
44
+
45
+ response.body.should == lang('zen_general.errors.csrf')
46
+ response.status.should == 403
39
47
  end
40
48
 
41
49
  it('Submit a comment') do
@@ -43,40 +51,64 @@ describe("Comments::Controller::CommentsForm") do
43
51
 
44
52
  # Submit the form
45
53
  within('#spec_comments_form') do
46
- fill_in('section_entry', :with => @section_entry.id)
54
+ fill_in('user_id' , :with => user_id)
55
+ fill_in('section_entry', :with => section_entry.id)
47
56
  fill_in('name' , :with => 'Spec user')
48
- fill_in('website' , :with => 'http://zen-cms.com/')
49
57
  fill_in('email' , :with => 'spec@domain.tld')
50
58
  fill_in('comment' , :with => 'Spec comment')
51
59
 
52
60
  click_on('Submit')
53
61
  end
54
62
 
55
- # Let's see if the comment exists
56
63
  comment = Comments::Model::Comment[:comment => 'Spec comment']
57
64
 
58
- comment.name.should === 'Spec user'
59
- comment.comment.should === 'Spec comment'
60
- comment.website.should === 'http://zen-cms.com/'
61
- comment.email.should === 'spec@domain.tld'
62
- comment.section_entry_id === @section_entry.id
65
+ comment.user_name.should == 'Spec'
66
+ comment.comment.should == 'Spec comment'
67
+ comment.user_email.should == 'spec@domain.tld'
68
+ comment.section_entry_id == section_entry.id
63
69
  end
64
70
 
65
- it('Submit a comment without a CSRF token') do
66
- url = Comments::Controller::CommentsForm.r(:save).to_s
67
- response = page.driver.post(url)
71
+ it('Submit a comment with custom events') do
72
+ event_comment = nil
73
+
74
+ Zen::Event.listen(:before_new_comment) do |comment|
75
+ comment.comment = 'Spec comment event'
76
+ end
77
+
78
+ Zen::Event.listen(:after_new_comment) do |comment|
79
+ event_comment = comment.comment
80
+ end
81
+
82
+ visit(SpecCommentsForm.r(:index).to_s)
68
83
 
69
- response.body.should === lang('zen_general.errors.not_authorized')
70
- response.status.should === 403
84
+ # Submit the form
85
+ within('#spec_comments_form') do
86
+ fill_in('section_entry', :with => section_entry.id)
87
+ fill_in('name' , :with => 'Spec user')
88
+ fill_in('website' , :with => 'http://zen-cms.com/')
89
+ fill_in('email' , :with => 'spec@domain.tld')
90
+ fill_in('comment' , :with => 'Spec comment')
91
+
92
+ click_on('Submit')
93
+ end
94
+
95
+ comment = Comments::Model::Comment[:comment => 'Spec comment event']
96
+
97
+ comment.name.should == 'Spec user'
98
+ comment.comment.should == 'Spec comment event'
99
+ comment.website.should == 'http://zen-cms.com/'
100
+ comment.email.should == 'spec@domain.tld'
101
+ comment.section_entry_id == section_entry.id
102
+ event_comment.should == 'Spec comment event'
71
103
  end
72
104
 
73
- it('Submit a comment with an invalid entry') do
105
+ it('Fail to submit a comment with an invalid entry') do
74
106
  url = SpecCommentsForm.r(:index).to_s
75
107
 
76
108
  visit(url)
77
109
 
78
110
  within('#spec_comments_form') do
79
- fill_in('section_entry', :with => @section_entry.id + 1)
111
+ fill_in('section_entry', :with => section_entry.id + 1)
80
112
  fill_in('name' , :with => 'Spec user')
81
113
  fill_in('website' , :with => 'http://zen-cms.com/')
82
114
  fill_in('email' , :with => 'spec@domain.tld')
@@ -86,21 +118,21 @@ describe("Comments::Controller::CommentsForm") do
86
118
  end
87
119
 
88
120
  page.body.include?(lang('comments.errors.invalid_entry')) \
89
- .should === true
121
+ .should == true
90
122
 
91
- current_path.should === url
123
+ current_path.should == url
92
124
  end
93
125
 
94
- it('Submit a comment for an invalid section') do
95
- old_id = @section_entry.section_id
126
+ it('Should fail to submit a comment for an invalid section') do
127
+ old_id = section_entry.section_id
96
128
  url = SpecCommentsForm.r(:index).to_s
97
129
 
98
- @section_entry.update(:section_id => nil)
130
+ section_entry.update(:section_id => nil)
99
131
 
100
132
  visit(url)
101
133
 
102
134
  within('#spec_comments_form') do
103
- fill_in('section_entry', :with => @section_entry.id)
135
+ fill_in('section_entry', :with => section_entry.id)
104
136
  fill_in('name' , :with => 'Spec user')
105
137
  fill_in('website' , :with => 'http://zen-cms.com/')
106
138
  fill_in('email' , :with => 'spec@domain.tld')
@@ -110,21 +142,21 @@ describe("Comments::Controller::CommentsForm") do
110
142
  end
111
143
 
112
144
  page.body.include?(lang('comments.errors.invalid_entry')) \
113
- .should === true
145
+ .should == true
114
146
 
115
- current_path.should === url
147
+ current_path.should == url
116
148
 
117
- @section_entry.update(:section_id => old_id)
149
+ section_entry.update(:section_id => old_id)
118
150
  end
119
151
 
120
- it('Submit a comment for a section that does not allow comments') do
152
+ it('Should fail to submit a comment when comments are not allowed') do
121
153
  url = SpecCommentsForm.r(:index).to_s
122
154
 
123
- @section.update(:comment_allow => false)
155
+ section.update(:comment_allow => false)
124
156
  visit(url)
125
157
 
126
158
  within('#spec_comments_form') do
127
- fill_in('section_entry', :with => @section_entry.id)
159
+ fill_in('section_entry', :with => section_entry.id)
128
160
  fill_in('name' , :with => 'S)ec user')
129
161
  fill_in('website' , :with => 'http://zen-cms.com/')
130
162
  fill_in('email' , :with => 'spec@domain.tld')
@@ -134,21 +166,21 @@ describe("Comments::Controller::CommentsForm") do
134
166
  end
135
167
 
136
168
  page.body.include?(lang('comments.errors.comments_not_allowed')) \
137
- .should === true
169
+ .should == true
138
170
 
139
- current_path.should === url
171
+ current_path.should == url
140
172
 
141
- @section.update(:comment_allow => true)
173
+ section.update(:comment_allow => true)
142
174
  end
143
175
 
144
- it('Submit a comment when not logged in') do
176
+ it('Fail to submit a comment when not logged in') do
145
177
  url = SpecCommentsForm.r(:index).to_s
146
178
 
147
179
  visit(Users::Controller::Users.r(:logout).to_s)
148
180
  visit(url)
149
181
 
150
182
  within('#spec_comments_form') do
151
- fill_in('section_entry', :with => @section_entry.id)
183
+ fill_in('section_entry', :with => section_entry.id)
152
184
  fill_in('name' , :with => 'Spec user')
153
185
  fill_in('website' , :with => 'http://zen-cms.com/')
154
186
  fill_in('email' , :with => 'spec@domain.tld')
@@ -158,16 +190,16 @@ describe("Comments::Controller::CommentsForm") do
158
190
  end
159
191
 
160
192
  page.body.include?(lang('comments.errors.comments_require_account')) \
161
- .should === true
193
+ .should == true
162
194
 
163
- current_path.should === url
195
+ current_path.should == url
164
196
 
165
197
  # Log back in
166
198
  capybara_login
167
199
  end
168
200
 
169
201
  it('Submit a comment with moderation turned on') do
170
- @section.update(:comment_moderate => true)
202
+ section.update(:comment_moderate => true)
171
203
 
172
204
  url = SpecCommentsForm.r(:index).to_s
173
205
  closed_status = Comments::Model::CommentStatus[:name => 'closed']
@@ -175,7 +207,7 @@ describe("Comments::Controller::CommentsForm") do
175
207
  visit(url)
176
208
 
177
209
  within('#spec_comments_form') do
178
- fill_in('section_entry', :with => @section_entry.id)
210
+ fill_in('section_entry', :with => section_entry.id)
179
211
  fill_in('name' , :with => 'Spec user')
180
212
  fill_in('website' , :with => 'http://zen-cms.com/')
181
213
  fill_in('email' , :with => 'spec@domain.tld')
@@ -184,13 +216,13 @@ describe("Comments::Controller::CommentsForm") do
184
216
  click_on('Submit')
185
217
  end
186
218
 
187
- page.body.include?(lang('comments.success.moderate')).should === true
188
- current_path.should === url
219
+ page.body.include?(lang('comments.success.moderate')).should == true
220
+ current_path.should == url
189
221
 
190
222
  Comments::Model::Comment[:comment => 'Spec comment'] \
191
- .comment_status_id.should === closed_status.id
223
+ .comment_status_id.should == closed_status.id
192
224
 
193
- @section.update(:comment_moderate => false)
225
+ section.update(:comment_moderate => false)
194
226
  end
195
227
 
196
228
  it('Submit a comment and mark it as ham') do
@@ -211,7 +243,7 @@ describe("Comments::Controller::CommentsForm") do
211
243
  'http://api.defensio.com/2.0/users/test/documents.yaml'
212
244
  ).to_return(:body => yaml_response)
213
245
 
214
- plugin(:settings, :get, :enable_antispam).value = '1'
246
+ get_setting(:enable_antispam).value = '1'
215
247
 
216
248
  url = SpecCommentsForm.r(:index).to_s
217
249
  open_status = Comments::Model::CommentStatus[:name => 'open']
@@ -219,7 +251,7 @@ describe("Comments::Controller::CommentsForm") do
219
251
  visit(url)
220
252
 
221
253
  within('#spec_comments_form') do
222
- fill_in('section_entry', :with => @section_entry.id)
254
+ fill_in('section_entry', :with => section_entry.id)
223
255
  fill_in('name' , :with => 'Spec alternative')
224
256
  fill_in('website' , :with => 'http://zen-cms.com/')
225
257
  fill_in('email' , :with => 'spec@domain.tld')
@@ -228,13 +260,13 @@ describe("Comments::Controller::CommentsForm") do
228
260
  click_on('Submit')
229
261
  end
230
262
 
231
- page.body.include?(lang('comments.success.new')).should === true
232
- current_path.should === url
263
+ page.body.include?(lang('comments.success.new')).should == true
264
+ current_path.should == url
233
265
 
234
266
  Comments::Model::Comment[:name => 'Spec alternative'] \
235
- .comment_status_id.should === open_status.id
267
+ .comment_status_id.should == open_status.id
236
268
 
237
- plugin(:settings, :get, :enable_antispam).value = '0'
269
+ get_setting(:enable_antispam).value = '0'
238
270
  WebMock.reset!
239
271
  end
240
272
 
@@ -256,9 +288,9 @@ describe("Comments::Controller::CommentsForm") do
256
288
  'http://api.defensio.com/2.0/users/test/documents.yaml'
257
289
  ).to_return(:body => yaml_response)
258
290
 
259
- plugin(:settings, :get, :enable_antispam).value = '1'
291
+ get_setting(:enable_antispam).value = '1'
260
292
 
261
- @section.update(:comment_moderate => true)
293
+ section.update(:comment_moderate => true)
262
294
 
263
295
  url = SpecCommentsForm.r(:index).to_s
264
296
  closed_status = Comments::Model::CommentStatus[:name => 'closed']
@@ -266,7 +298,7 @@ describe("Comments::Controller::CommentsForm") do
266
298
  visit(url)
267
299
 
268
300
  within('#spec_comments_form') do
269
- fill_in('section_entry', :with => @section_entry.id)
301
+ fill_in('section_entry', :with => section_entry.id)
270
302
  fill_in('name' , :with => 'Spec alternative')
271
303
  fill_in('website' , :with => 'http://zen-cms.com/')
272
304
  fill_in('email' , :with => 'spec@domain.tld')
@@ -275,16 +307,16 @@ describe("Comments::Controller::CommentsForm") do
275
307
  click_on('Submit')
276
308
  end
277
309
 
278
- page.body.include?(lang('comments.success.moderate')).should === true
279
- current_path.should === url
310
+ page.body.include?(lang('comments.success.moderate')).should == true
311
+ current_path.should == url
280
312
 
281
313
  Comments::Model::Comment[:name => 'Spec alternative'] \
282
- .comment_status_id.should === closed_status.id
314
+ .comment_status_id.should == closed_status.id
283
315
 
284
- plugin(:settings, :get, :enable_antispam).value = '0'
316
+ get_setting(:enable_antispam).value = '0'
285
317
  WebMock.reset!
286
318
 
287
- @section.update(:comment_moderate => false)
319
+ section.update(:comment_moderate => false)
288
320
  end
289
321
 
290
322
  it('Submit a comment and mark it as spam') do
@@ -305,7 +337,7 @@ describe("Comments::Controller::CommentsForm") do
305
337
  'http://api.defensio.com/2.0/users/test/documents.yaml'
306
338
  ).to_return(:body => yaml_response)
307
339
 
308
- plugin(:settings, :get, :enable_antispam).value = '1'
340
+ get_setting(:enable_antispam).value = '1'
309
341
 
310
342
  url = SpecCommentsForm.r(:index).to_s
311
343
  spam_status = Comments::Model::CommentStatus[:name => 'spam']
@@ -313,7 +345,7 @@ describe("Comments::Controller::CommentsForm") do
313
345
  visit(url)
314
346
 
315
347
  within('#spec_comments_form') do
316
- fill_in('section_entry', :with => @section_entry.id)
348
+ fill_in('section_entry', :with => section_entry.id)
317
349
  fill_in('name' , :with => 'Spec alternative')
318
350
  fill_in('website' , :with => 'http://zen-cms.com/')
319
351
  fill_in('email' , :with => 'spec@domain.tld')
@@ -322,22 +354,16 @@ describe("Comments::Controller::CommentsForm") do
322
354
  click_on('Submit')
323
355
  end
324
356
 
325
- page.body.include?(lang('comments.success.new')).should === true
326
- current_path.should === url
357
+ page.body.include?(lang('comments.success.new')).should == true
358
+ current_path.should == url
327
359
 
328
360
  Comments::Model::Comment[:name => 'Spec alternative'] \
329
- .comment_status_id.should === spam_status.id
361
+ .comment_status_id.should == spam_status.id
330
362
 
331
- plugin(:settings, :get, :enable_antispam).value = '0'
363
+ get_setting(:enable_antispam).value = '0'
332
364
  WebMock.reset!
333
365
  end
334
366
 
335
- it('Delete the test data') do
336
- @section_entry.destroy
337
- @section.destroy
338
-
339
- Sections::Model::Section[:name => 'Spec section'].should === nil
340
- Sections::Model::SectionEntry[:title => 'Spec entry'].should === nil
341
- end
342
-
367
+ section_entry.destroy
368
+ section.destroy
343
369
  end