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
@@ -4,30 +4,29 @@ require 'rdiscount'
4
4
  describe "Zen::Controller::Preview" do
5
5
  behaves_like :capybara
6
6
 
7
- it('Convert Markdown to HTML') do
7
+ it('Convert Markdown to HTML via a POST request') do
8
8
  markdown = 'Hello, **world**'
9
9
  response = page.driver.post(
10
10
  '/admin/preview', :engine => 'markdown', :markup => markdown
11
11
  )
12
12
 
13
- response.body.strip.should === '<p>Hello, <strong>world</strong></p>'
14
- response.status.should === 200
13
+ response.body.strip.should == '<p>Hello, <strong>world</strong></p>'
14
+ response.status.should == 200
15
15
  end
16
16
 
17
- it('Convert an non existing markup type') do
17
+ it('Convert an non existing markup type using a POST request') do
18
18
  response = page.driver.post(
19
19
  '/admin/preview', :engine => 'foobar', :markup => 'foobar'
20
20
  )
21
21
 
22
- response.body.strip.should === lang('zen_general.errors.invalid_request')
23
- response.status.should === 400
22
+ response.body.strip.should == lang('zen_general.errors.invalid_request')
23
+ response.status.should == 400
24
24
  end
25
25
 
26
- it('Call without any parameters') do
26
+ it('Fail to convert markup without any POST parameters') do
27
27
  response = page.driver.post('/admin/preview')
28
28
 
29
- response.body.strip.should === lang('zen_general.errors.invalid_request')
30
- response.status.should === 400
29
+ response.body.strip.should == lang('zen_general.errors.invalid_request')
30
+ response.status.should == 400
31
31
  end
32
-
33
32
  end
data/spec/zen/event.rb ADDED
@@ -0,0 +1,44 @@
1
+ require File.expand_path('../../helper', __FILE__)
2
+
3
+ describe('Zen::Event') do
4
+ after do
5
+ Zen::Event::REGISTERED.delete(:test)
6
+ end
7
+
8
+ it('Register an event') do
9
+ Zen::Event.listen(:test) {}
10
+
11
+ Zen::Event::REGISTERED.key?(:test).should == true
12
+ end
13
+
14
+ it('Run a single event') do
15
+ data = 0
16
+
17
+ Zen::Event.listen(:test) do |number|
18
+ data = number
19
+ end
20
+
21
+ Zen::Event.call(:test, 10)
22
+ data.should == 10
23
+
24
+ Zen::Event.call(:test, 12)
25
+ data.should == 12
26
+ end
27
+
28
+ it('Run multiple events') do
29
+ data = 0
30
+
31
+ Zen::Event.listen(:test) do |number|
32
+ data += number
33
+ end
34
+
35
+ Zen::Event.listen(:test) do |number|
36
+ data += (number * 2)
37
+ end
38
+
39
+ Zen::Event.call(:test, 10)
40
+ Zen::Event.call(:test, 20)
41
+
42
+ data.should == 90
43
+ end
44
+ end
@@ -3,7 +3,7 @@ require File.expand_path('../../../helper', __FILE__)
3
3
  describe('Ramaze::Helper::Breadcrumb') do
4
4
  extend Ramaze::Helper::Breadcrumb
5
5
 
6
- it('Add and build a set of breadcrumbs') do
6
+ it('Build a set of breadcrumbs') do
7
7
  respond_to?('set_breadcrumbs').should == true
8
8
  respond_to?('get_breadcrumbs').should == true
9
9
 
@@ -17,7 +17,7 @@ describe('Ramaze::Helper::Breadcrumb') do
17
17
  breadcrumbs.include?('&raquo;').should == true
18
18
  end
19
19
 
20
- it('Add and build a set of breadcrumbs with a custom separator') do
20
+ it('Build a set of breadcrumbs with a custom separator') do
21
21
  respond_to?('set_breadcrumbs').should == true
22
22
  respond_to?('get_breadcrumbs').should == true
23
23
 
@@ -31,8 +31,7 @@ describe('Ramaze::Helper::Breadcrumb') do
31
31
  breadcrumbs.include?('--').should == true
32
32
  end
33
33
 
34
- it('Return no breadcrumbs') do
35
- get_breadcrumbs.nil?.should === true
34
+ it('Return nil when no breadcrumb parameters are specified') do
35
+ get_breadcrumbs.nil?.should == true
36
36
  end
37
-
38
37
  end
