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,73 @@
1
+ =begin
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe "Routing Filter::Locale" do
5
+ include SpecRoutingHelper
6
+
7
+ describe "#before_recognize_path" do
8
+ describe "given an incoming root path" do
9
+ controller_name 'base'
10
+
11
+ it "should prepend the defaule_locale to the path when no locale is given (i.e. /)" do
12
+ before_recognize(:locale, '/').should == '/en/'
13
+ end
14
+
15
+ it "should not modify the path when a locale given (i.e. /de)" do
16
+ before_recognize(:locale, '/de').should == '/de'
17
+ end
18
+
19
+ it "should prepend the defaule_locale to the path when no locale but a similar path segment is given (i.e. /de-something)" do
20
+ before_recognize(:locale, '/de-something').should == '/en/de-something'
21
+ end
22
+ end
23
+ end
24
+
25
+ describe "#before_url_helper" do
26
+ controller_name 'base'
27
+
28
+ before :each do
29
+ @base = mock 'base'
30
+ # @base.instance_variable_set :@locale, 'de'
31
+ I18n.locale = :de
32
+ end
33
+
34
+ it "should unshift the current locale to the args when they are a non empty array" do
35
+ before_url_helper(:locale, @base, ['foo']).should == ['de', 'foo']
36
+ end
37
+
38
+ it "should not modify the args when they are an empty array" do
39
+ before_url_helper(:locale, @base, []).should == []
40
+ end
41
+
42
+ it "should not modify the args when they are an array with an options hash that contains the locale" do
43
+ before_url_helper(:locale, @base, [{'locale' => 'en', 'foo' => 'bar'}]).should == [{'locale' => 'en', 'foo' => 'bar'}]
44
+ end
45
+
46
+ it "should set the current locale to the args when they are an array with an options hash that does not contain the locale" do
47
+ before_url_helper(:locale, @base, [{'foo' => 'bar'}]).should == [{'locale' => 'de', 'foo' => 'bar'}]
48
+ end
49
+ end
50
+
51
+ describe "#after_url_helper" do
52
+ controller_name 'base'
53
+
54
+ [['url', 'http://localhost:3000'], ['path', '']].each do |type, host|
55
+ it "should not modify the generated #{type} if no locale is present" do
56
+ after_url_helper(:locale, nil, "#{host}/something").should == "#{host}/something"
57
+ end
58
+
59
+ it "should not modify the generated path/url if the locale is not the default locale" do
60
+ after_url_helper(:locale, nil, "#{host}/de/something").should == "#{host}/de/something"
61
+ end
62
+
63
+ it "should remove the default locale from the generated path/url if it's followed by end-of-line" do
64
+ after_url_helper(:locale, nil, "#{host}/en").should == "#{host}/"
65
+ end
66
+
67
+ it "should remove the default locale from the generated path/url if it's followed by a slash" do
68
+ after_url_helper(:locale, nil, "#{host}/en/").should == "#{host}/"
69
+ end
70
+ end
71
+ end
72
+ end
73
+ =end
@@ -0,0 +1,40 @@
1
+ # we're using a standard route instead of this filter now
2
+
3
+ # require File.dirname(__FILE__) + '/../spec_helper'
4
+ # require File.dirname(__FILE__) + '/../spec_routing_helper'
5
+ # require File.dirname(__FILE__) + '/../spec_mocks'
6
+ #
7
+ # describe "Routing Filter::RootBlogArchive" do
8
+ # include SpecRoutingHelper
9
+ # include SpecMocks
10
+ #
11
+ # describe "#before_recognize_path" do
12
+ # describe "given an incoming root blog archive path with no locale (like /2008/1)" do
13
+ # controller_name 'base'
14
+ #
15
+ # it "should insert the blog path segment to the path when the root section is a blog" do
16
+ # Site.should_receive(:find_by_host).and_return mock_site(mock_blog)
17
+ # before_recognize_path(:root_blog_archive, '/2008/1').should == '/blog/2008/1'
18
+ # end
19
+ #
20
+ # it "should not modify the path when the root section is not a blog" do
21
+ # Site.should_receive(:find_by_host).and_return mock_site(mock_section)
22
+ # before_recognize_path(:root_blog_archive, '/2008/1').should == '/2008/1'
23
+ # end
24
+ # end
25
+ #
26
+ # describe "given an incoming root blog archive path with a locale and trailing stuff (like /de/2008/1/something)" do
27
+ # controller_name 'base'
28
+ #
29
+ # it "should insert the blog path segment to the path when the root section is a blog" do
30
+ # Site.should_receive(:find_by_host).and_return mock_site(mock_blog)
31
+ # before_recognize_path(:root_blog_archive, '/de/2008/1/something').should == '/de/blog/2008/1/something'
32
+ # end
33
+ #
34
+ # it "should not modify the path when the root section is not a blog" do
35
+ # Site.should_receive(:find_by_host).and_return mock_site(mock_section)
36
+ # before_recognize_path(:root_blog_archive, '/de/2008/1/something').should == '/de/2008/1/something'
37
+ # end
38
+ # end
39
+ # end
40
+ # end
@@ -0,0 +1,48 @@
1
+ =begin
2
+ return nil
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+ #require File.dirname(__FILE__) + '/../spec_mocks'
5
+
6
+ describe "Routing Filter::RootSectionArticles" do
7
+ include SpecRoutingHelper
8
+ #include SpecMocks
9
+
10
+ describe "#before_recognize_path" do
11
+ describe "given an incoming root article permalink path with no locale (like /an-article)" do
12
+ controller_name 'base'
13
+
14
+ before :each do
15
+ @section = mock_section(:articles => mock('articles_proxy', :permalinks => ['an-article']))
16
+ Site.should_receive(:find_by_host).and_return mock_site(@section)
17
+ end
18
+
19
+ it "should insert the section path segment to the path when the article belongs to the root section" do
20
+ before_recognize_path(:root_section_articles, '/an-article').should == '/section/an-article'
21
+ end
22
+
23
+ it "should not modify the path when the article does not belong to the root section" do
24
+ @section.articles.should_receive(:permalinks).and_return ['another-article']
25
+ before_recognize_path(:root_section_articles, '/an-article').should == '/an-article'
26
+ end
27
+ end
28
+
29
+ describe "given an incoming root article permalink path with a locale (like /de/an-article)" do
30
+ controller_name 'base'
31
+
32
+ before :each do
33
+ @section = mock_section(:articles => mock('articles_proxy', :permalinks => ['an-article']))
34
+ Site.should_receive(:find_by_host).and_return mock_site(@section)
35
+ end
36
+
37
+ it "should insert the section path segment to the path when the article belongs to the root section" do
38
+ before_recognize_path(:root_section_articles, '/de/an-article').should == '/de/section/an-article'
39
+ end
40
+
41
+ it "should not modify the path when the article does not belong to the root section" do
42
+ @section.articles.should_receive(:permalinks).and_return ['another-article']
43
+ before_recognize_path(:root_section_articles, '/de/an-article').should == '/de/an-article'
44
+ end
45
+ end
46
+ end
47
+ end
48
+ =end
@@ -0,0 +1,40 @@
1
+ # we're using a standard route instead of this filter now
2
+
3
+ # require File.dirname(__FILE__) + '/../spec_helper'
4
+ # require File.dirname(__FILE__) + '/../spec_routing_helper'
5
+ # require File.dirname(__FILE__) + '/../spec_mocks'
6
+ #
7
+ # describe "Routing Filter::RootWikipages" do
8
+ # include SpecRoutingHelper
9
+ # include SpecMocks
10
+ #
11
+ # describe "#before_recognize_path" do
12
+ # describe "given an incoming root wikipage path with no locale (like /pages/something)" do
13
+ # controller_name 'base'
14
+ #
15
+ # it "should insert the section path segment to the path when the root section is a wiki" do
16
+ # Site.should_receive(:find_by_host).and_return mock_site(mock_wiki)
17
+ # before_recognize_path(:root_wikipages, '/pages/something').should == '/wiki/pages/something'
18
+ # end
19
+ #
20
+ # it "should not modify the path when the root section is not a wiki" do
21
+ # Site.should_receive(:find_by_host).and_return mock_site(mock_section)
22
+ # before_recognize_path(:root_wikipages, '/pages/something').should == '/pages/something'
23
+ # end
24
+ # end
25
+ #
26
+ # describe "given an incoming root wikipage path with a locale (like /de/pages/something)" do
27
+ # controller_name 'base'
28
+ #
29
+ # it "should insert the section path segment to the path when the root section is a wiki" do
30
+ # Site.should_receive(:find_by_host).and_return mock_site(mock_wiki)
31
+ # before_recognize_path(:root_wikipages, '/de/pages/something').should == '/de/wiki/pages/something'
32
+ # end
33
+ #
34
+ # it "should not modify the path when the root section is not a wiki" do
35
+ # Site.should_receive(:find_by_host).and_return mock_site(mock_section)
36
+ # before_recognize_path(:root_wikipages, '/de/pages/something').should == '/de/pages/something'
37
+ # end
38
+ # end
39
+ # end
40
+ # end
@@ -0,0 +1,143 @@
1
+ =begin
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+ #require File.dirname(__FILE__) + '/../spec_mocks'
4
+
5
+ describe "Routing Filter::Sections" do
6
+ include SpecRoutingHelper
7
+ #include SpecMocks
8
+
9
+ describe "#before_recognize_path" do
10
+ before :each do
11
+ stub_scenario :site
12
+ @site.sections.stub!(:paths).and_return ['section', 'section/subsection']
13
+ end
14
+
15
+ describe "given an incoming root path" do
16
+ controller_name 'base'
17
+ before :each do
18
+ Site.should_receive(:find_by_host).with('test.host').and_return mock_site
19
+ end
20
+
21
+ it "should rewrite the path to /:root_section_pat when no locale is given (i.e. /)" do
22
+ before_recognize_path(:sections, '/').should == '/sections/1'
23
+ end
24
+
25
+ it "should rewrite the path to /sections/:root_section_id when a locale given (i.e. /de)" do
26
+ before_recognize_path(:sections, '/de').should == '/de/sections/1'
27
+ end
28
+
29
+ it "should rewrite the path to /sections/:root_section_id when a locale and a trailing slash are given (i.e. /de/)" do
30
+ before_recognize_path(:sections, '/de/').should == '/de/sections/1'
31
+ end
32
+ end
33
+
34
+ describe "given an incoming section path" do
35
+ before :each do
36
+ Site.should_receive(:find_by_host).with('test.host').and_return mock_section
37
+ end
38
+
39
+ describe "without a locale (like /section)" do
40
+ controller_name 'base'
41
+
42
+ it "should rewrite the path to /sections/:section_id" do
43
+ before_recognize_path(:sections, '/section').should == '/sections/1'
44
+ end
45
+
46
+ it "should rewrite the path to /sections/:section_id leaving trailing stuff as is" do
47
+ before_recognize_path(:sections, '/section/something').should == '/sections/1/something'
48
+ end
49
+ end
50
+
51
+ describe "with a locale (like /en/section)" do
52
+ controller_name 'base'
53
+
54
+ it "should rewrite the path to /:locale/sections/:section_id" do
55
+ before_recognize_path(:sections, '/en/section').should == '/en/sections/1'
56
+ end
57
+
58
+ it "should rewrite the path to /:locale/sections/:section_id leaving trailing stuff as is" do
59
+ before_recognize_path(:sections, '/en/section/something').should == '/en/sections/1/something'
60
+ end
61
+ end
62
+ end
63
+
64
+ describe "given an incoming nested section path" do
65
+ before :each do
66
+ Site.should_receive(:find_by_host).with('test.host').and_return mock_section
67
+ end
68
+
69
+ describe "without a locale (like /section/subsection)" do
70
+ controller_name 'base'
71
+
72
+ it "should rewrite the path to /sections/:section_id" do
73
+ before_recognize_path(:sections, '/section/subsection').should == '/sections/1'
74
+ end
75
+
76
+ it "should rewrite the path to /sections/:section_id leaving trailing stuff as is" do
77
+ before_recognize_path(:sections, '/section/subsection/something').should == '/sections/1/something'
78
+ end
79
+ end
80
+
81
+ describe "with a locale (like /en/section/subsection)" do
82
+ controller_name 'base'
83
+
84
+ it "should rewrite the path to /:locale/sections/:section_id" do
85
+ before_recognize_path(:sections, '/en/section/subsection').should == '/en/sections/1'
86
+ end
87
+
88
+ it "should rewrite the path to /:locale/sections/:section_id leaving trailing stuff as is" do
89
+ before_recognize_path(:sections, '/en/section/subsection/something').should == '/en/sections/1/something'
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ describe "#after_url_helper" do
96
+ before :each do
97
+ @section = mock_section
98
+ Section.stub!(:types).and_return ['Page']
99
+ Section.should_receive(:find).with("1").and_return @section
100
+ end
101
+
102
+ [['path', ''], ['url', 'http://localhost:3000']].each do |type, host|
103
+ describe "given a generated section #{type}" do
104
+ [['without a locale', ''], ['with a locale', '/de']].each do |locale_text, locale|
105
+ describe "#{locale_text} (like #{host}#{locale}/sections/1)" do
106
+ describe "when the section is not the root section" do
107
+ controller_name 'base'
108
+
109
+ before :each do
110
+ @section.should_receive(:root_section?).and_return(false)
111
+ end
112
+
113
+ it "should rewrite the path to #{host}#{locale}/:page_path" do
114
+ after_url_helper(:sections, nil, "#{host}#{locale}/sections/1").should == "#{host}#{locale}/section/"
115
+ end
116
+
117
+ it "should rewrite the path to #{host}#{locale}/page_path leaving trailing stuff as is" do
118
+ after_url_helper(:sections, nil, "#{host}#{locale}/sections/1/something").should == "#{host}#{locale}/section/something"
119
+ end
120
+ end
121
+
122
+ describe "when the section is the root section" do
123
+ controller_name "base"
124
+
125
+ before :each do
126
+ @section.should_receive(:root_section?).and_return(true)
127
+ end
128
+
129
+ it "should rewrite the path to #{host}#{locale}/" do
130
+ after_url_helper(:sections, nil, "#{host}#{locale}/sections/1").should == "#{host}#{locale}/"
131
+ end
132
+
133
+ it "should rewrite the path to #{host}#{locale}/ leaving trailing stuff as is" do
134
+ after_url_helper(:sections, nil, "#{host}#{locale}/sections/1/something").should == "#{host}#{locale}/something"
135
+ end
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ =end
@@ -0,0 +1,32 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../test_helper')
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + '/../../../lib')
3
+ require 'routing_filter/section_paths'
4
+
5
+ module RoutingFilterTests
6
+ class SectionsTest < ActiveSupport::TestCase
7
+ def setup
8
+ super
9
+ @site = Site.first
10
+ @section = @site.sections.find_by_title('a page')
11
+ @sorted_section_paths = @site.sections.paths.sort{|a, b| b.size <=> a.size }.join('|')
12
+ @filter = RoutingFilter::SectionPaths.new({})
13
+ @base_route = "http://www.bogus.info"
14
+ end
15
+
16
+ # Protected methods
17
+
18
+ test "paths_for_site sorts and returns all the section paths for the site" do
19
+ assert_equal @sorted_section_paths, @filter.send(:paths_for_site, @site)
20
+ end
21
+
22
+ test "paths_for_site returns an empty array if no site is given" do
23
+ assert_equal [], @filter.send(:paths_for_site, nil)
24
+ end
25
+
26
+ test "section_by_path detects the section from path - standard paths" do
27
+ %w( an-unpublished-section another-page letter-test an-album öäü a-page ).each do |pattern|
28
+ assert @filter.send(:section_by_path, @site, pattern)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,86 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../test_helper')
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + '/../../../lib')
3
+ require 'routing_filter/sets'
4
+
5
+ module RoutingFilterTests
6
+ class SetsTest < ActiveSupport::TestCase
7
+ def setup
8
+ super
9
+ @filter = RoutingFilter::Sets.new({})
10
+ @base_route = "/albums/1/sets/"
11
+ end
12
+
13
+ test "filter is a sets routing filter" do
14
+ assert @filter.is_a?(RoutingFilter::Sets)
15
+ end
16
+
17
+ test "it correctly recognizes the set from url - standard set" do
18
+ standard_set.each do |route|
19
+ assert_equal 'a-set', @filter.match_path(@base_route + route, ['albums'])[2]
20
+ end
21
+ end
22
+
23
+ test "it correctly recognizes the set from url - child set" do
24
+ child_set.each do |route|
25
+ assert_equal 'a-set/child', @filter.match_path(@base_route + route, ['albums'])[2]
26
+ end
27
+ end
28
+
29
+ test "it correctly recognizes the set from url - set with digit" do
30
+ set_with_digit.each do |route|
31
+ assert_equal 'set-666', @filter.match_path(@base_route + route, ['albums'])[2]
32
+ end
33
+ end
34
+
35
+ test "it correctly recognizes the set from url - child set with digit" do
36
+ child_set_with_digit.each do |route|
37
+ assert_equal 'set-666/kid69', @filter.match_path(@base_route + route, ['albums'])[2]
38
+ end
39
+ end
40
+
41
+ test "it correctly recognizes the set from url - set with digits only" do
42
+ digit_set.each do |route|
43
+ assert_equal '1234', @filter.match_path(@base_route + route, ['albums'])[2]
44
+ end
45
+ end
46
+
47
+ test "it correctly recognizes the set from url - child set with digits only" do
48
+ digit_child_set.each do |route|
49
+ assert_equal '1234/567', @filter.match_path(@base_route + route, ['albums'])[2]
50
+ end
51
+ end
52
+
53
+ test "it fails to recognize four digit child sets" do
54
+ assert_equal '1234', @filter.match_path(@base_route + "1234/5678", ['albums'])[2]
55
+ end
56
+
57
+ test "it fails to recognize four and two digit parent child combinations under the root set level" do
58
+ assert_equal '1234/56', @filter.match_path(@base_route + "1234/56", ['albums'])[2]
59
+ assert_equal '1234', @filter.match_path(@base_route + "1234/4567/89", ['albums'])[2]
60
+ end
61
+
62
+ def standard_set
63
+ %w( a-set a-set/2009/1 a-set/2009/12 a-set.atom a-set.html a-set.pdf )
64
+ end
65
+
66
+ def child_set
67
+ %w( a-set/child a-set/child/2009/1 a-set/child/2009/12 a-set/child.atom a-set/child.html a-set/child.pdf )
68
+ end
69
+
70
+ def set_with_digit
71
+ %w( set-666 set-666/2009/1 set-666/2009/12 set-666.atom set-666.html set-666.pdf )
72
+ end
73
+
74
+ def child_set_with_digit
75
+ %w( set-666/kid69 set-666/kid69/2009/1 set-666/kid69/2009/12 set-666/kid69.atom set-666/kid69.html set-666/kid69.pdf )
76
+ end
77
+
78
+ def digit_set
79
+ %w( 1234 1234/2009/1 1234/2009/12 1234.atom 1234.html 1234.pdf )
80
+ end
81
+
82
+ def digit_child_set
83
+ %w( 1234/567 1234/567/2009/1 1234/567/2009/12 1234/567.atom 1234/567.html 1234/567.pdf )
84
+ end
85
+ end
86
+ end