adva_cms 0.0.1

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 (551) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +22 -0
  5. data/NOTES +132 -0
  6. data/README.md +29 -0
  7. data/Rakefile +2 -0
  8. data/adva_cms.gemspec +22 -0
  9. data/app/assets/images/adva_cms/admin/header_bg.png +0 -0
  10. data/app/assets/images/adva_cms/admin/section_menu_bg.png +0 -0
  11. data/app/assets/images/adva_cms/admin/tab_action_active.png +0 -0
  12. data/app/assets/images/adva_cms/admin/tab_main_active.png +0 -0
  13. data/app/assets/images/adva_cms/admin/tab_sidebar_active.png +0 -0
  14. data/app/assets/images/adva_cms/admin/tab_top_active.png +0 -0
  15. data/app/assets/images/adva_cms/asset_selected.png +0 -0
  16. data/app/assets/images/adva_cms/avatar.gif +0 -0
  17. data/app/assets/images/adva_cms/filter-bg.png +0 -0
  18. data/app/assets/images/adva_cms/icons/accept.png +0 -0
  19. data/app/assets/images/adva_cms/icons/add.png +0 -0
  20. data/app/assets/images/adva_cms/icons/arrow_cross.png +0 -0
  21. data/app/assets/images/adva_cms/icons/arrow_cross_2.png +0 -0
  22. data/app/assets/images/adva_cms/icons/arrow_cross_3.png +0 -0
  23. data/app/assets/images/adva_cms/icons/arrow_up_down.png +0 -0
  24. data/app/assets/images/adva_cms/icons/assets/audio.png +0 -0
  25. data/app/assets/images/adva_cms/icons/assets/doc.png +0 -0
  26. data/app/assets/images/adva_cms/icons/assets/pdf.png +0 -0
  27. data/app/assets/images/adva_cms/icons/assets/video.png +0 -0
  28. data/app/assets/images/adva_cms/icons/attach.png +0 -0
  29. data/app/assets/images/adva_cms/icons/bin.png +0 -0
  30. data/app/assets/images/adva_cms/icons/bin_closed.png +0 -0
  31. data/app/assets/images/adva_cms/icons/bin_empty.png +0 -0
  32. data/app/assets/images/adva_cms/icons/bullet_black.png +0 -0
  33. data/app/assets/images/adva_cms/icons/bullet_delete.png +0 -0
  34. data/app/assets/images/adva_cms/icons/bullet_error.png +0 -0
  35. data/app/assets/images/adva_cms/icons/bullet_go.png +0 -0
  36. data/app/assets/images/adva_cms/icons/bullet_red.png +0 -0
  37. data/app/assets/images/adva_cms/icons/bullet_white.png +0 -0
  38. data/app/assets/images/adva_cms/icons/bullet_yellow.png +0 -0
  39. data/app/assets/images/adva_cms/icons/cancel.png +0 -0
  40. data/app/assets/images/adva_cms/icons/comment.gif +0 -0
  41. data/app/assets/images/adva_cms/icons/comment.png +0 -0
  42. data/app/assets/images/adva_cms/icons/comment_add.png +0 -0
  43. data/app/assets/images/adva_cms/icons/comment_blue.gif +0 -0
  44. data/app/assets/images/adva_cms/icons/comment_delete.png +0 -0
  45. data/app/assets/images/adva_cms/icons/comment_edit.png +0 -0
  46. data/app/assets/images/adva_cms/icons/comment_yellow.gif +0 -0
  47. data/app/assets/images/adva_cms/icons/cross.png +0 -0
  48. data/app/assets/images/adva_cms/icons/delete.png +0 -0
  49. data/app/assets/images/adva_cms/icons/eye.png +0 -0
  50. data/app/assets/images/adva_cms/icons/favorites.png +0 -0
  51. data/app/assets/images/adva_cms/icons/help.png +0 -0
  52. data/app/assets/images/adva_cms/icons/hourglass.png +0 -0
  53. data/app/assets/images/adva_cms/icons/icon_attachment.gif +0 -0
  54. data/app/assets/images/adva_cms/icons/icon_padlock.gif +0 -0
  55. data/app/assets/images/adva_cms/icons/link.png +0 -0
  56. data/app/assets/images/adva_cms/icons/lock.png +0 -0
  57. data/app/assets/images/adva_cms/icons/magnifier.png +0 -0
  58. data/app/assets/images/adva_cms/icons/minus.gif +0 -0
  59. data/app/assets/images/adva_cms/icons/page_add.png +0 -0
  60. data/app/assets/images/adva_cms/icons/page_delete.png +0 -0
  61. data/app/assets/images/adva_cms/icons/page_edit.png +0 -0
  62. data/app/assets/images/adva_cms/icons/page_favorites.png +0 -0
  63. data/app/assets/images/adva_cms/icons/page_go.png +0 -0
  64. data/app/assets/images/adva_cms/icons/page_green.png +0 -0
  65. data/app/assets/images/adva_cms/icons/page_red.png +0 -0
  66. data/app/assets/images/adva_cms/icons/page_white_add.png +0 -0
  67. data/app/assets/images/adva_cms/icons/page_white_delete.png +0 -0
  68. data/app/assets/images/adva_cms/icons/page_white_edit.png +0 -0
  69. data/app/assets/images/adva_cms/icons/page_white_go.png +0 -0
  70. data/app/assets/images/adva_cms/icons/page_white_link.png +0 -0
  71. data/app/assets/images/adva_cms/icons/page_white_magnify.png +0 -0
  72. data/app/assets/images/adva_cms/icons/pencil.png +0 -0
  73. data/app/assets/images/adva_cms/icons/star.png +0 -0
  74. data/app/assets/images/adva_cms/icons/stop.png +0 -0
  75. data/app/assets/images/adva_cms/icons/tag_green.png +0 -0
  76. data/app/assets/images/adva_cms/icons/tick.png +0 -0
  77. data/app/assets/images/adva_cms/icons/zoom.png +0 -0
  78. data/app/assets/images/adva_cms/indicator.gif +0 -0
  79. data/app/assets/images/adva_cms/preview.png +0 -0
  80. data/app/assets/images/adva_cms/rails.png +0 -0
  81. data/app/assets/images/adva_cms/sortable_tree/drag.png +0 -0
  82. data/app/assets/images/adva_cms/theme_selected.png +0 -0
  83. data/app/assets/javascripts/admin.js +1 -0
  84. data/app/assets/javascripts/adva_cms/admin/jquery.admin.js +23 -0
  85. data/app/assets/javascripts/adva_cms/admin/jquery.article.js +22 -0
  86. data/app/assets/javascripts/adva_cms/admin/jquery.cached_pages.js +14 -0
  87. data/app/assets/javascripts/adva_cms/admin/jquery.table_tree.js +7 -0
  88. data/app/assets/javascripts/adva_cms/application.js +14 -0
  89. data/app/assets/javascripts/adva_cms/base.js +4 -0
  90. data/app/assets/javascripts/adva_cms/cookie.js +49 -0
  91. data/app/assets/javascripts/adva_cms/jquery.common.js +41 -0
  92. data/app/assets/javascripts/adva_cms/jquery.dates.js +51 -0
  93. data/app/assets/javascripts/adva_cms/jquery.flash.js +57 -0
  94. data/app/assets/javascripts/adva_cms/jquery.roles.js +25 -0
  95. data/app/assets/javascripts/adva_cms/jquery/jquery-lowpro.js +224 -0
  96. data/app/assets/javascripts/adva_cms/jquery/jquery.qtip.js +2085 -0
  97. data/app/assets/javascripts/adva_cms/jquery/jquery.table_tree.js +307 -0
  98. data/app/assets/javascripts/adva_cms/jquery/jquery.tablednd_0_5.js +386 -0
  99. data/app/assets/javascripts/adva_cms/json.js +139 -0
  100. data/app/assets/stylesheets/admin.css +1 -0
  101. data/app/assets/stylesheets/adva_cms/admin.css +16 -0
  102. data/app/assets/stylesheets/adva_cms/admin/alternate/common.css +76 -0
  103. data/app/assets/stylesheets/adva_cms/admin/alternate/forms.css +121 -0
  104. data/app/assets/stylesheets/adva_cms/admin/alternate/header.css +125 -0
  105. data/app/assets/stylesheets/adva_cms/admin/alternate/layout.css +103 -0
  106. data/app/assets/stylesheets/adva_cms/admin/alternate/lists.css +153 -0
  107. data/app/assets/stylesheets/adva_cms/admin/alternate/sidebar.css +65 -0
  108. data/app/assets/stylesheets/adva_cms/admin/alternate/top.css +123 -0
  109. data/app/assets/stylesheets/adva_cms/admin/common.css +76 -0
  110. data/app/assets/stylesheets/adva_cms/admin/content.css +11 -0
  111. data/app/assets/stylesheets/adva_cms/admin/forms.css +116 -0
  112. data/app/assets/stylesheets/adva_cms/admin/header.css +114 -0
  113. data/app/assets/stylesheets/adva_cms/admin/helptip.css +35 -0
  114. data/app/assets/stylesheets/adva_cms/admin/layout.css +56 -0
  115. data/app/assets/stylesheets/adva_cms/admin/lists.css +152 -0
  116. data/app/assets/stylesheets/adva_cms/admin/projection.css +118 -0
  117. data/app/assets/stylesheets/adva_cms/admin/reset.css +25 -0
  118. data/app/assets/stylesheets/adva_cms/admin/screen/top.css +8 -0
  119. data/app/assets/stylesheets/adva_cms/admin/sidebar.css +67 -0
  120. data/app/assets/stylesheets/adva_cms/admin/themes.css +49 -0
  121. data/app/assets/stylesheets/adva_cms/admin/top.css +83 -0
  122. data/app/assets/stylesheets/adva_cms/admin/users.css +40 -0
  123. data/app/assets/stylesheets/adva_cms/common.css +49 -0
  124. data/app/assets/stylesheets/adva_cms/default.css +201 -0
  125. data/app/assets/stylesheets/adva_cms/forms.css +60 -0
  126. data/app/assets/stylesheets/adva_cms/jquery/alternate/jquery.tooltip.css +13 -0
  127. data/app/assets/stylesheets/adva_cms/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  128. data/app/assets/stylesheets/adva_cms/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  129. data/app/assets/stylesheets/adva_cms/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  130. data/app/assets/stylesheets/adva_cms/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  131. data/app/assets/stylesheets/adva_cms/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  132. data/app/assets/stylesheets/adva_cms/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  133. data/app/assets/stylesheets/adva_cms/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  134. data/app/assets/stylesheets/adva_cms/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  135. data/app/assets/stylesheets/adva_cms/jquery/images/ui-icons_222222_256x240.png +0 -0
  136. data/app/assets/stylesheets/adva_cms/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  137. data/app/assets/stylesheets/adva_cms/jquery/images/ui-icons_454545_256x240.png +0 -0
  138. data/app/assets/stylesheets/adva_cms/jquery/images/ui-icons_888888_256x240.png +0 -0
  139. data/app/assets/stylesheets/adva_cms/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  140. data/app/assets/stylesheets/adva_cms/jquery/jquery-ui.css +406 -0
  141. data/app/assets/stylesheets/adva_cms/jquery/jquery.tooltip.css +10 -0
  142. data/app/assets/stylesheets/adva_cms/layout/login.css +8 -0
  143. data/app/assets/stylesheets/adva_cms/layout/simple.css +8 -0
  144. data/app/assets/stylesheets/adva_cms/menu.css +129 -0
  145. data/app/assets/stylesheets/adva_cms/reset.css +25 -0
  146. data/app/controllers/admin/base_controller.rb +101 -0
  147. data/app/controllers/admin/categories_controller.rb +3 -0
  148. data/app/controllers/admin/install_controller.rb +61 -0
  149. data/app/controllers/admin/page/articles_controller.rb +150 -0
  150. data/app/controllers/admin/page/categories_controller.rb +62 -0
  151. data/app/controllers/admin/page/contents_controller.rb +52 -0
  152. data/app/controllers/admin/page/links_controller.rb +69 -0
  153. data/app/controllers/admin/pages_controller.rb +2 -0
  154. data/app/controllers/admin/plugins_controller.rb +40 -0
  155. data/app/controllers/admin/sections_controller.rb +91 -0
  156. data/app/controllers/admin/sites_controller.rb +99 -0
  157. data/app/controllers/articles_controller.rb +81 -0
  158. data/app/controllers/base_controller.rb +82 -0
  159. data/app/helpers/admin/base_helper.rb +106 -0
  160. data/app/helpers/base_helper.rb +56 -0
  161. data/app/helpers/content_helper.rb +90 -0
  162. data/app/helpers/resource_helper.rb +127 -0
  163. data/app/models/article.rb +40 -0
  164. data/app/models/categorization.rb +4 -0
  165. data/app/models/category.rb +60 -0
  166. data/app/models/content.rb +155 -0
  167. data/app/models/event.rb +34 -0
  168. data/app/models/link.rb +4 -0
  169. data/app/models/page.rb +36 -0
  170. data/app/models/section.rb +126 -0
  171. data/app/models/site.rb +104 -0
  172. data/app/views/admin/cached_pages/_filter.html.erb +8 -0
  173. data/app/views/admin/cached_pages/destroy.js.erb +18 -0
  174. data/app/views/admin/cached_pages/index.html.erb +26 -0
  175. data/app/views/admin/install/confirmation.html.erb +10 -0
  176. data/app/views/admin/install/index.html.erb +38 -0
  177. data/app/views/admin/page/articles/_form.html.erb +40 -0
  178. data/app/views/admin/page/articles/_options.html.erb +20 -0
  179. data/app/views/admin/page/articles/edit.html.erb +15 -0
  180. data/app/views/admin/page/articles/new.html.erb +12 -0
  181. data/app/views/admin/page/categories/edit.html.erb +22 -0
  182. data/app/views/admin/page/categories/index.html.erb +23 -0
  183. data/app/views/admin/page/categories/new.html.erb +19 -0
  184. data/app/views/admin/page/contents/index.html.erb +40 -0
  185. data/app/views/admin/page/links/_form.html.erb +26 -0
  186. data/app/views/admin/page/links/_options.html.erb +23 -0
  187. data/app/views/admin/page/links/edit.html.erb +12 -0
  188. data/app/views/admin/page/links/new.html.erb +12 -0
  189. data/app/views/admin/plugins/_form.html.erb +11 -0
  190. data/app/views/admin/plugins/index.html.erb +16 -0
  191. data/app/views/admin/plugins/show.html.erb +43 -0
  192. data/app/views/admin/sections/_form.html.haml +20 -0
  193. data/app/views/admin/sections/edit.html.haml +6 -0
  194. data/app/views/admin/sections/index.html.erb +27 -0
  195. data/app/views/admin/sections/new.html.erb +29 -0
  196. data/app/views/admin/sections/settings/_page.html.haml +10 -0
  197. data/app/views/admin/shared/_header.html.erb +18 -0
  198. data/app/views/admin/shared/_language_select.html.erb +6 -0
  199. data/app/views/admin/shared/_section.html.erb +8 -0
  200. data/app/views/admin/shared/_section_summary.html.erb +23 -0
  201. data/app/views/admin/shared/_section_tree.html.erb +23 -0
  202. data/app/views/admin/sites/_email_notifications.html.erb +9 -0
  203. data/app/views/admin/sites/_form.html.erb +15 -0
  204. data/app/views/admin/sites/_recent_users.html.erb +11 -0
  205. data/app/views/admin/sites/_sections.html.erb +10 -0
  206. data/app/views/admin/sites/_unapproved_comments.html.erb +10 -0
  207. data/app/views/admin/sites/edit.html.erb +4 -0
  208. data/app/views/admin/sites/index.html.erb +21 -0
  209. data/app/views/admin/sites/multi_sites_disabled.html.erb +11 -0
  210. data/app/views/admin/sites/new.html.erb +21 -0
  211. data/app/views/admin/sites/show.html.erb +16 -0
  212. data/app/views/categories/_checkboxes.html.erb +12 -0
  213. data/app/views/layouts/admin.html.haml +50 -0
  214. data/app/views/layouts/default.html.erb +38 -0
  215. data/app/views/layouts/simple.html.erb +22 -0
  216. data/app/views/pages/articles/index.html.erb +10 -0
  217. data/app/views/pages/articles/show.html.erb +17 -0
  218. data/app/views/shared/_flash.html.erb +3 -0
  219. data/app/views/shared/_footer.html.erb +4 -0
  220. data/app/views/shared/_menu.html.erb +10 -0
  221. data/app/views/shared/_sidebar.html.erb +19 -0
  222. data/app/views/shared/messages/insufficient_permissions.html.erb +4 -0
  223. data/config/environment.rb +21 -0
  224. data/config/initializers/has_options.rb +2 -0
  225. data/config/initializers/has_permalink.rb +27 -0
  226. data/config/initializers/mailer.rb +12 -0
  227. data/config/initializers/menus.rb +184 -0
  228. data/config/initializers/roles.rb +91 -0
  229. data/config/initializers/settings.rb +26 -0
  230. data/config/initializers/site.rb +5 -0
  231. data/config/initializers/translations_are_a_pain.rb +9 -0
  232. data/config/locales/en.yml +1295 -0
  233. data/config/routes.rb +47 -0
  234. data/db/migrate/20080401000001_create_sites_table.rb +28 -0
  235. data/db/migrate/20080401000002_create_sections_table.rb +25 -0
  236. data/db/migrate/20080401000003_create_contents_table.rb +35 -0
  237. data/db/migrate/20080401000004_create_categories_table.rb +17 -0
  238. data/db/migrate/20080401000005_create_category_assignments.rb +12 -0
  239. data/db/migrate/20080401000006_create_taggable_tables.rb +26 -0
  240. data/db/migrate/20080710000000_create_plugin_configs.rb +13 -0
  241. data/db/migrate/20080715131051_plugin_owner_column.rb +13 -0
  242. data/db/migrate/20081208161500_add_content_type_to_join_tables.rb +10 -0
  243. data/db/migrate/20090216114034_rename_category_assignment_to_categorization.rb +13 -0
  244. data/db/migrate/20090305123429_move_sections_to_pages.rb +9 -0
  245. data/db/migrate/20090519132700_add_published_at_to_sections.rb +10 -0
  246. data/db/migrate/20090702085459_create_section_translations.rb +9 -0
  247. data/db/migrate/20090702200226_create_category_translations.rb +9 -0
  248. data/db/migrate/20090707171100_upgrade_paperclip_paths.rb +31 -0
  249. data/db/migrate/20090709111934_add_email_notification_to_site.rb +12 -0
  250. data/db/migrate/20091026000906_add_nesting_to_articles.rb +26 -0
  251. data/db/migrate/20140721000000_add_title_to_contents.rb +7 -0
  252. data/lib/adva_cms.rb +50 -0
  253. data/lib/adva_cms/version.rb +3 -0
  254. data/lib/core_ext.rb +7 -0
  255. data/lib/extensible_forms.rb +283 -0
  256. data/lib/has_options.rb +46 -0
  257. data/lib/html_diff.rb +48 -0
  258. data/lib/rails_ext.rb +15 -0
  259. data/lib/rails_ext/action_controller/cacheable_flash.rb +30 -0
  260. data/lib/rails_ext/action_controller/content_for_assignments.rb +105 -0
  261. data/lib/rails_ext/action_controller/default_params.rb +19 -0
  262. data/lib/rails_ext/action_controller/event_helper.rb +18 -0
  263. data/lib/rails_ext/action_controller/page_caching.rb +23 -0
  264. data/lib/rails_ext/action_controller/render_with_error_proc.rb +46 -0
  265. data/lib/rails_ext/action_controller/responds_to_parent.rb +46 -0
  266. data/lib/rails_ext/action_controller/url_for_returning.rb +12 -0
  267. data/lib/rails_ext/active_record/exists.rb +5 -0
  268. data/lib/rails_ext/active_record/sti_instantiation.rb +35 -0
  269. data/lib/rails_ext/active_record/sticky_changes.rb +30 -0
  270. data/lib/rails_ext/railties/plugin.rb +58 -0
  271. data/lib/rails_ext/railties/plugin_configuration.rb +72 -0
  272. data/lib/rails_ext/railties/plugin_initializers.rb +25 -0
  273. data/lib/registry.rb +49 -0
  274. data/lib/tasks/adva_cms.rake +178 -0
  275. data/lib/tasks/translation.rake +69 -0
  276. data/lib/time_hacks.rb +57 -0
  277. data/lib/webrat_patch.rb +11 -0
  278. data/locale/rails/fr.yml +123 -0
  279. data/test/NOTES +56 -0
  280. data/test/contexts.rb +365 -0
  281. data/test/fixtures.rb +190 -0
  282. data/test/fixtures/templates/alternative_templates/index.html.erb +1 -0
  283. data/test/fixtures/templates/context_templates_test/index.html.erb +1 -0
  284. data/test/fixtures/templates/context_templates_test/show.html.erb +0 -0
  285. data/test/fixtures/templates/layouts/alternative.html.erb +0 -0
  286. data/test/fixtures/templates/layouts/default.html.erb +0 -0
  287. data/test/fixtures/templates/menu/shared/_menu.html.erb +8 -0
  288. data/test/functional/admin/articles_controller_test.rb +329 -0
  289. data/test/functional/admin/base_controller_test.rb +68 -0
  290. data/test/functional/admin/cached_pages_controller_test.rb +66 -0
  291. data/test/functional/admin/categories_controller_test.rb +164 -0
  292. data/test/functional/admin/cells_controller_spec.rb +32 -0
  293. data/test/functional/admin/install_controller_test.rb +89 -0
  294. data/test/functional/admin/plugins_controller_test.rb +93 -0
  295. data/test/functional/admin/sections_controller_test.rb +201 -0
  296. data/test/functional/admin/sites_controller_test.rb +240 -0
  297. data/test/functional/asset_tag_expansions_test.rb +82 -0
  298. data/test/functional/base_controller_test.rb +73 -0
  299. data/test/functional/page_articles_controller_test.rb +168 -0
  300. data/test/functional/page_articles_routes_test.rb +73 -0
  301. data/test/integration/admin/cached_pages_test.rb +43 -0
  302. data/test/integration/admin/categories_test.rb +66 -0
  303. data/test/integration/admin/custom_templates_test.rb +42 -0
  304. data/test/integration/admin/filtering_articles_test.rb +32 -0
  305. data/test/integration/admin/plugins.rb +32 -0
  306. data/test/integration/admin/section_article_test.rb +150 -0
  307. data/test/integration/admin/section_test.rb +88 -0
  308. data/test/integration/admin/sites_test.rb +48 -0
  309. data/test/integration/installation_test.rb +109 -0
  310. data/test/integration/page_article_comment_test.rb +51 -0
  311. data/test/integration/page_article_test.rb +87 -0
  312. data/test/integration/section_index_test.rb +37 -0
  313. data/test/javascript/assets/jquery-lowpro.js +224 -0
  314. data/test/javascript/assets/jquery-ui.js +298 -0
  315. data/test/javascript/assets/jquery.js +4376 -0
  316. data/test/javascript/assets/testrunner.js +815 -0
  317. data/test/javascript/assets/testsuite.css +120 -0
  318. data/test/javascript/lib/jstest.rb +588 -0
  319. data/test/javascript/templates/test_case.erb +33 -0
  320. data/test/plugins/adva_context_templates/context_templates_test.rb +138 -0
  321. data/test/plugins/adva_post_ping/controller/integration_test.rb +78 -0
  322. data/test/plugins/adva_post_ping/post_ping_test.rb +94 -0
  323. data/test/plugins/adva_url_history/article_test.rb +94 -0
  324. data/test/plugins/adva_url_history/init_url_history.rb +18 -0
  325. data/test/plugins/adva_url_history/section_test.rb +49 -0
  326. data/test/test_helper.rb +75 -0
  327. data/test/test_helper/clear_directories.rb +16 -0
  328. data/test/test_helper/ensure_single_site_mode.rb +10 -0
  329. data/test/test_helper/extensions/cacheable_flash.rb +14 -0
  330. data/test/test_helper/extensions/cronjob.rb +11 -0
  331. data/test/test_helper/extensions/even_test_log.rb +21 -0
  332. data/test/test_helper/extensions/integration_test.rb +78 -0
  333. data/test/test_helper/extensions/matchy.rb +365 -0
  334. data/test/test_helper/extensions/matchy_adva_cms.rb +441 -0
  335. data/test/test_helper/extensions/rails_patch.rb +40 -0
  336. data/test/test_helper/extensions/rr.rb +7 -0
  337. data/test/test_helper/extensions/test_unit.rb +35 -0
  338. data/test/test_helper/extensions/with_sugar.rb +166 -0
  339. data/test/test_helper/parse_options.rb +18 -0
  340. data/test/test_helper/setup_db_transaction.rb +15 -0
  341. data/test/test_helper/setup_webrat.rb +9 -0
  342. data/test/test_helper/test_server/init.rb +15 -0
  343. data/test/unit/helpers/admin/base_helper_test.rb +139 -0
  344. data/test/unit/helpers/base_helper_spec.rb +54 -0
  345. data/test/unit/helpers/base_helper_test.rb +165 -0
  346. data/test/unit/helpers/content_helper_test.rb +127 -0
  347. data/test/unit/helpers/resource_helper_test.rb +180 -0
  348. data/test/unit/i18n_test.rb +22 -0
  349. data/test/unit/lib/cells_ext_spec.rb +96 -0
  350. data/test/unit/lib/extensible_forms_test.rb +362 -0
  351. data/test/unit/lib/menu_test.rb +119 -0
  352. data/test/unit/lib/rails_ext/content_for_assignments_test.rb +75 -0
  353. data/test/unit/lib/rails_ext/plugin_configuration_test.rb +40 -0
  354. data/test/unit/lib/rails_ext/sticky_changes_test.rb +33 -0
  355. data/test/unit/lib/registry_test.rb +91 -0
  356. data/test/unit/lib/routing_filter/routing_filter_categories_spec.rb +63 -0
  357. data/test/unit/lib/routing_filter/routing_filter_categories_test.rb +159 -0
  358. data/test/unit/lib/routing_filter/routing_filter_locale_spec.rb +73 -0
  359. data/test/unit/lib/routing_filter/routing_filter_root_blog_archive_spec.rb +40 -0
  360. data/test/unit/lib/routing_filter/routing_filter_root_section_articles_spec.rb +48 -0
  361. data/test/unit/lib/routing_filter/routing_filter_root_wikipages_spec.rb +40 -0
  362. data/test/unit/lib/routing_filter/routing_filter_sections_spec.rb +143 -0
  363. data/test/unit/lib/routing_filter/routing_filter_sections_test.rb +32 -0
  364. data/test/unit/lib/routing_filter/routing_filter_sets_test.rb +86 -0
  365. data/test/unit/models/article_test.rb +191 -0
  366. data/test/unit/models/category_test.rb +68 -0
  367. data/test/unit/models/content_test.rb +409 -0
  368. data/test/unit/models/counter_test.rb +43 -0
  369. data/test/unit/models/event_test.rb +41 -0
  370. data/test/unit/models/nested_categories_test.rb +34 -0
  371. data/test/unit/models/page_test.rb +63 -0
  372. data/test/unit/models/section_test.rb +315 -0
  373. data/test/unit/models/site_test.rb +199 -0
  374. data/test/unit/observers/activities_article_observer_test.rb +42 -0
  375. data/vendor/gems/belongs_to_cacheable/.gitignore +17 -0
  376. data/vendor/gems/belongs_to_cacheable/Gemfile +4 -0
  377. data/vendor/gems/belongs_to_cacheable/LICENSE +22 -0
  378. data/vendor/gems/belongs_to_cacheable/README.md +29 -0
  379. data/vendor/gems/belongs_to_cacheable/Rakefile +2 -0
  380. data/vendor/gems/belongs_to_cacheable/belongs_to_cacheable.gemspec +22 -0
  381. data/vendor/gems/belongs_to_cacheable/init.rb +1 -0
  382. data/vendor/gems/belongs_to_cacheable/lib/active_record/belongs_to_cacheable.rb +77 -0
  383. data/vendor/gems/belongs_to_cacheable/lib/belongs_to_cacheable.rb +3 -0
  384. data/vendor/gems/belongs_to_cacheable/lib/belongs_to_cacheable/version.rb +3 -0
  385. data/vendor/gems/belongs_to_cacheable/spec/belongs_to_cacheable_spec.rb +52 -0
  386. data/vendor/gems/belongs_to_cacheable/spec/spec_helper.rb +50 -0
  387. data/vendor/gems/filtered_column/.gitignore +17 -0
  388. data/vendor/gems/filtered_column/Gemfile +4 -0
  389. data/vendor/gems/filtered_column/LICENSE +22 -0
  390. data/vendor/gems/filtered_column/README +4 -0
  391. data/vendor/gems/filtered_column/README.md +29 -0
  392. data/vendor/gems/filtered_column/Rakefile +23 -0
  393. data/vendor/gems/filtered_column/filtered_column.gemspec +17 -0
  394. data/vendor/gems/filtered_column/lib/filtered_column.rb +17 -0
  395. data/vendor/gems/filtered_column/lib/filtered_column/filters/base.rb +28 -0
  396. data/vendor/gems/filtered_column/lib/filtered_column/filters/smartypants_filter.rb +14 -0
  397. data/vendor/gems/filtered_column/lib/filtered_column/filters/textile_filter.rb +13 -0
  398. data/vendor/gems/filtered_column/lib/filtered_column/macros/base.rb +25 -0
  399. data/vendor/gems/filtered_column/lib/filtered_column/mixin.rb +46 -0
  400. data/vendor/gems/filtered_column/lib/filtered_column/processor.rb +52 -0
  401. data/vendor/gems/filtered_column/lib/filtered_column/version.rb +3 -0
  402. data/vendor/gems/filtered_column/tasks/filtered_column_tasks.rake +4 -0
  403. data/vendor/gems/filtered_column/test/abstract_unit.rb +73 -0
  404. data/vendor/gems/filtered_column/test/filtered_column_test.rb +53 -0
  405. data/vendor/gems/filtered_column/test/macro_filter_test.rb +23 -0
  406. data/vendor/gems/has_counter/.gitignore +17 -0
  407. data/vendor/gems/has_counter/Gemfile +4 -0
  408. data/vendor/gems/has_counter/LICENSE +22 -0
  409. data/vendor/gems/has_counter/MIT-LICENSE +20 -0
  410. data/vendor/gems/has_counter/README.markdown +64 -0
  411. data/vendor/gems/has_counter/README.md +29 -0
  412. data/vendor/gems/has_counter/Rakefile +2 -0
  413. data/vendor/gems/has_counter/db/migrate/20080601194338_create_counters_table.rb.rb +13 -0
  414. data/vendor/gems/has_counter/has_counter.gemspec +17 -0
  415. data/vendor/gems/has_counter/lib/active_record/has_counter.rb +64 -0
  416. data/vendor/gems/has_counter/lib/counter.rb +23 -0
  417. data/vendor/gems/has_counter/lib/has_counter.rb +4 -0
  418. data/vendor/gems/has_counter/lib/has_counter/version.rb +3 -0
  419. data/vendor/gems/has_counter/spec/has_counter.spec.log +0 -0
  420. data/vendor/gems/has_counter/spec/has_counter.sqlite3.db +0 -0
  421. data/vendor/gems/has_counter/spec/has_counter_spec.rb +55 -0
  422. data/vendor/gems/has_counter/spec/spec_helper.rb +117 -0
  423. data/vendor/gems/has_filter/.gitignore +17 -0
  424. data/vendor/gems/has_filter/Gemfile +4 -0
  425. data/vendor/gems/has_filter/LICENSE +22 -0
  426. data/vendor/gems/has_filter/README.md +29 -0
  427. data/vendor/gems/has_filter/Rakefile +2 -0
  428. data/vendor/gems/has_filter/app/assets/images/has_filter/filter_add.png +0 -0
  429. data/vendor/gems/has_filter/app/assets/images/has_filter/filter_button_left.png +0 -0
  430. data/vendor/gems/has_filter/app/assets/images/has_filter/filter_button_right.png +0 -0
  431. data/vendor/gems/has_filter/app/assets/images/has_filter/filter_remove.png +0 -0
  432. data/vendor/gems/has_filter/app/assets/javascripts/has_filter/filter.js +35 -0
  433. data/vendor/gems/has_filter/app/assets/javascripts/has_filter/jquery.filter.js +23 -0
  434. data/vendor/gems/has_filter/app/assets/stylesheets/has_filter/alternate/filter.css +102 -0
  435. data/vendor/gems/has_filter/app/assets/stylesheets/has_filter/filter.css +100 -0
  436. data/vendor/gems/has_filter/app/helpers/filter_helper.rb +3 -0
  437. data/vendor/gems/has_filter/has_filter.gemspec +17 -0
  438. data/vendor/gems/has_filter/init.rb +3 -0
  439. data/vendor/gems/has_filter/lib/has_filter.rb +22 -0
  440. data/vendor/gems/has_filter/lib/has_filter/active_record/act_macro.rb +102 -0
  441. data/vendor/gems/has_filter/lib/has_filter/filter.rb +17 -0
  442. data/vendor/gems/has_filter/lib/has_filter/filter/base.rb +67 -0
  443. data/vendor/gems/has_filter/lib/has_filter/filter/categorized.rb +24 -0
  444. data/vendor/gems/has_filter/lib/has_filter/filter/chain.rb +45 -0
  445. data/vendor/gems/has_filter/lib/has_filter/filter/set.rb +80 -0
  446. data/vendor/gems/has_filter/lib/has_filter/filter/state.rb +25 -0
  447. data/vendor/gems/has_filter/lib/has_filter/filter/tagged.rb +22 -0
  448. data/vendor/gems/has_filter/lib/has_filter/filter/text.rb +55 -0
  449. data/vendor/gems/has_filter/lib/has_filter/version.rb +3 -0
  450. data/vendor/gems/has_filter/test/db/setup.rb +45 -0
  451. data/vendor/gems/has_filter/test/db/test.sqlite3.db +0 -0
  452. data/vendor/gems/has_filter/test/fixtures.rb +15 -0
  453. data/vendor/gems/has_filter/test/has_filter/filter_chain_test.rb +41 -0
  454. data/vendor/gems/has_filter/test/has_filter/filter_scopes_test.rb +102 -0
  455. data/vendor/gems/has_filter/test/has_filter/filter_tags_test.rb +113 -0
  456. data/vendor/gems/has_filter/test/has_filter/integration.rb +15 -0
  457. data/vendor/gems/has_filter/test/has_filter/scopes_test.rb +48 -0
  458. data/vendor/gems/has_filter/test/log/test.log +34346 -0
  459. data/vendor/gems/has_filter/test/models.rb +23 -0
  460. data/vendor/gems/has_filter/test/templates/has_filter/test/index.html.erb +5 -0
  461. data/vendor/gems/has_filter/test/test_helper.rb +66 -0
  462. data/vendor/gems/simple_taggable/.gitignore +17 -0
  463. data/vendor/gems/simple_taggable/Gemfile +4 -0
  464. data/vendor/gems/simple_taggable/LICENSE +22 -0
  465. data/vendor/gems/simple_taggable/README +24 -0
  466. data/vendor/gems/simple_taggable/README.md +29 -0
  467. data/vendor/gems/simple_taggable/Rakefile +2 -0
  468. data/vendor/gems/simple_taggable/lib/simple_taggable.rb +153 -0
  469. data/vendor/gems/simple_taggable/lib/simple_taggable/version.rb +3 -0
  470. data/vendor/gems/simple_taggable/lib/tag.rb +31 -0
  471. data/vendor/gems/simple_taggable/lib/tag_list.rb +90 -0
  472. data/vendor/gems/simple_taggable/lib/tagging.rb +8 -0
  473. data/vendor/gems/simple_taggable/simple_taggable.gemspec +17 -0
  474. data/vendor/gems/simple_taggable/test/db/schema.rb +41 -0
  475. data/vendor/gems/simple_taggable/test/db/simple_taggable.sqlite3.db +0 -0
  476. data/vendor/gems/simple_taggable/test/fixtures/magazine.rb +3 -0
  477. data/vendor/gems/simple_taggable/test/fixtures/magazines.yml +2 -0
  478. data/vendor/gems/simple_taggable/test/fixtures/photo.rb +8 -0
  479. data/vendor/gems/simple_taggable/test/fixtures/photos.yml +19 -0
  480. data/vendor/gems/simple_taggable/test/fixtures/post.rb +5 -0
  481. data/vendor/gems/simple_taggable/test/fixtures/posts.yml +27 -0
  482. data/vendor/gems/simple_taggable/test/fixtures/subscription.rb +4 -0
  483. data/vendor/gems/simple_taggable/test/fixtures/subscriptions.yml +3 -0
  484. data/vendor/gems/simple_taggable/test/fixtures/taggings.yml +112 -0
  485. data/vendor/gems/simple_taggable/test/fixtures/tags.yml +14 -0
  486. data/vendor/gems/simple_taggable/test/fixtures/user.rb +6 -0
  487. data/vendor/gems/simple_taggable/test/fixtures/users.yml +5 -0
  488. data/vendor/gems/simple_taggable/test/log/simple_taggable.log +1614 -0
  489. data/vendor/gems/simple_taggable/test/simple_taggable_test.rb +226 -0
  490. data/vendor/gems/simple_taggable/test/tag_list_test.rb +105 -0
  491. data/vendor/gems/simple_taggable/test/test_helper.rb +80 -0
  492. data/vendor/gems/table_builder/.gitignore +17 -0
  493. data/vendor/gems/table_builder/Gemfile +4 -0
  494. data/vendor/gems/table_builder/LICENSE +22 -0
  495. data/vendor/gems/table_builder/README.md +29 -0
  496. data/vendor/gems/table_builder/Rakefile +2 -0
  497. data/vendor/gems/table_builder/lib/table_builder.rb +27 -0
  498. data/vendor/gems/table_builder/lib/table_builder/body.rb +28 -0
  499. data/vendor/gems/table_builder/lib/table_builder/cell.rb +21 -0
  500. data/vendor/gems/table_builder/lib/table_builder/column.rb +26 -0
  501. data/vendor/gems/table_builder/lib/table_builder/foot.rb +6 -0
  502. data/vendor/gems/table_builder/lib/table_builder/head.rb +16 -0
  503. data/vendor/gems/table_builder/lib/table_builder/row.rb +40 -0
  504. data/vendor/gems/table_builder/lib/table_builder/rows.rb +26 -0
  505. data/vendor/gems/table_builder/lib/table_builder/table.rb +75 -0
  506. data/vendor/gems/table_builder/lib/table_builder/tag.rb +58 -0
  507. data/vendor/gems/table_builder/lib/table_builder/version.rb +3 -0
  508. data/vendor/gems/table_builder/table_builder.gemspec +17 -0
  509. data/vendor/gems/table_builder/test/fixtures/templates/table_all.html.erb +20 -0
  510. data/vendor/gems/table_builder/test/fixtures/templates/table_auto_body.html.erb +3 -0
  511. data/vendor/gems/table_builder/test/fixtures/templates/table_auto_columns.html.erb +1 -0
  512. data/vendor/gems/table_builder/test/fixtures/templates/table_simple.html.erb +7 -0
  513. data/vendor/gems/table_builder/test/table_builder/table_test.rb +230 -0
  514. data/vendor/gems/table_builder/test/test_helper.rb +49 -0
  515. data/vendor/gems/tags/.gitignore +17 -0
  516. data/vendor/gems/tags/Gemfile +4 -0
  517. data/vendor/gems/tags/LICENSE +22 -0
  518. data/vendor/gems/tags/README.md +29 -0
  519. data/vendor/gems/tags/Rakefile +2 -0
  520. data/vendor/gems/tags/lib/breadcrumbs.rb +13 -0
  521. data/vendor/gems/tags/lib/menu.rb +179 -0
  522. data/vendor/gems/tags/lib/menu/builder.rb +74 -0
  523. data/vendor/gems/tags/lib/tags.rb +7 -0
  524. data/vendor/gems/tags/lib/tags/tag.rb +125 -0
  525. data/vendor/gems/tags/lib/tags/version.rb +3 -0
  526. data/vendor/gems/tags/tags.gemspec +17 -0
  527. data/vendor/gems/tags/test/tags/menu_test.rb +173 -0
  528. data/vendor/gems/tags/test/tags/tag_test.rb +13 -0
  529. data/vendor/gems/tags/test/test_helper.rb +18 -0
  530. data/vendor/gems/xss_terminate/.gitignore +17 -0
  531. data/vendor/gems/xss_terminate/Gemfile +4 -0
  532. data/vendor/gems/xss_terminate/LICENSE +22 -0
  533. data/vendor/gems/xss_terminate/MIT-LICENSE +20 -0
  534. data/vendor/gems/xss_terminate/README +94 -0
  535. data/vendor/gems/xss_terminate/README.md +29 -0
  536. data/vendor/gems/xss_terminate/Rakefile +23 -0
  537. data/vendor/gems/xss_terminate/lib/html5lib_sanitize.rb +2453 -0
  538. data/vendor/gems/xss_terminate/lib/rails_sanitize.rb +8 -0
  539. data/vendor/gems/xss_terminate/lib/xss_terminate.rb +141 -0
  540. data/vendor/gems/xss_terminate/lib/xss_terminate/version.rb +3 -0
  541. data/vendor/gems/xss_terminate/tasks/xss_terminate_tasks.rake +7 -0
  542. data/vendor/gems/xss_terminate/test/models/comment.rb +5 -0
  543. data/vendor/gems/xss_terminate/test/models/entry.rb +7 -0
  544. data/vendor/gems/xss_terminate/test/models/message.rb +3 -0
  545. data/vendor/gems/xss_terminate/test/models/person.rb +5 -0
  546. data/vendor/gems/xss_terminate/test/models/review.rb +5 -0
  547. data/vendor/gems/xss_terminate/test/schema.rb +34 -0
  548. data/vendor/gems/xss_terminate/test/setup_test.rb +16 -0
  549. data/vendor/gems/xss_terminate/test/xss_terminate_test.rb +50 -0
  550. data/vendor/gems/xss_terminate/xss_terminate.gemspec +17 -0
  551. metadata +744 -0