@@ -0,0 +1,21 @@
1
+ require File.expand_path('../../../helper', __FILE__)
2
+ require File.join(Zen::FIXTURES, 'helper', 'controller')
3
+
4
+ describe('Ramaze::Helper::Controller') do
5
+ behaves_like :capybara
6
+
7
+ it('Set the title of a controller method') do
8
+ visit('/admin/spec-controller-helper')
9
+
10
+ page.body.include?('index method').should == true
11
+ page.find('title').text.should == lang('categories.titles.index')
12
+ end
13
+
14
+ it('Protect a controller method against CSRF attacks') do
15
+ visit('/admin/spec-controller-helper/csrf')
16
+
17
+ page.body.include?('csrf method').should == false
18
+ page.status_code.should == 403
19
+ page.body.include?(lang('zen_general.errors.csrf')).should == true
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path('../../../helper', __FILE__)
2
+ require File.join(Zen::FIXTURES, 'helper', 'locale')
3
+
4
+ describe('Ramaze::Helper::Locale') do
5
+ behaves_like :capybara
6
+ extend Ramaze::Helper::Locale
7
+
8
+ it('Get the date format from the database') do
9
+ visit('/admin/spec-locale-helper')
10
+
11
+ format = get_setting(:date_format).value
12
+
13
+ date_format.should == format
14
+
15
+ # Get the date format from the session
16
+ page.body.include?(format).should == true
17
+ end
18
+
19
+ it('Format a date using using the date_format setting') do
20
+ format = get_setting(:date_format).value
21
+ date = Time.new
22
+
23
+ format_date(date).should == date.strftime(format)
24
+ end
25
+ end
@@ -1,31 +1,24 @@
1
1
  require File.expand_path('../../../helper', __FILE__)
2
- require __DIR__('../../fixtures/zen/helper/message')
2
+ require File.join(Zen::FIXTURES, 'helper', 'message')
3
3
 
4
4
  describe('Ramaze::Helper::Message') do
5
5
  behaves_like :capybara
6
6
 
7
7
  it('Display a success message') do
8
- # Initialize the session
9
- visit('/admin/spec-message-helper')
10
-
11
8
  visit('/admin/spec-message-helper/success')
12
- visit('/admin/spec-message-helper')
13
9
 
14
- page.body.include?('success message').should === true
10
+ page.body.include?('success message').should == true
15
11
  end
16
12
 
17
13
  it('Display an info message') do
18
14
  visit('/admin/spec-message-helper/info')
19
- visit('/admin/spec-message-helper')
20
15
 
21
- page.body.include?('info message').should === true
16
+ page.body.include?('info message').should == true
22
17
  end
23
18
 
24
19
  it('Display an error message') do
25
20
  visit('/admin/spec-message-helper/error')
26
- visit('/admin/spec-message-helper')
27
21
 
28
- page.body.include?('error message').should === true
22
+ page.body.include?('error message').should == true
29
23
  end
30
-
31
24
  end
@@ -1,48 +1,46 @@
1
1
  require File.expand_path('../../../helper', __FILE__)
2
- require __DIR__('../../fixtures/zen/theme/theme')
2
+ require File.join(Zen::FIXTURES, 'theme', 'theme')
3
3
 
4
4
  describe('Ramaze::Helper::Theme') do
5
5
  behaves_like :capybara
6
6
 
7
- # Set the theme
8
7
  before do
9
- plugin(:settings, :get, :theme).value = 'spec_theme'
8
+ get_setting(:theme).value = 'spec_theme'
10
9
  end
11
10
 
12
- # Reset
13
11
  after do
14
- plugin(:settings, :get, :theme).value = nil
12
+ get_setting(:theme).value = nil
15
13
  end
16
14
 
17
15
  it('Render a partial template') do
18
16
  visit('/helper/partial')
19
17
 
20
- page.body.include?('This is a partial.').should === true
18
+ page.body.include?('This is a partial.').should == true
21
19
  end
22
20
 
23
- it('Show a 404 page') do
21
+ it('Show a 404 page in a template') do
24
22
  visit('/helper/404')
25
23
 
26
24
  page.body.include?('The requested page could not be found!') \
27
- .should === true
25
+ .should == true
28
26
 
29
- page.status_code.should === 404
27
+ page.status_code.should == 404
30
28
  end
31
29
 
32
- it('Show an error when no partial directory exists') do
30
+ it('Error when no partials directory has been set') do
33
31
  dir = Zen::Theme['spec_theme'].partial_dir
34
32
  Zen::Theme['spec_theme'].partial_dir = nil
35
33
 
36
34
  begin
37
35
  visit('/helper/partial')
38
36
  rescue => e
39
- e.message.should === 'The theme spec_theme has no partial directory set.'
37
+ e.message.should == 'The theme spec_theme has no partial directory set.'
40
38
  end
41
39
 
42
40
  Zen::Theme['spec_theme'].partial_dir = dir
43
41
  end
44
42
 
45
- it('Request a non existing partial') do
43
+ it('Error when loading a non existing partial') do
46
44
  theme = File.join(
47
45
  Zen::Theme['spec_theme'].partial_dir,
48
46
  'wrong_partial.xhtml'
@@ -51,8 +49,7 @@ describe('Ramaze::Helper::Theme') do
51
49
  begin
52
50
  visit('/helper/wrong_partial')
53
51
  rescue => e
54
- e.message.should === "The template #{theme} doesn't exist."
52
+ e.message.should == "The template #{theme} doesn't exist."
55
53
  end
56
54
  end
57
-
58
55
  end
data/spec/zen/language.rb CHANGED
@@ -1,55 +1,81 @@
1
1
  require File.expand_path('../../helper', __FILE__)
2
-
3
- Zen::Language::Languages['nl'] = 'Nederlands'
2
+ require File.expand_path('../../fixtures/zen/language', __FILE__)
4
3
 
5
4
  describe('Zen::Language') do
5
+ behaves_like :capybara
6
+
7
+ # Ensure the user object is put back in the correct state after each
8
+ # specification.
9
+ after do
10
+ Users::Model::User[:email => 'spec@domain.tld'].update(
11
+ :language => 'en',
12
+ :frontend_language => 'en'
13
+ )
14
+ end
15
+
16
+ it('Change the current language') do
17
+ # Check if the frontend language is set properly.
18
+ visit('/spec-language/frontend_dutch')
19
+
20
+ page.body.include?('<p>nl</p>').should == true
21
+ page.body.include?('<p>en<p>').should == false
22
+
23
+ visit('/spec-language/frontend_english')
24
+
25
+ page.body.include?('<p>nl</p>').should == false
26
+ page.body.include?('<p>en</p>').should == true
27
+
28
+ visit('/admin/spec-language/backend_english')
6
29
 
7
- it('Test an English language pack') do
30
+ page.body.include?('<p>nl</p>').should == false
31
+ page.body.include?('<p>en</p>').should == true
32
+
33
+ visit('/admin/spec-language/backend_dutch')
34
+
35
+ page.body.include?('<p>nl</p>').should == true
36
+ page.body.include?('<p>en</p>').should == false
37
+ end
38
+
39
+ it('Load an English language pack') do
8
40
  Zen::Language.load('spec')
9
41
 
10
- lang('spec.name').should === 'Name'
11
- lang('spec.age').should === 'Age'
42
+ lang('spec.name').should == 'Name'
43
+ lang('spec.age').should == 'Age'
12
44
 
13
- lang('spec.parent.sub').should === 'Sub item'
45
+ lang('spec.parent.sub').should == 'Sub item'
14
46
  end
15
47
 
16
48
  it('Load an already loaded language file') do
17
49
  Zen::Language.load('spec')
18
50
 
19
- lang('spec.name').should === 'Name'
51
+ lang('spec.name').should == 'Name'
20
52
  end
21
53
 
22
- it('Load a non existing language file') do
54
+ it('Fail to load a non existing language file') do
23
55
  should.raise?(Zen::LanguageError) do
24
56
  Zen::Language.load('does-not-exist')
25
57
  end
26
58
  end
27
59
 
28
- it('Access a non existing language string') do
60
+ it('Fail to access a non existing language string') do
29
61
  should.raise?(Zen::LanguageError) do
30
62
  lang('spec.does-not-exist')
31
63
  end
32
64
  end
33
65
 
34
- it('Access a non existing language string for an empty language file') do
66
+ it('Fail to access a non existing language file') do
35
67
  should.raise?(Zen::LanguageError) do
36
68
  lang('foo.does-not-exist', 'foo')
37
69
  end
38
70
  end
39
71
 
40
- it('Access an array using a language string') do
41
- lang('spec.array.0').should === 'first'
42
- lang('spec.array.1').should === 'second'
43
- end
44
-
45
- it('Test a Dutch language pack') do
46
- Zen::Language.options.language = 'nl'
72
+ it('Load a Dutch language pack') do
73
+ get_setting(:language).value = 'nl'
47
74
 
48
- lang('spec.name').should === 'Naam'
49
- lang('spec.age').should === 'Leeftijd'
50
- lang('spec.parent.sub').should === 'Sub element'
75
+ lang('spec.name').should == 'Naam'
76
+ lang('spec.age').should == 'Leeftijd'
77
+ lang('spec.parent.sub').should == 'Sub element'
51
78
 
52
- Zen::Language.options.language = 'en'
79
+ get_setting(:language).value = 'en'
53
80
  end
54
-
55
81
  end
@@ -0,0 +1,39 @@
1
+ require File.expand_path('../../helper', __FILE__)
2
+
3
+ describe('Zen::Markup') do
4
+ WebMock.allow_net_connect!
5
+
6
+ it('Convert Markdown to HTML') do
7
+ html = Zen::Markup.convert(:markdown, 'hello **world**').strip
8
+
9
+ html.should == '<p>hello <strong>world</strong></p>'
10
+ end
11
+
12
+ it('Convert Textile to HTML') do
13
+ html = Zen::Markup.convert(:textile, 'hello *world*').strip
14
+
15
+ html.should == '<p>hello <strong>world</strong></p>'
16
+ end
17
+
18
+ it('Convert HTML to plain text') do
19
+ text = Zen::Markup.convert(:plain, '<p>hello world</p>').strip
20
+
21
+ text.should == '&lt;p&gt;hello world&lt;&#x2F;p&gt;'
22
+ end
23
+
24
+ it('Convert to HTML to HTML') do
25
+ html = Zen::Markup.convert(:html, '<p>hello world</p>')
26
+
27
+ html.should == '<p>hello world</p>'
28
+ end
29
+
30
+ it('Specify a non existing engine') do
31
+ begin
32
+ Zen::Markup.convert(:foobar, 'hello')
33
+ rescue ArgumentError => e
34
+ e.message.should == 'The specified engine "foobar" is invalid'
35
+ end
36
+ end
37
+
38
+ WebMock.disable_net_connect!
39
+ end
data/spec/zen/package.rb CHANGED
@@ -1,23 +1,60 @@
1
1
  require File.expand_path('../../helper', __FILE__)
2
- require File.join(Zen::Fixtures, 'package')
2
+ require File.join(Zen::FIXTURES, 'package')
3
3
 
4
4
  describe('Zen::Package') do
5
5
  behaves_like :capybara
6
6
 
7
- it('Select a specific package by it\'s name') do
8
- package = Zen::Package[:spec]
7
+ it('Add a new package') do
8
+ Zen::Package.add do |p|
9
+ p.name = :spec
10
+ p.title = 'Spec'
11
+ p.author = 'Yorick Peterse'
12
+ p.about = 'A spec extension'
13
+ p.url = 'http://zen-cms.com/'
14
+ p.root = __DIR__
15
+ p.migrations = __DIR__
9
16
 
10
- package.should.not === nil
11
- package.name.should === :spec
12
- package.url.should === 'http://zen-cms.com/'
13
- package.controllers['Spec'].should == SpecPackage
17
+ p.menu('Spec', '/admin/spec', :permission => :show_menu) do |sub|
18
+ sub.menu('Sub spec', '/admin/spec/sub')
19
+ end
20
+
21
+ p.permission :foobar, 'Foobar'
22
+ end
23
+
24
+ pkg = Zen::Package[:spec]
25
+
26
+ pkg.name.should == :spec
27
+ pkg.title.should == 'Spec'
28
+ pkg.author.should == 'Yorick Peterse'
29
+ pkg.root.should == __DIR__
30
+ pkg.migrations.should == pkg.root
31
+
32
+ pkg.menu.title.should == 'Spec'
33
+ pkg.menu.url.should == '/admin/spec'
34
+
35
+ pkg.menu.children[0].title.should == 'Sub spec'
36
+ pkg.menu.children[0].url.should == '/admin/spec/sub'
37
+
38
+ pkg.permissions[:foobar].should == 'Foobar'
14
39
  end
15
40
 
16
- it ('Create a navigation menu of all packages') do
17
- visit('/admin/spec')
41
+ it('Build a package\'s navigation items') do
42
+ pkg = Zen::Package[:spec]
43
+ menu = pkg.menu.html
44
+ html = '<li><a href="/admin/spec" title="Spec">Spec</a>' \
45
+ '<ul><li><a href="/admin/spec/sub" title="Sub spec">Sub spec</a></li>' \
46
+ '</ul></li>'
18
47
 
19
- page.has_selector?('a[href="/admin/spec"]').should === true
20
- page.has_selector?('ul.spec_menu').should === true
48
+ menu.should == html
21
49
  end
22
50
 
51
+ it('Build the navigation menu for all packages') do
52
+ menu = Zen::Package.build_menu
53
+ html = '<li><a href="/admin/spec" title="Spec">Spec</a>' \
54
+ '<ul><li><a href="/admin/spec/sub" title="Sub spec">Sub spec</a></li>' \
55
+ '</ul></li>'
56
+
57
+ menu.include?('<ul class="navigation">').should == true
58
+ menu.include?(html).should == true
59
+ end
23
60
  end