@@ -0,0 +1,240 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
+
3
+ # TODO
4
+ # try stubbing #perform_action for it_guards_permissions
5
+ # specify update_all action
6
+ # somehow publish passed/failed expectations from RR to test/unit result?
7
+ # make --with=access_control,caching options accessible from the console (Test::Unit runner)
8
+
9
+ # With.aspects << :access_control
10
+
11
+ class AdminSitesControllerTest < ActionController::TestCase
12
+ tests Admin::SitesController
13
+
14
+ # FIXME test in single_site_mode, too
15
+ with_common :multi_sites_enabled, :a_site
16
+
17
+ def default_params
18
+ { :site_id => @site.id, :section_id => @page.id }
19
+ end
20
+
21
+ test "is an Admin::BaseController" do
22
+ @controller.should be_kind_of(Admin::BaseController)
23
+ end
24
+
25
+ describe "routing" do
26
+ with_options :controller => 'admin/sites' do |r|
27
+ r.it_maps :get, "/admin/sites", :action => 'index'
28
+ r.it_maps :get, "/admin/sites/1", :action => 'show', :id => '1'
29
+ r.it_maps :get, "/admin/sites/new", :action => 'new'
30
+ r.it_maps :post, "/admin/sites", :action => 'create'
31
+ r.it_maps :get, "/admin/sites/1/edit", :action => 'edit', :id => '1'
32
+ r.it_maps :put, "/admin/sites/1", :action => 'update', :id => '1'
33
+ r.it_maps :delete, "/admin/sites/1", :action => 'destroy', :id => '1'
34
+ end
35
+ end
36
+
37
+ describe "GET to :index" do
38
+ with :is_superuser do
39
+ action { get :index }
40
+
41
+ # FIXME
42
+ # hard to test because :admin and :moderator roles need a context and
43
+ # BaseController#require_authentication tests for has_role?(:admin)
44
+ # it_guards_permissions :show, :site
45
+
46
+ with :access_granted do
47
+ it_assigns :sites
48
+ it_renders :template, :index do
49
+ has_tag 'table[id=sites] tbody tr', :count => Site.count do
50
+ has_tag 'a[href=?]', admin_site_path(@site), @site.name
51
+ has_tag 'a[href=?][class=?]', admin_site_path(@site), 'delete site', /delete/i
52
+ has_tag 'a[href=?][class=?]', edit_admin_site_path(@site), 'edit site', /settings/i
53
+ has_tag 'a[href=?][class=?]', "http://#{@site.host}", 'show site'
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+ describe "GET to :show" do
61
+ with :is_superuser do
62
+ action { get :show, :id => @site.id }
63
+
64
+ it_guards_permissions :show, :site
65
+
66
+ with :access_granted do
67
+ it_assigns :site
68
+ it_renders :template, :show do
69
+ # FIXME
70
+ # :partial => 'admin/activities/activities'
71
+ # :partial => 'recent_users'
72
+ # :partial => 'unapproved_comments'
73
+ end
74
+ end
75
+ end
76
+ end
77
+
78
+ describe "GET to :show 'require_authentication' does not succeed for a user without global role on site" do
79
+ action { get :show, :id => @site.id }
80
+
81
+ it_guards_permissions :show, :site
82
+
83
+ with :is_moderator do
84
+ it_assigns :site
85
+ it_redirects_to { login_url(:return_to => admin_site_url(@site)) }
86
+ end
87
+ end
88
+
89
+ describe "GET to :show 'require_authentication' does succeed for a user with global role on site" do
90
+ action { get :show, :id => @site.id }
91
+
92
+ it_guards_permissions :show, :site
93
+
94
+ with :is_admin do
95
+ it_assigns :site
96
+ it_renders :template, :show
97
+ end
98
+ end
99
+
100
+ describe "GET to :show for a site 'require_authentication' succeeds for a superuser" do
101
+ action { get :show, :id => @site.id }
102
+
103
+ it_guards_permissions :show, :site
104
+
105
+ with :is_superuser do
106
+ it_assigns :site
107
+ it_renders :template, :show
108
+ end
109
+ end
110
+
111
+ describe "GET to :index 'require_authentication' succeeds for a superuser" do
112
+ action { get :index }
113
+
114
+ it_guards_permissions :show, :site
115
+
116
+ with :is_superuser do
117
+ it_renders :template, :index
118
+ end
119
+ end
120
+
121
+ describe "GET to :index 'require_authentication' does not succeed for a not logged in user" do
122
+ action { get :show, :id => @site.id }
123
+
124
+ it_guards_permissions :show, :site
125
+
126
+ it_assigns :site
127
+ it_redirects_to { login_url(:return_to => admin_site_url(@site)) }
128
+ end
129
+
130
+ describe "GET to :new" do
131
+ with :is_superuser do
132
+ action { get :new }
133
+
134
+ # FIXME
135
+ # hard to test because :admin and :moderator roles need a context and
136
+ # BaseController#require_authentication tests for has_role?(:admin)
137
+ # it_guards_permissions :create, :site
138
+
139
+ with :access_granted do
140
+ it_renders :template, :new do
141
+ has_form_posting_to admin_sites_path do
142
+ has_tag 'input[name=?]', 'section[title]'
143
+ has_tag 'select[name=?]', 'section[type]'
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end
149
+
150
+ describe "POST to :create" do
151
+ with :is_superuser do
152
+ action { post :create, @params }
153
+
154
+ with :valid_site_params do
155
+ # FIXME
156
+ # hard to test because :admin and :moderator roles need a context and
157
+ # BaseController#require_authentication tests for has_role?(:admin)
158
+ # it_guards_permissions :create, :site
159
+
160
+ with :access_granted do
161
+ it_changes 'Site.count' => 1
162
+ it_redirects_to { admin_site_url(Site.last) } # urgs
163
+ it_assigns_flash_cookie :notice => :not_nil
164
+ end
165
+ end
166
+
167
+ with :invalid_site_params do
168
+ it_renders :template, :new
169
+ it_assigns_flash_cookie :error => :not_nil
170
+ end
171
+ end
172
+ end
173
+
174
+ describe "GET to :edit" do
175
+ with :is_superuser do
176
+ action { get :edit, :id => @site.id }
177
+
178
+ it_guards_permissions :update, :site
179
+
180
+ with :access_granted do
181
+ it_assigns :site
182
+ it_renders :template, :edit do
183
+ has_form_putting_to admin_site_path(@site) do
184
+ # FIXME
185
+ # SpamEngine::Filter.names.each do |name|
186
+ # next if name == 'Default'
187
+ # response.should have_tag('input[type=?][name=?][value=?]', 'checkbox', 'site[spam_options][filters][]', name)
188
+ # end
189
+ # SpamEngine::Filter.names.each do |name|
190
+ # template.should_receive(:render).with hash_including(:partial => "spam/#{name.downcase}_settings")
191
+ # end
192
+ end
193
+ end
194
+ end
195
+ end
196
+ end
197
+
198
+ describe "PUT to :update" do
199
+ with :is_superuser do
200
+ action { put :update, @params.merge(:id => @site.id) }
201
+
202
+ with :valid_site_params do
203
+ before { @params[:site][:name] = 'name changed' }
204
+
205
+ it_guards_permissions :update, :site
206
+
207
+ with :access_granted do
208
+ it_assigns :site
209
+ it_updates :site
210
+ it_redirects_to { edit_admin_site_url(@site) }
211
+ it_assigns_flash_cookie :notice => :not_nil
212
+
213
+ it "updates the site with the site params" do
214
+ @site.reload.name.should =~ /changed/
215
+ end
216
+ end
217
+ end
218
+
219
+ with :invalid_site_params do
220
+ it_renders :template, :edit
221
+ it_assigns_flash_cookie :error => :not_nil
222
+ end
223
+ end
224
+ end
225
+
226
+ describe "DELETE to :destroy" do
227
+ with :is_superuser do
228
+ action { delete :destroy, :id => @site.id }
229
+
230
+ it_guards_permissions :destroy, :site
231
+
232
+ with :access_granted do
233
+ it_assigns :site
234
+ it_destroys :site
235
+ it_redirects_to { admin_sites_url }
236
+ it_assigns_flash_cookie :notice => :not_nil
237
+ end
238
+ end
239
+ end
240
+ end
@@ -0,0 +1,82 @@
1
+ # require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ #
3
+ # def expected_asset_expansions
4
+ # {
5
+ # :default => {
6
+ # :javascripts => {
7
+ # :adva_cms => %w( adva_cms/prototype.js adva_cms/effects.js adva_cms/lowpro.js
8
+ # adva_cms/flash.js adva_cms/cookie.js adva_cms/json.js
9
+ # adva_cms/parseuri.js adva_cms/roles.js adva_cms/application.js ),
10
+ # :adva_calendar => %w( adva_calendar/calendar.js )
11
+ # },
12
+ # :stylesheets => {
13
+ # :adva_cms => %w( adva_cms/default.css adva_cms/common.css adva_cms/forms.css
14
+ # adva_cms/comments.css adva_cms/forum.css )
15
+ # }
16
+ # },
17
+ # :login => {
18
+ # :javascripts => {
19
+ # :adva_cms => %w( adva_cms/prototype.js adva_cms/effects.js adva_cms/lowpro.js
20
+ # adva_cms/flash.js adva_cms/cookie.js adva_cms/json.js
21
+ # adva_cms/dragdrop.js adva_cms/sortable_tree/sortable_tree.js
22
+ # adva_cms/admin/admin.js adva_cms/admin/article.js
23
+ # adva_cms/admin/smart_form.js adva_cms/admin/sortable_tree.js
24
+ # adva_cms/admin/sortable_list.js adva_cms/admin/spotlight.js
25
+ # adva_cms/admin/asset.js adva_cms/admin/asset_widget.js
26
+ # adva_cms/admin/comment.js adva_cms/admin/wikipage.js ),
27
+ # :adva_calendar => %w( adva_calendar/admin/calendar.js )
28
+ # },
29
+ # :stylesheets => {
30
+ # :adva_cms => %w( adva_cms/admin/form.css adva_cms/admin/lists.css
31
+ # adva_cms/admin/sortable_tree.css adva_cms/admin/themes.css
32
+ # adva_cms/admin/users.css adva_cms/admin/widgets.css
33
+ # adva_cms/admin/activities.css adva_cms/admin/assets.css
34
+ # adva_cms/admin/layout/base.css adva_cms/admin/layout/login.css )
35
+ # }
36
+ # },
37
+ # :simple => {
38
+ # :javascripts => {
39
+ # :adva_cms => %w( adva_cms/admin/base.css adva_cms/admin/form.css
40
+ # adva_cms/admin/layout/base.css adva_cms/admin/layout/simple.css ),
41
+ # :adva_calendar => %w( adva_calendar/calendar.js )
42
+ # },
43
+ # :stylesheets => {
44
+ # :adva_cms => %w( adva_cms/prototype.js adva_cms/effects.js adva_cms/lowpro.js
45
+ # adva_cms/flash.js adva_cms/cookie.js adva_cms/json.js
46
+ # adva_cms/dragdrop.js adva_cms/sortable_tree/sortable_tree.js )
47
+ # }
48
+ # },
49
+ # :admin => {
50
+ # :javascripts => {
51
+ # :adva_cms => %w( adva_cms/prototype.js adva_cms/effects.js adva_cms/lowpro.js
52
+ # adva_cms/flash.js adva_cms/cookie.js adva_cms/json.js
53
+ # adva_cms/dragdrop.js adva_cms/sortable_tree/sortable_tree.js
54
+ # adva_cms/admin/admin.js adva_cms/admin/article.js
55
+ # adva_cms/admin/smart_form.js adva_cms/admin/sortable_tree.js
56
+ # adva_cms/admin/sortable_list.js adva_cms/admin/spotlight.js
57
+ # adva_cms/admin/asset.js adva_cms/admin/asset_widget.js
58
+ # adva_cms/admin/comment.js adva_cms/admin/wikipage.js ),
59
+ # :adva_calendar => %w( adva_calendar/admin/calendar.js )
60
+ # },
61
+ # :stylesheets => {
62
+ # :adva_cms => %w( adva_cms/admin/form.css adva_cms/admin/lists.css
63
+ # adva_cms/admin/sortable_tree.css adva_cms/admin/themes.css
64
+ # adva_cms/admin/users.css adva_cms/admin/widgets.css
65
+ # adva_cms/admin/activities.css adva_cms/admin/assets.css )
66
+ # }
67
+ # }
68
+ # }
69
+ # end
70
+ #
71
+ # class AssetTagExpansionsTest < ActionController::TestCase
72
+ # tests ArticlesController
73
+ # with_common :a_page
74
+ #
75
+ # describe "GET to frontend page page" do
76
+ # action { get :index, params_from("/a-page") }
77
+ # it "includes the appropriate asset tags" do
78
+ #
79
+ # end
80
+ # end
81
+ # end
82
+ #
@@ -0,0 +1,73 @@
1
+ # FIXME spec common behaviour on BaseController
2
+
3
+ # require File.dirname(__FILE__) + '/../spec_helper'
4
+ #
5
+ # describe BaseController do
6
+ # include SpecControllerHelper
7
+ #
8
+ # before :each do
9
+ # stub_scenario :empty_site
10
+ # end
11
+ #
12
+ # it "sets the current locale" do
13
+ # BaseController.before_filters.should include(:set_locale)
14
+ # end
15
+ #
16
+ # it "sets the current site" do
17
+ # BaseController.before_filters.should include(:set_site)
18
+ # end
19
+ #
20
+ # it "finds the current site from site_id param" do
21
+ # controller.stub!(:request).and_return mock('request')
22
+ # controller.request.should_receive(:host_with_port)
23
+ # Site.should_receive(:find_by_host).and_return @site
24
+ # @controller.send :set_site
25
+ # end
26
+ # end
27
+ #
28
+ # describe BaseController, 'event helper' do
29
+ # describe "#trigger_event" do
30
+ # it "triggers an event if the given object is valid" do
31
+ # site = Site.new
32
+ # Event.should_receive(:trigger).with(:site_created, site, controller, {})
33
+ # controller.trigger_event site, :created
34
+ # end
35
+ # end
36
+ # end
37
+
38
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
39
+
40
+ class BaseControllerTest < ActionController::TestCase
41
+ tests ArticlesController # yuk!
42
+ with_common :an_unpublished_section, :rescue_action_in_public
43
+
44
+ describe 'GET to :index' do
45
+ action { get :index, params_from('/an-unpublished-section') }
46
+
47
+ with "an anonymous user" do
48
+ # it_raises ActiveRecord::RecordNotFound
49
+ assert_status 404
50
+ end
51
+
52
+ with :is_superuser do
53
+ it_assigns :section, :articles
54
+ it_renders :template, 'pages/articles/index'
55
+ it_does_not_cache_the_page
56
+ end
57
+ end
58
+
59
+ describe 'GET to :index' do
60
+ action { get :show, params_from('/an-unpublished-section/articles/an-article-in-an-unpublished-section') }
61
+
62
+ with "an anonymous user" do
63
+ # it_raises ActiveRecord::RecordNotFound
64
+ assert_status 404
65
+ end
66
+
67
+ with :is_superuser do
68
+ it_assigns :section, :article
69
+ it_renders :template, 'pages/articles/show'
70
+ it_does_not_cache_the_page
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,168 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+
3
+ class PageArticlesControllerTest < ActionController::TestCase
4
+ tests ArticlesController
5
+ # with_common :a_page, :an_article
6
+ with_common :rescue_action_in_public
7
+
8
+ test "is a BaseController" do
9
+ @controller.should be_kind_of(BaseController)
10
+ end
11
+
12
+ describe 'GET to :index' do
13
+ action { get :index, params_from("/#{@section.permalink}") }
14
+
15
+ with :a_page, :an_article do
16
+ with "the page is in single_article_mode" do
17
+ before { @section.single_article_mode = true; @section.save! }
18
+
19
+ it_assigns :section
20
+ it_assigns :article
21
+ it_renders :template, 'pages/articles/show'
22
+ it_caches_the_page :track => '@article'
23
+ end
24
+
25
+ with "the page is not in single_article_mode" do
26
+ it_assigns :section, :articles
27
+ it_renders :template, 'pages/articles/index'
28
+ it_caches_the_page :track => '@articles'
29
+ # FIXME displays a list of articles
30
+ end
31
+ end
32
+
33
+ with :an_unpublished_section do
34
+ with "the page is in single_article_mode" do
35
+ before do
36
+ @section.single_article_mode = true
37
+ @section.save!
38
+ end
39
+
40
+ with "an anonymous user" do
41
+ # it_raises ActiveRecord::RecordNotFound
42
+ assert_status 404
43
+ end
44
+
45
+ with :is_superuser do
46
+ it_assigns :section, :article
47
+ it_renders :template, 'pages/articles/show'
48
+ it_does_not_cache_the_page
49
+ end
50
+ end
51
+
52
+ with "the page is not in single_article_mode" do
53
+ before do
54
+ @section.update_attribute(:published_at, nil)
55
+ end
56
+ with "an anonymous user" do
57
+ # it_raises ActiveRecord::RecordNotFound
58
+ assert_status 404
59
+ end
60
+
61
+ with :is_superuser do
62
+ it_assigns :section, :articles
63
+ it_renders :template, 'pages/articles/index'
64
+ it_does_not_cache_the_page
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ # FIXME these tests are tied to a concept that this given section has only one published article
71
+ describe 'GET to :show' do
72
+ action { get :show, params_from("/#{@section.permalink}/articles/#{@section.articles.first.permalink}") }
73
+
74
+ with :a_page, :an_article do
75
+ with :the_article_is_published do
76
+ it_assigns :section, :article
77
+ it_renders :template, 'pages/articles/show'
78
+ it_caches_the_page :track => '@article'
79
+
80
+ it "displays the article's body" do
81
+ has_tag 'div[class~=entry]' do
82
+ has_text @article.title
83
+ has_text @article.body
84
+ assert @response.body !~ /read the rest of this entry/i
85
+ end
86
+ end
87
+
88
+ # FIXME
89
+ # lists the article's categories
90
+ # lists the article's tags
91
+
92
+ # FIXME
93
+ # when article has an approved comment: shows the comment
94
+ # when article has an unapproved comment: does not show any comments
95
+ # when article does not have any comments: does not show any comments
96
+ #
97
+ # when article allows commenting: shows comment form
98
+ # when article does not allow commenting: does not show comment form
99
+ end
100
+
101
+ with :the_article_is_not_published do
102
+ with "an anonymous user" do
103
+ # it_raises ActiveRecord::RecordNotFound
104
+ assert_status 404
105
+ end
106
+
107
+ with :is_superuser do
108
+ it_assigns :section, :article => :not_nil
109
+ it_renders :template, 'pages/articles/show'
110
+ it_does_not_cache_the_page
111
+ end
112
+ end
113
+
114
+ with "the article does not exist" do
115
+ before { @article.destroy }
116
+ # it_raises ActiveRecord::RecordNotFound
117
+ assert_status 404
118
+ end
119
+ end
120
+
121
+ with :an_unpublished_section do
122
+ with "an anonymous user" do
123
+ # it_raises ActiveRecord::RecordNotFound
124
+ assert_status 404
125
+ end
126
+
127
+ with :is_superuser do
128
+ it_assigns :section, :article
129
+ it_renders :template, 'pages/articles/show'
130
+ it_does_not_cache_the_page
131
+ end
132
+ end
133
+ end
134
+
135
+ describe "GET to :comments atom feed with no article permalink given" do
136
+ action { get :comments, params_from("/a-page/comments.atom") }
137
+
138
+ with :a_page, :an_article do
139
+ with :the_article_is_published do
140
+ it_assigns :section, :comments
141
+ it_renders :template, 'comments/comments', :format => :atom
142
+ it_caches_the_page
143
+ # FIXME specify comments atom feed
144
+ end
145
+
146
+ with :the_article_is_not_published do
147
+ # FIXME should raise RecordNotFound
148
+ end
149
+ end
150
+ end
151
+
152
+ describe "GET to :comments atom feed with an article permalink given" do
153
+ action { get :comments, params_from("/a-page/articles/a-page-article.atom") }
154
+
155
+ with :a_page, :an_article do
156
+ with :the_article_is_published do
157
+ it_assigns :section, :commentable, :comments
158
+ it_renders :template, 'comments/comments', :format => :atom
159
+ it_caches_the_page
160
+ # FIXME specify comments atom feed
161
+ end
162
+
163
+ with :the_article_is_not_published do
164
+ # FIXME should raise RecordNotFound
165
+ end
166
+ end
167
+ end
168
+ end