browsercms 3.1.5 → 3.3.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (425) hide show
  1. data/app/controllers/cms/base_controller.rb +3 -3
  2. data/app/controllers/cms/content_block_controller.rb +2 -2
  3. data/app/controllers/cms/content_controller.rb +5 -4
  4. data/app/controllers/cms/error_handling.rb +1 -1
  5. data/app/controllers/cms/routes_controller.rb +4 -5
  6. data/app/controllers/cms/section_nodes_controller.rb +1 -6
  7. data/app/controllers/cms/sections_controller.rb +2 -3
  8. data/app/controllers/cms/tasks_controller.rb +3 -0
  9. data/app/controllers/cms/users_controller.rb +1 -1
  10. data/app/helpers/cms/application_helper.rb +137 -34
  11. data/app/helpers/cms/form_builder.rb +33 -21
  12. data/app/helpers/cms/page_helper.rb +43 -10
  13. data/app/helpers/cms/path_helper.rb +1 -1
  14. data/app/helpers/cms/rendering_helper.rb +3 -4
  15. data/app/helpers/cms/section_nodes_helper.rb +5 -43
  16. data/app/models/abstract_file_block.rb +1 -16
  17. data/app/models/attachment.rb +57 -22
  18. data/app/models/category.rb +4 -4
  19. data/app/models/category_type.rb +2 -2
  20. data/app/models/cms/view_context.rb +46 -0
  21. data/app/models/connector.rb +7 -6
  22. data/app/models/content_type.rb +3 -3
  23. data/app/models/dynamic_view.rb +1 -1
  24. data/app/models/email_message.rb +2 -2
  25. data/app/models/file_block.rb +12 -0
  26. data/app/models/group.rb +4 -4
  27. data/app/models/group_type.rb +4 -4
  28. data/app/models/html_block.rb +1 -1
  29. data/app/models/image_block.rb +12 -0
  30. data/app/models/link.rb +22 -5
  31. data/app/models/page.rb +87 -46
  32. data/app/models/page_route.rb +61 -6
  33. data/app/models/permission.rb +1 -1
  34. data/app/models/portlet.rb +14 -4
  35. data/app/models/section.rb +48 -86
  36. data/app/models/section_node.rb +25 -40
  37. data/app/models/site.rb +1 -1
  38. data/app/models/tag.rb +1 -1
  39. data/app/models/task.rb +8 -7
  40. data/app/models/user.rb +2 -7
  41. data/app/portlets/forgot_password_portlet.rb +6 -2
  42. data/app/portlets/reset_password_portlet.rb +1 -1
  43. data/app/views/cms/blocks/_toolbar.html.erb +1 -1
  44. data/app/views/cms/blocks/_toolbar_for_collection.html.erb +3 -6
  45. data/app/views/cms/blocks/_toolbar_for_member.html.erb +3 -5
  46. data/app/views/cms/blocks/edit.html.erb +4 -4
  47. data/app/views/cms/blocks/index.html.erb +7 -7
  48. data/app/views/cms/blocks/new.html.erb +4 -4
  49. data/app/views/cms/blocks/show.html.erb +2 -2
  50. data/app/views/cms/blocks/usages.html.erb +2 -2
  51. data/app/views/cms/blocks/versions.html.erb +4 -4
  52. data/app/views/cms/cache/show.html.erb +2 -2
  53. data/app/views/cms/categories/_form.html.erb +2 -2
  54. data/app/views/cms/connectors/new.html.erb +6 -8
  55. data/app/views/cms/content/no_page.html.erb +1 -1
  56. data/app/views/cms/content/show.html.erb +2 -7
  57. data/app/views/cms/dashboard/_page_drafts.html.erb +1 -1
  58. data/app/views/cms/dashboard/_tasks.html.erb +1 -1
  59. data/app/views/cms/dashboard/index.html.erb +1 -1
  60. data/app/views/cms/dynamic_views/_form.html.erb +2 -2
  61. data/app/views/cms/dynamic_views/index.html.erb +7 -10
  62. data/app/views/cms/email_messages/show.html.erb +2 -2
  63. data/app/views/cms/file_blocks/_form.html.erb +4 -4
  64. data/app/views/cms/form_builder/_cms_fancy_drop_down.html.erb +2 -2
  65. data/app/views/cms/form_builder/_cms_file_field.html.erb +2 -2
  66. data/app/views/cms/form_builder/_cms_tag_list.html.erb +2 -2
  67. data/app/views/cms/form_builder/_cms_text_editor.html.erb +2 -2
  68. data/app/views/cms/groups/_form.html.erb +5 -5
  69. data/app/views/cms/groups/_permissions.html.erb +4 -4
  70. data/app/views/cms/groups/_sections.html.erb +1 -2
  71. data/app/views/cms/groups/index.html.erb +1 -1
  72. data/app/views/cms/html_blocks/render.html.erb +1 -1
  73. data/app/views/cms/image_blocks/_form.html.erb +4 -5
  74. data/app/views/cms/links/_form.html.erb +1 -1
  75. data/app/views/cms/links/edit.html.erb +2 -2
  76. data/app/views/cms/links/new.html.erb +2 -2
  77. data/app/views/cms/page_routes/_form.html.erb +2 -2
  78. data/app/views/cms/page_routes/index.html.erb +6 -9
  79. data/app/views/cms/page_routes/show.html.erb +5 -8
  80. data/app/views/cms/pages/_edit_connector.html.erb +1 -1
  81. data/app/views/cms/pages/_form.html.erb +3 -3
  82. data/app/views/cms/pages/edit.html.erb +2 -2
  83. data/app/views/cms/pages/new.html.erb +7 -7
  84. data/app/views/cms/pages/versions.html.erb +4 -4
  85. data/app/views/cms/redirects/_form.html.erb +2 -2
  86. data/app/views/cms/redirects/index.html.erb +8 -7
  87. data/app/views/cms/routes/index.html.erb +2 -2
  88. data/app/views/cms/section_nodes/_link.html.erb +3 -6
  89. data/app/views/cms/section_nodes/_node.html.erb +4 -13
  90. data/app/views/cms/section_nodes/_page.html.erb +7 -13
  91. data/app/views/cms/section_nodes/_section.html.erb +8 -24
  92. data/app/views/cms/section_nodes/_section_node.html.erb +10 -0
  93. data/app/views/cms/section_nodes/index.html.erb +18 -30
  94. data/app/views/cms/sections/_form.html.erb +4 -6
  95. data/app/views/cms/sections/edit.html.erb +2 -2
  96. data/app/views/cms/sections/index.html.erb +3 -3
  97. data/app/views/cms/sections/new.html.erb +3 -3
  98. data/app/views/cms/sessions/new.html.erb +3 -3
  99. data/app/views/cms/shared/_pagination.html.erb +1 -1
  100. data/app/views/cms/shared/error.html.erb +1 -1
  101. data/app/views/cms/tags/render.html.erb +2 -2
  102. data/app/views/cms/tasks/new.html.erb +4 -4
  103. data/app/views/cms/users/_form.html.erb +3 -3
  104. data/app/views/cms/users/_toolbar.html.erb +3 -3
  105. data/app/views/cms/users/change_password.html.erb +5 -5
  106. data/app/views/cms/users/edit.html.erb +2 -2
  107. data/app/views/cms/users/index.html.erb +4 -4
  108. data/app/views/cms/users/new.html.erb +2 -2
  109. data/app/views/cms/users/show.html.erb +16 -16
  110. data/app/views/layouts/_cms_toolbar.html.erb +5 -5
  111. data/app/views/layouts/_page_toolbar.html.erb +11 -11
  112. data/app/views/layouts/cms/_footer.erb +1 -1
  113. data/app/views/layouts/cms/_head.html.erb +2 -6
  114. data/app/views/layouts/cms/administration.html.erb +32 -32
  115. data/app/views/layouts/cms/content_library.html.erb +5 -5
  116. data/app/views/layouts/cms/toolbar.html.erb +1 -1
  117. data/app/views/portlets/email_page/render.html.erb +2 -2
  118. data/app/views/portlets/forgot_password/render.html.erb +1 -1
  119. data/app/views/portlets/login/render.html.erb +4 -2
  120. data/app/views/portlets/reset_password/render.html.erb +1 -1
  121. data/app/views/tests/pretend/open_with_layout.html.erb +1 -1
  122. data/bin/bcms +0 -0
  123. data/bin/bcms-upgrade +232 -0
  124. data/bin/browsercms +2 -2
  125. data/browsercms.gemspec +16 -14
  126. data/db/migrate/20100705083859_browsercms_3_3_0.rb +56 -0
  127. data/db/seeds.rb +58 -0
  128. data/doc/guides/html/authentication.html +448 -192
  129. data/doc/guides/html/build_it_yourself.html +454 -175
  130. data/doc/guides/html/building_modules.html +451 -220
  131. data/doc/guides/html/building_templates.html +448 -498
  132. data/doc/guides/html/content_blocks.html +450 -470
  133. data/doc/guides/html/customizing_browsercms.html +453 -169
  134. data/doc/guides/html/deployment_guide.html +443 -82
  135. data/doc/guides/html/files/bcmsorg.js +28 -0
  136. data/doc/guides/html/files/clearfix.css +8 -0
  137. data/doc/guides/html/files/cufon.js +7 -0
  138. data/doc/guides/html/files/global.css +190 -0
  139. data/doc/guides/html/files/helvetica.js +91 -0
  140. data/doc/guides/html/files/jquery.js +11 -0
  141. data/doc/guides/html/getting_started.html +454 -213
  142. data/doc/guides/html/index.html +454 -174
  143. data/doc/guides/html/installing_modules.html +454 -186
  144. data/doc/guides/html/portlets.html +451 -232
  145. data/doc/guides/html/user_guide.html +452 -270
  146. data/doc/guides/html/writing_guides.html +454 -161
  147. data/lib/acts_as_list.rb +1 -1
  148. data/lib/browsercms.rb +10 -6
  149. data/lib/cms/acts.rb +7 -0
  150. data/lib/cms/authentication.rb +4 -0
  151. data/lib/cms/authentication/controller.rb +1 -1
  152. data/lib/cms/behaviors.rb +1 -1
  153. data/lib/cms/behaviors/archiving.rb +2 -2
  154. data/lib/cms/behaviors/attaching.rb +28 -43
  155. data/lib/cms/behaviors/categorizing.rb +1 -1
  156. data/lib/cms/behaviors/connecting.rb +27 -12
  157. data/lib/cms/behaviors/dynamic_attributes.rb +8 -5
  158. data/lib/cms/behaviors/hiding.rb +2 -2
  159. data/lib/cms/behaviors/publishing.rb +32 -22
  160. data/lib/cms/behaviors/rendering.rb +41 -18
  161. data/lib/cms/behaviors/searching.rb +1 -1
  162. data/lib/cms/behaviors/soft_deleting.rb +58 -29
  163. data/lib/cms/behaviors/taggable.rb +1 -1
  164. data/lib/cms/behaviors/userstamping.rb +5 -4
  165. data/lib/cms/behaviors/versioning.rb +192 -111
  166. data/lib/cms/content_rendering_support.rb +3 -3
  167. data/lib/cms/date_picker.rb +23 -0
  168. data/lib/cms/engine.rb +46 -0
  169. data/lib/cms/extensions.rb +1 -1
  170. data/lib/cms/extensions/active_record/errors.rb +2 -2
  171. data/lib/cms/extensions/hash.rb +4 -2
  172. data/lib/cms/extensions/string.rb +7 -2
  173. data/lib/cms/init.rb +32 -21
  174. data/lib/cms/module.rb +22 -0
  175. data/lib/cms/module_installation.rb +38 -0
  176. data/lib/cms/routes.rb +127 -115
  177. data/lib/cms/version.rb +2 -2
  178. data/lib/generators/browser_cms.rb +12 -0
  179. data/lib/generators/browser_cms/cms/USAGE +2 -0
  180. data/lib/generators/browser_cms/cms/cms_generator.rb +36 -0
  181. data/{rails_generators/browser_cms → lib/generators/browser_cms/cms}/templates/README +0 -0
  182. data/{rails_generators/browser_cms_demo_site → lib/generators/browser_cms/demo_site}/USAGE +0 -0
  183. data/lib/generators/browser_cms/demo_site/demo_site_generator.rb +138 -0
  184. data/lib/generators/browser_cms/demo_site/templates/demo_site.rake +11 -0
  185. data/{rails_generators/browser_cms_demo_site/templates/migration.rb → lib/generators/browser_cms/demo_site/templates/migration.erb} +2 -8
  186. data/lib/generators/cms/content_block/USAGE +22 -0
  187. data/lib/generators/cms/content_block/content_block_generator.rb +55 -0
  188. data/{rails_generators → lib/generators/cms}/content_block/templates/_form.html.erb +0 -0
  189. data/{rails_generators → lib/generators/cms}/content_block/templates/content_block.rb +0 -0
  190. data/{rails_generators → lib/generators/cms}/content_block/templates/controller.rb +0 -0
  191. data/{rails_generators → lib/generators/cms}/content_block/templates/functional_test.erb +0 -0
  192. data/{rails_generators/content_block/templates/migration.rb → lib/generators/cms/content_block/templates/migration.erb} +1 -1
  193. data/{rails_generators → lib/generators/cms}/content_block/templates/render.html.erb +0 -0
  194. data/{rails_generators → lib/generators/cms}/content_block/templates/unit_test.erb +0 -0
  195. data/lib/generators/cms/install/USAGE +8 -0
  196. data/lib/generators/cms/install/install_generator.rb +20 -0
  197. data/{rails_generators → lib/generators/cms}/portlet/USAGE +3 -16
  198. data/lib/generators/cms/portlet/portlet_generator.rb +38 -0
  199. data/{rails_generators → lib/generators/cms}/portlet/templates/_form.html.erb +0 -0
  200. data/{rails_generators → lib/generators/cms}/portlet/templates/portlet.rb +0 -0
  201. data/{rails_generators → lib/generators/cms}/portlet/templates/portlet_helper.rb +0 -0
  202. data/{rails_generators → lib/generators/cms}/portlet/templates/render.html.erb +0 -0
  203. data/{rails_generators → lib/generators/cms}/portlet/templates/unit_test.erb +0 -0
  204. data/{rails_generators → lib/generators/cms}/template/USAGE +1 -1
  205. data/lib/generators/cms/template/template_generator.rb +18 -0
  206. data/lib/generators/cms/template/templates/template.erb +2 -0
  207. data/lib/generators/cms/upgrade_module/README.txt +3 -0
  208. data/lib/generators/cms/upgrade_module/templates/20100705083859_browsercms_3_3_0.rb +56 -0
  209. data/lib/generators/cms/upgrade_module/templates/README +1 -0
  210. data/lib/generators/cms/upgrade_module/templates/USAGE.erb +10 -0
  211. data/lib/generators/cms/upgrade_module/templates/build_gem.rake +5 -0
  212. data/lib/generators/cms/upgrade_module/templates/engine.erb +7 -0
  213. data/lib/generators/cms/upgrade_module/templates/gemspec.erb +25 -0
  214. data/lib/generators/cms/upgrade_module/templates/gitignore.erb +11 -0
  215. data/lib/generators/cms/upgrade_module/templates/install.erb +9 -0
  216. data/lib/generators/cms/upgrade_module/templates/module_file.erb +3 -0
  217. data/lib/generators/cms/upgrade_module/templates/routes.erb +7 -0
  218. data/lib/generators/cms/upgrade_module/upgrade_module_generator.rb +61 -0
  219. data/lib/tasks/build_gem.rake +1 -0
  220. data/lib/tasks/cms.rake +34 -6
  221. data/lib/tasks/cucumber.rake +53 -0
  222. data/lib/tasks/db.rake +2 -2
  223. data/public/javascripts/cms/application.js +144 -135
  224. data/public/javascripts/cms/sitemap.js +383 -357
  225. data/public/javascripts/jquery-ui.js +782 -591
  226. data/public/javascripts/jquery.cookie.js +38 -43
  227. data/public/javascripts/jquery.js +13 -8
  228. data/public/javascripts/jquery.taglist.js +7 -0
  229. data/public/stylesheets/cms/date_picker.css +49 -40
  230. data/rails/init.rb +2 -3
  231. data/templates/blank.rb +13 -7
  232. data/templates/demo.rb +15 -7
  233. data/templates/module.rb +12 -75
  234. metadata +87 -407
  235. data/app/helpers/cms/content_block_helper.rb +0 -27
  236. data/app/views/layouts/cms/thickbox.html.erb +0 -24
  237. data/db/migrate/20120117144039_browsercms315.rb +0 -94
  238. data/db/migrate/20121114172307_load_seeds.rb +0 -70
  239. data/lib/cms/addressable.rb +0 -83
  240. data/lib/cms/error_pages.rb +0 -8
  241. data/public/images/cms/thickbox/loadingAnimation.gif +0 -0
  242. data/public/images/cms/thickbox/macFFBgHack.png +0 -0
  243. data/public/javascripts/jquery.contextMenu.js +0 -211
  244. data/public/javascripts/jquery.dimensions.js +0 -119
  245. data/public/javascripts/jquery.thickbox.js +0 -10
  246. data/public/stylesheets/cms/jquery.contextMenu.css +0 -61
  247. data/public/stylesheets/cms/thickbox.css +0 -163
  248. data/rails_generators/browser_cms/USAGE +0 -2
  249. data/rails_generators/browser_cms/browser_cms_generator.rb +0 -35
  250. data/rails_generators/browser_cms_demo_site/browser_cms_demo_site_generator.rb +0 -63
  251. data/rails_generators/content_block/USAGE +0 -32
  252. data/rails_generators/content_block/content_block_generator.rb +0 -69
  253. data/rails_generators/portlet/portlet_generator.rb +0 -35
  254. data/rails_generators/template/template_generator.rb +0 -18
  255. data/rails_generators/template/templates/template.erb +0 -3
  256. data/test/custom_assertions.rb +0 -74
  257. data/test/factories.rb +0 -111
  258. data/test/factories/sitemap_factories.rb +0 -28
  259. data/test/fixtures/connectors.yml +0 -97
  260. data/test/fixtures/content_type_groups.yml +0 -13
  261. data/test/fixtures/content_types.yml +0 -50
  262. data/test/fixtures/dynamic_view_versions.yml +0 -26
  263. data/test/fixtures/dynamic_views.yml +0 -26
  264. data/test/fixtures/group_permissions.yml +0 -16
  265. data/test/fixtures/group_sections.yml +0 -31
  266. data/test/fixtures/group_type_permissions.yml +0 -11
  267. data/test/fixtures/group_types.yml +0 -25
  268. data/test/fixtures/groups.yml +0 -25
  269. data/test/fixtures/html_block_versions.yml +0 -67
  270. data/test/fixtures/html_blocks.yml +0 -63
  271. data/test/fixtures/page_versions.yml +0 -265
  272. data/test/fixtures/pages.yml +0 -85
  273. data/test/fixtures/permissions.yml +0 -28
  274. data/test/fixtures/section_nodes.yml +0 -46
  275. data/test/fixtures/sections.yml +0 -19
  276. data/test/fixtures/sites.yml +0 -9
  277. data/test/fixtures/user_group_memberships.yml +0 -11
  278. data/test/fixtures/users.yml +0 -15
  279. data/test/functional/cms/cache_controller_test.rb +0 -14
  280. data/test/functional/cms/categories_controller_test.rb +0 -25
  281. data/test/functional/cms/connectors_controller_test.rb +0 -60
  282. data/test/functional/cms/content_block_controller_test.rb +0 -120
  283. data/test/functional/cms/content_controller_test.rb +0 -439
  284. data/test/functional/cms/content_types_controller_test.rb +0 -18
  285. data/test/functional/cms/dashboard_controller_test.rb +0 -16
  286. data/test/functional/cms/dynamic_views_controller_test.rb +0 -52
  287. data/test/functional/cms/file_blocks_controller_test.rb +0 -52
  288. data/test/functional/cms/groups_controller_test.rb +0 -50
  289. data/test/functional/cms/home_controller_test.rb +0 -156
  290. data/test/functional/cms/html_blocks_controller_test.rb +0 -164
  291. data/test/functional/cms/image_blocks_controller_test.rb +0 -82
  292. data/test/functional/cms/links_controller_test.rb +0 -148
  293. data/test/functional/cms/pages_controller_test.rb +0 -227
  294. data/test/functional/cms/portlets_controller_test.rb +0 -67
  295. data/test/functional/cms/section_nodes_controller_test.rb +0 -112
  296. data/test/functional/cms/sections_controller_test.rb +0 -227
  297. data/test/functional/cms/sessions_controller_test.rb +0 -76
  298. data/test/functional/cms/toolbar_controller_test.rb +0 -64
  299. data/test/functional/cms/users_controller_test.rb +0 -231
  300. data/test/functional/tests/pretend_controller_test.rb +0 -57
  301. data/test/integration/cms/ckeditor_test.rb +0 -30
  302. data/test/integration/cms/password_management_test.rb +0 -56
  303. data/test/integration/login_test.rb +0 -14
  304. data/test/integration/sitemap_performance_test.rb +0 -26
  305. data/test/selenium-core/Blank.html +0 -7
  306. data/test/selenium-core/InjectedRemoteRunner.html +0 -8
  307. data/test/selenium-core/RemoteRunner.html +0 -110
  308. data/test/selenium-core/SeleniumLog.html +0 -109
  309. data/test/selenium-core/TestPrompt.html +0 -145
  310. data/test/selenium-core/TestRunner-splash.html +0 -55
  311. data/test/selenium-core/TestRunner.hta +0 -176
  312. data/test/selenium-core/TestRunner.html +0 -176
  313. data/test/selenium-core/domviewer/butmin.gif +0 -0
  314. data/test/selenium-core/domviewer/butplus.gif +0 -0
  315. data/test/selenium-core/domviewer/domviewer.css +0 -298
  316. data/test/selenium-core/domviewer/domviewer.html +0 -16
  317. data/test/selenium-core/domviewer/selenium-domviewer.js +0 -205
  318. data/test/selenium-core/icons/all.png +0 -0
  319. data/test/selenium-core/icons/continue.png +0 -0
  320. data/test/selenium-core/icons/continue_disabled.png +0 -0
  321. data/test/selenium-core/icons/pause.png +0 -0
  322. data/test/selenium-core/icons/pause_disabled.png +0 -0
  323. data/test/selenium-core/icons/selected.png +0 -0
  324. data/test/selenium-core/icons/step.png +0 -0
  325. data/test/selenium-core/icons/step_disabled.png +0 -0
  326. data/test/selenium-core/iedoc-core.xml +0 -1515
  327. data/test/selenium-core/iedoc.xml +0 -1469
  328. data/test/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
  329. data/test/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
  330. data/test/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
  331. data/test/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
  332. data/test/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
  333. data/test/selenium-core/lib/prototype.js +0 -2006
  334. data/test/selenium-core/lib/scriptaculous/builder.js +0 -101
  335. data/test/selenium-core/lib/scriptaculous/controls.js +0 -815
  336. data/test/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
  337. data/test/selenium-core/lib/scriptaculous/effects.js +0 -958
  338. data/test/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
  339. data/test/selenium-core/lib/scriptaculous/slider.js +0 -283
  340. data/test/selenium-core/lib/scriptaculous/unittest.js +0 -383
  341. data/test/selenium-core/scripts/find_matching_child.js +0 -69
  342. data/test/selenium-core/scripts/htmlutils.js +0 -894
  343. data/test/selenium-core/scripts/injection.html +0 -72
  344. data/test/selenium-core/scripts/js2html.js +0 -70
  345. data/test/selenium-core/scripts/narcissus-defs.js +0 -175
  346. data/test/selenium-core/scripts/narcissus-exec.js +0 -1054
  347. data/test/selenium-core/scripts/narcissus-parse.js +0 -1003
  348. data/test/selenium-core/scripts/se2html.js +0 -63
  349. data/test/selenium-core/scripts/selenium-api.js +0 -2409
  350. data/test/selenium-core/scripts/selenium-browserbot.js +0 -2203
  351. data/test/selenium-core/scripts/selenium-browserdetect.js +0 -150
  352. data/test/selenium-core/scripts/selenium-commandhandlers.js +0 -377
  353. data/test/selenium-core/scripts/selenium-executionloop.js +0 -175
  354. data/test/selenium-core/scripts/selenium-logging.js +0 -147
  355. data/test/selenium-core/scripts/selenium-remoterunner.js +0 -571
  356. data/test/selenium-core/scripts/selenium-testrunner.js +0 -1333
  357. data/test/selenium-core/scripts/selenium-version.js +0 -5
  358. data/test/selenium-core/scripts/user-extensions.js +0 -3
  359. data/test/selenium-core/scripts/user-extensions.js.sample +0 -75
  360. data/test/selenium-core/scripts/xmlextras.js +0 -153
  361. data/test/selenium-core/selenium-logo.png +0 -0
  362. data/test/selenium-core/selenium-test.css +0 -43
  363. data/test/selenium-core/selenium.css +0 -299
  364. data/test/selenium-core/xpath/dom.js +0 -428
  365. data/test/selenium-core/xpath/misc.js +0 -252
  366. data/test/selenium-core/xpath/xpath.js +0 -2223
  367. data/test/selenium/_login_as_cmsadmin.rsel +0 -4
  368. data/test/selenium/dashboard.rsel +0 -5
  369. data/test/selenium/html_blocks.rsel +0 -4
  370. data/test/selenium/login/failed_login.rsel +0 -8
  371. data/test/selenium/login/successful_login.rsel +0 -9
  372. data/test/selenium/page_templates.rsel +0 -12
  373. data/test/selenium/pages/edit_properties.rsel +0 -5
  374. data/test/selenium/site/view_home_page.rsel +0 -4
  375. data/test/selenium/sitemap/move_page.rsel +0 -9
  376. data/test/selenium/sitemap/open_section.rsel +0 -6
  377. data/test/selenium/sitemap/select_page.rsel +0 -12
  378. data/test/selenium/sitemap/select_section.rsel +0 -17
  379. data/test/test_helper.rb +0 -193
  380. data/test/test_logging.rb +0 -67
  381. data/test/unit/behaviors/attaching_test.rb +0 -357
  382. data/test/unit/behaviors/connectable_test.rb +0 -29
  383. data/test/unit/behaviors/dynamic_attributes_test.rb +0 -38
  384. data/test/unit/behaviors/publishable_test.rb +0 -84
  385. data/test/unit/behaviors/searching_test.rb +0 -102
  386. data/test/unit/behaviors/taggable_test.rb +0 -109
  387. data/test/unit/behaviors/versioning_test.rb +0 -36
  388. data/test/unit/extensions/active_record/base_test.rb +0 -10
  389. data/test/unit/extensions/hash_test.rb +0 -17
  390. data/test/unit/extensions/integer_test.rb +0 -10
  391. data/test/unit/helpers/application_helper_test.rb +0 -77
  392. data/test/unit/helpers/form_builder_test.rb +0 -36
  393. data/test/unit/helpers/menu_helper_test.rb +0 -242
  394. data/test/unit/helpers/page_helper_test.rb +0 -67
  395. data/test/unit/helpers/path_helper_test.rb +0 -57
  396. data/test/unit/lib/acts_as_content_page_test.rb +0 -72
  397. data/test/unit/lib/cms/authentication/controller_test.rb +0 -20
  398. data/test/unit/lib/cms/sitemap_test.rb +0 -206
  399. data/test/unit/lib/cms_domain_support_test.rb +0 -43
  400. data/test/unit/lib/command_line_test.rb +0 -70
  401. data/test/unit/lib/content_block_test.rb +0 -203
  402. data/test/unit/lib/content_rendering_support_test.rb +0 -40
  403. data/test/unit/lib/generators_test.rb +0 -40
  404. data/test/unit/lib/routes_test.rb +0 -57
  405. data/test/unit/models/attachment_test.rb +0 -116
  406. data/test/unit/models/category_test.rb +0 -40
  407. data/test/unit/models/category_type_test.rb +0 -8
  408. data/test/unit/models/connector_test.rb +0 -152
  409. data/test/unit/models/content_type_test.rb +0 -56
  410. data/test/unit/models/email_page_portlet_test.rb +0 -14
  411. data/test/unit/models/file_block_test.rb +0 -230
  412. data/test/unit/models/group_test.rb +0 -13
  413. data/test/unit/models/html_block_test.rb +0 -102
  414. data/test/unit/models/link_test.rb +0 -52
  415. data/test/unit/models/page_partial_test.rb +0 -29
  416. data/test/unit/models/page_route_test.rb +0 -29
  417. data/test/unit/models/page_template_test.rb +0 -40
  418. data/test/unit/models/page_test.rb +0 -792
  419. data/test/unit/models/permission_test.rb +0 -10
  420. data/test/unit/models/portlet_test.rb +0 -69
  421. data/test/unit/models/sections_test.rb +0 -264
  422. data/test/unit/models/site_test.rb +0 -50
  423. data/test/unit/models/task_test.rb +0 -141
  424. data/test/unit/models/user_test.rb +0 -352
  425. data/test/unit/schema_statements_test.rb +0 -41
@@ -1,29 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- class PagePartialTest < ActiveSupport::TestCase
4
- def setup
5
- @page_partial = Factory.build(:page_partial, :name => "_test")
6
- File.delete(@page_partial.file_path) if File.exists?(@page_partial.file_path)
7
- end
8
-
9
- def teardown
10
- File.delete(@page_partial.file_path) if File.exists?(@page_partial.file_path)
11
- end
12
-
13
- def test_create
14
- assert !File.exists?(@page_partial.file_path), "partial file already exists"
15
- assert_valid @page_partial
16
- assert @page_partial.save
17
- assert File.exists?(@page_partial.file_path), "partial file was not written to disk"
18
- end
19
-
20
- def test_for_valid_name
21
- assert_not_valid Factory.build(:page_partial, :name => "Fancy")
22
- assert_not_valid Factory.build(:page_partial, :name => "foo bar")
23
- partial = Factory.build(:page_partial, :name => "subpage_1_column")
24
- assert_valid partial
25
- assert_equal "_subpage_1_column", partial.name
26
- assert_valid Factory.build(:page_partial, :name => "_sidebar")
27
- end
28
-
29
- end
@@ -1,29 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- class PageRouteTest < ActiveSupport::TestCase
4
-
5
- def test_create
6
- page = Factory(:page, :path => "/things/overview")
7
- route = page.page_routes.build(:pattern => "/things/:year/:month/:day")
8
- route.add_requirement(:year, "\\d{4,}")
9
- route.add_requirement(:month, "\\d{2,}")
10
- route.add_requirement(:day, "\\d{2,}")
11
- route.add_condition(:method, "get")
12
-
13
- assert route.save
14
- assert_equal "/things/:year/:month/:day", route.pattern
15
- assert_equal({
16
- :controller => "cms/content",
17
- :action => "show_page_route",
18
- :_page_route_id => route.id.to_s,
19
- :requirements => {
20
- :year => /\d{4,}/,
21
- :month => /\d{2,}/,
22
- :day => /\d{2,}/
23
- }, :conditions => {
24
- :method => :get
25
- }
26
- }, route.options_map)
27
- end
28
-
29
- end
@@ -1,40 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- class PageTemplateTest < ActiveSupport::TestCase
4
- def setup
5
- @page_template = Factory.build(:page_template, :name => "test")
6
- File.delete(@page_template.file_path) if File.exists?(@page_template.file_path)
7
- end
8
-
9
- def teardown
10
- File.delete(@page_template.file_path) if File.exists?(@page_template.file_path)
11
- end
12
-
13
- def test_create_and_destroy
14
- assert !File.exists?(@page_template.file_path), "template file already exists"
15
- assert_valid @page_template
16
- assert @page_template.save
17
- assert File.exists?(@page_template.file_path), "template file was not written to disk"
18
- @page_template.destroy
19
- assert !File.exists?(@page_template.file_path), "template file was not removed on destroy"
20
- end
21
-
22
- def test_for_valid_name
23
- assert_not_valid Factory.build(:page_template, :name => "Fancy")
24
- assert_not_valid Factory.build(:page_template, :name => "foo bar")
25
- assert_valid Factory.build(:page_template, :name => "subpage_1_column")
26
- end
27
-
28
- def test_find_by_file_name
29
- assert @page_template.save, "Could not save page template"
30
- assert_equal @page_template, PageTemplate.find_by_file_name("test.html.erb")
31
- assert_nil PageTemplate.find_by_file_name("fail.html.erb")
32
- assert_nil PageTemplate.find_by_file_name("fail.erb")
33
- assert_nil PageTemplate.find_by_file_name("fail")
34
- assert_nil PageTemplate.find_by_file_name(nil)
35
- end
36
-
37
- def test_default_body
38
- assert_not_nil PageTemplate.default_body
39
- end
40
- end
@@ -1,792 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- class CreatingPageTest < ActiveRecord::TestCase
4
-
5
- def test_it
6
-
7
- @page = Page.new(
8
- :name => "Test",
9
- :path => "test",
10
- :section => root_section,
11
- :publish_on_save => true)
12
-
13
- assert @page.save
14
- assert_path_is_unique
15
-
16
- @page.update_attributes(:name => "Test v2")
17
-
18
- page = Page.find_live_by_path("/test")
19
- assert_equal page.name, "Test"
20
- assert_equal 1, page.version
21
-
22
- end
23
-
24
- test "Creating a page builds a section node" do
25
- @page = Page.create!(:name=>"Hello", :path=>"/hello", :section => Factory(:root_section))
26
- assert_not_nil @page.section_node
27
- end
28
-
29
- test "page with no parent" do
30
- @page = Page.new
31
- assert_nil @page.parent
32
- end
33
-
34
- test "#section is alias for #parent" do
35
- @page = Page.new
36
- assert_nil @page.section
37
- end
38
-
39
-
40
- protected
41
- def assert_path_is_unique
42
- page = Factory.build(:page, :path => @page.path)
43
- assert_not_valid page
44
- assert_has_error_on page, :path
45
- end
46
-
47
- end
48
-
49
- class VersionTest < ActiveSupport::TestCase
50
-
51
- def setup
52
- @page = Factory(:public_page)
53
- @another_page = Factory(:public_page)
54
- end
55
-
56
- test "draft_version is stored on pages" do
57
- assert_equal 1, @page.version
58
- assert_equal 1, @page.latest_version
59
- end
60
-
61
- test "#update increments the latest_version" do
62
- @page.name = "New"
63
- @page.save!
64
- @page.reload
65
-
66
- assert_equal 1, @page.version
67
- assert_equal 2, @page.latest_version
68
-
69
- assert_equal 1, @another_page.reload.latest_version, "Should only update its own version, not other tables"
70
- end
71
-
72
- test "live? using latest version" do
73
- assert @page.live?
74
-
75
- @page.update_attributes(:name => "New")
76
- @page.reload
77
- refute @page.live?
78
-
79
- @page.publish!
80
- @page.reload
81
- assert @page.live?
82
- end
83
-
84
- test "live? as_of_version" do
85
- @page.update_attributes(:name => "New")
86
- @page.publish!
87
-
88
- v1 = @page.as_of_version(1)
89
- assert v1.live?
90
- end
91
- end
92
- class PageTest < ActiveRecord::TestCase
93
-
94
- def test_creating_page_with_reserved_path
95
- @page = Page.new(:name => "FAIL", :path => "/cms")
96
- assert_not_valid @page
97
- assert_has_error_on(@page, :path, "is invalid, '/cms' a reserved path")
98
-
99
- @page = Page.new(:name => "FAIL", :path => "/cache")
100
- assert_not_valid @page
101
- assert_has_error_on(@page, :path, "is invalid, '/cache' a reserved path")
102
-
103
- @page = Page.new(:name => "FTW", :path => "/whatever")
104
- assert_valid @page
105
- end
106
-
107
- def test_find_live_by_path
108
- @page = Factory.build(:page, :path => '/foo')
109
- assert_nil Page.find_live_by_path('/foo')
110
-
111
- @page.publish!
112
- reset(:page)
113
- assert_equal @page, Page.find_live_by_path('/foo')
114
-
115
- @page.update_attributes(:path => '/bar')
116
- assert_equal @page, Page.find_live_by_path('/foo')
117
- assert_nil Page.find_live_by_path('/bar')
118
-
119
- @page.publish!
120
- reset(:page)
121
- assert_nil Page.find_live_by_path('/foo')
122
- assert_equal @page, Page.find_live_by_path('/bar')
123
- end
124
-
125
- def test_find_live_by_path_after_delete
126
- @page = Factory.build(:page, :path => '/foo')
127
- @page.publish!
128
- reset(:page)
129
-
130
- @page.mark_as_deleted!
131
- assert_nil Page.find_live_by_path('/foo')
132
-
133
- @new_page = Factory.build(:page, :path => '/foo')
134
- assert_nil Page.find_live_by_path('/foo')
135
-
136
- @new_page.publish!
137
- reset(:new_page)
138
- assert_equal @new_page, Page.find_live_by_path('/foo')
139
- assert_not_equal @page, @new_page
140
- end
141
-
142
- def test_path_normalization
143
- page = Factory.build(:page, :path => 'foo/bar')
144
- assert_valid page
145
- assert_equal "/foo/bar", page.path
146
-
147
- page = Factory.build(:page, :path => '/foo/bar')
148
- assert_valid page
149
- assert_equal "/foo/bar", page.path
150
- end
151
-
152
- def test_template
153
- page_template = Factory(:page_template, :name => 'test')
154
- page = Factory.build(:page, :template_file_name => 'test.html.erb')
155
- assert_equal 'test.html.erb', page.template_file_name
156
- assert_equal 'Test (html/erb)', page.template_name
157
- assert_equal page_template, page.template
158
- assert_equal 'templates/test', page.layout
159
-
160
- page = Factory.build(:page, :template_file_name => 'foo.html.erb')
161
- assert_equal 'foo.html.erb', page.template_file_name
162
- assert_equal 'Foo (html/erb)', page.template_name
163
- assert_nil page.template
164
- assert_equal 'templates/foo', page.layout
165
- end
166
-
167
- def test_revision_comments
168
- page = Factory(:page, :section => root_section, :name => "V1")
169
-
170
- assert_equal 'Created', page.live_version.version_comment
171
-
172
- assert page.reload.save
173
- assert_equal 'Created', page.reload.live_version.version_comment
174
- assert_equal page.live_version.version_comment,
175
- page.as_of_version(page.version).live_version.version_comment
176
-
177
- page.update_attributes(:name => "V2")
178
- assert_equal 'Changed name', page.draft.version_comment
179
- assert_equal 'Created', page.live_version.version_comment
180
-
181
- block = Factory(:html_block, :name => "Hello, World!")
182
- page.create_connector(block, "main")
183
- assert_equal "Html Block 'Hello, World!' was added to the 'main' container",
184
- page.draft.version_comment
185
- assert_equal 'Created', page.live_version.version_comment
186
- assert_equal 3, page.reload.draft.version
187
-
188
- page.create_connector(Factory(:html_block, :name => "Whatever"), "main")
189
- assert_equal 4, page.reload.draft.version
190
-
191
- page.move_connector_down(page.connectors.for_page_version(page.reload.draft.version).for_connectable(block).first)
192
- assert_equal "Html Block 'Hello, World!' was moved down within the 'main' container",
193
- page.draft.version_comment
194
- assert_equal 'Created', page.live_version.version_comment
195
-
196
- page.move_connector_up(page.connectors.for_page_version(page.reload.draft.version).for_connectable(block).first)
197
- assert_equal "Html Block 'Hello, World!' was moved up within the 'main' container",
198
- page.draft.version_comment
199
- assert_equal 'Created', page.live_version.version_comment
200
-
201
- page.remove_connector(page.connectors.for_page_version(page.reload.draft.version).for_connectable(block).first)
202
- assert_equal "Html Block 'Hello, World!' was removed from the 'main' container",
203
- page.draft.version_comment
204
- assert_equal 'Created', page.live_version.version_comment
205
-
206
- page.revert_to(1)
207
- assert_equal "Reverted to version 1",
208
- page.reload.draft.version_comment
209
- assert_equal 'Created', page.live_version.version_comment
210
-
211
- assert_equal "Created", page.as_of_version(1).current_version.version_comment
212
- assert_equal "Changed name", page.as_of_version(2).current_version.version_comment
213
- assert_equal "Reverted to version 1", page.draft.version_comment
214
-
215
- end
216
-
217
- def test_container_live
218
- page = Factory(:page)
219
- published = Factory(:html_block, :publish_on_save => true)
220
- unpublished = Factory(:html_block)
221
- page.create_connector(published, "main")
222
- page.create_connector(unpublished, "main")
223
- assert !page.container_published?("main")
224
- assert unpublished.publish
225
- assert page.container_published?("main")
226
- end
227
-
228
- def test_move_page_to_another_section
229
- page = Factory(:public_page)
230
- new_section = Factory(:public_section)
231
-
232
- assert_not_equal new_section, page.section
233
- page.section = new_section
234
- assert page.save
235
- assert_equal new_section, page.section
236
- end
237
-
238
- def test_deleting_page
239
- page = Factory(:page)
240
-
241
- page_count = Page.count_with_deleted
242
- page_version_count = page.versions.count
243
- assert !page.deleted?
244
-
245
- page.destroy
246
-
247
- assert_equal page_count, Page.count_with_deleted
248
- assert_incremented page_version_count, page.versions.count
249
- assert page.deleted?
250
- assert_raise ActiveRecord::RecordNotFound do
251
- Page.find(page.id)
252
- end
253
- end
254
-
255
- def test_adding_a_block_to_a_page_puts_page_in_draft_mode
256
- @page = Factory(:page, :section => root_section, :publish_on_save => true)
257
- @block = Factory(:html_block, :publish_on_save => true)
258
- reset(:page, :block)
259
- assert @page.published?
260
- assert @block.published?
261
- @page.create_connector(@block, "main")
262
- reset(:page, :block)
263
- assert !@page.live?
264
- end
265
-
266
- def test_reverting_and_then_publishing_a_page
267
- @page = Factory(:page, :section => root_section, :publish_on_save => true)
268
-
269
- @block = Factory(:html_block,
270
- :connect_to_page_id => @page.id,
271
- :connect_to_container => "main")
272
- @page.publish
273
-
274
- reset(:page, :block)
275
-
276
- assert_equal 2, @page.version
277
- assert_equal 1, @page.connectors.for_page_version(@page.version).count
278
-
279
- @block.update_attributes(:content => "Something else")
280
- @page.publish!
281
- reset(:page, :block)
282
-
283
- assert_equal 1, @page.connectors.for_page_version(@page.version).count
284
- assert_equal 2, @block.version
285
- assert_equal 3, @page.version
286
- assert @block.live?
287
- assert @page.live?
288
-
289
- @page.revert_to(2)
290
- reset(:page, :block)
291
-
292
- assert_equal 3, @page.version
293
- assert_equal 4, @page.draft.version
294
- assert_equal 2, @block.version
295
- assert_equal 3, @block.draft.version
296
- assert_equal 1, @page.connectors.for_page_version(@page.version).count
297
- assert_equal 1, @page.connectors.for_page_version(@page.draft.version).count
298
- assert !@page.live?
299
- assert !@block.live?
300
-
301
- end
302
-
303
- end
304
-
305
- class UserStampingTest < ActiveRecord::TestCase
306
-
307
- def setup
308
- @first_guy = Factory(:user, :login => "first_guy")
309
- @next_guy = Factory(:user, :login => "next_guy")
310
- User.current = @first_guy
311
- end
312
-
313
- def teardown
314
- User.current = nil
315
- end
316
-
317
- def test_user_stamps_are_applied_to_versions
318
- page = Factory(:page, :name => "Original Value")
319
-
320
- assert_equal page, page.draft.page
321
- assert_equal @first_guy, page.updated_by
322
-
323
- User.current = @new_guy
324
- page.update_attributes(:name => "Something Different")
325
-
326
- assert_equal "Something Different", page.draft.name
327
- assert_equal "Original Value", page.reload.name
328
- assert_equal "Original Value", page.versions.first.name
329
- assert_equal @first_guy, page.versions.first.updated_by
330
- assert_equal @new_guy, page.versions.last.updated_by
331
- assert_equal 2, page.versions.count
332
- end
333
-
334
- end
335
-
336
- class PageInSectionTest < ActiveRecord::TestCase
337
-
338
- def setup
339
- @root = Factory(:root_section, :name=>"First Section")
340
- @football_section = Factory :public_section, :name=>"Football", :parent=>@root
341
- @baseball_section = Factory :public_section, :name=>"Baseball", :parent=>@root
342
-
343
- @football_page = Factory :public_page, :section=>@football_section
344
- @baseball_page = Factory :public_page, :section=>@baseball_section
345
- end
346
-
347
- test "in_section if immediate parent section is included" do
348
- assert @football_page.in_section?("Football")
349
- assert !@baseball_page.in_section?("Football")
350
- end
351
-
352
- test "in_section if immediate parent's name is included" do
353
- assert @football_page.in_section?("Football")
354
- assert !@baseball_page.in_section?("Football")
355
- end
356
-
357
- test "in_section if any ancestor is included" do
358
- assert @football_page.in_section?(@root)
359
- assert @baseball_page.in_section?(@root)
360
- assert @football_page.in_section?("First Section")
361
- assert @baseball_page.in_section?("First Section")
362
- end
363
-
364
- test "#top_level_section" do
365
- assert_equal @football_section, @football_page.top_level_section
366
- assert_equal @baseball_section, @baseball_page.top_level_section
367
-
368
- second_level_section = Factory(:public_section, :parent=>@football_section)
369
- second_level_page = Factory(:public_page, :section=>second_level_section)
370
- assert_equal @football_section, second_level_page.top_level_section
371
- end
372
-
373
- test "#top_level_section caches result to avoid repeated requests" do
374
- top = @football_page.top_level_section
375
- assert_equal top.object_id, @football_page.top_level_section.object_id
376
- end
377
- end
378
-
379
- class PageWithAssociatedBlocksTest < ActiveRecord::TestCase
380
- def setup
381
- super
382
- @page = Factory(:page, :section => root_section, :name => "Bar")
383
- @block = Factory(:html_block)
384
- @other_connector = Factory(:connector, :connectable => @block, :connectable_version => @block.version)
385
- @page_connector = Factory(:connector, :page => @page, :page_version => @page.version, :connectable => @block, :connectable_version => @block.version)
386
- end
387
-
388
- # It should create a new page version and a new connector
389
- def test_updating_the_page_with_changes
390
- connector_count = Connector.count
391
- page_version = @page.version
392
-
393
- @page.update_attributes(:name => "Foo")
394
-
395
- assert_incremented connector_count, Connector.count
396
- assert_equal page_version, @page.version
397
- assert_incremented page_version, @page.draft.version
398
- end
399
-
400
- # It should not create a new page version or a new connector
401
- def test_updating_the_page_without_changes
402
- connector_count = Connector.count
403
- page_version = @page.version
404
-
405
- @page.update_attributes(:name => @page.name)
406
-
407
- assert_equal connector_count, Connector.count
408
- assert_equal page_version, @page.version
409
- end
410
-
411
- def test_deleting_a_page
412
- connector_count = Connector.count
413
- assert Connector.exists?(@page_connector.id)
414
- assert Connector.exists?(@other_connector.id)
415
-
416
- @page.destroy
417
-
418
- assert_decremented connector_count, Connector.count
419
- assert !Connector.exists?(@page_connector.id)
420
- assert Connector.exists?(@other_connector.id)
421
- assert HtmlBlock.exists?(@block.id)
422
- assert !@block.deleted?
423
- end
424
- end
425
-
426
- class AddingBlocksToPageTest < ActiveRecord::TestCase
427
- def test_that_it_works
428
- @page = Factory(:page, :section => root_section)
429
- @block = Factory(:html_block)
430
- @block2 = Factory(:html_block)
431
- @first_conn = @page.create_connector(@block, "testing")
432
- @second_conn = @page.create_connector(@block2, "testing")
433
-
434
- page_version_count = @page.versions.count
435
- connector_count = Connector.count
436
-
437
- @conn = @page.create_connector(@block2, "testing")
438
-
439
- assert_equal 1, @page.reload.version
440
- assert_equal 4, @conn.page_version
441
- assert_equal 1, @conn.connectable_version
442
- assert_incremented page_version_count, @page.versions.count
443
- assert_equal 3, @page.connectors.for_page_version(@page.draft.version).count
444
- assert_equal connector_count + 3, Connector.count
445
-
446
- # should leave the previous connectors untouched
447
- @conns = @page.connectors.all(:conditions => ["page_version < 4"], :order => "id")
448
-
449
- assert_equal 3, @conns.size
450
-
451
- assert_properties @conns[0], {
452
- :connectable => @block,
453
- :page => @page,
454
- :page_version => 2,
455
- :connectable_version => 1
456
- }
457
-
458
- assert_properties @conns[1], {
459
- :connectable => @block,
460
- :page => @page,
461
- :page_version => 3,
462
- :connectable_version => 1
463
- }
464
-
465
- assert_properties @conns[2], {
466
- :connectable => @block2,
467
- :page => @page,
468
- :page_version => 3,
469
- :connectable_version => 1
470
- }
471
-
472
- @conns = @page.connectors.for_page_version(4).all(:order => "id")
473
- assert_equal 3, @conns.size
474
-
475
- assert_properties @conns[0], {
476
- :connectable => @block,
477
- :page => @page,
478
- :page_version => 4,
479
- :connectable_version => 1
480
- }
481
-
482
- assert_properties @conns[1], {
483
- :connectable => @block2,
484
- :page => @page,
485
- :page_version => 4,
486
- :connectable_version => 1
487
- }
488
-
489
- assert_properties @conns[2], {
490
- :connectable => @block2,
491
- :page => @page,
492
- :page_version => 4,
493
- :connectable_version => 1
494
- }
495
-
496
- end
497
- end
498
-
499
- class PageWithTwoBlocksTest < ActiveRecord::TestCase
500
- def setup
501
- super
502
- @page = Factory(:page, :section => root_section)
503
- @foo_block = Factory(:html_block, :name => "Foo Block")
504
- @bar_block = Factory(:html_block, :name => "Bar Block")
505
- @page.create_connector(@foo_block, "whatever")
506
- @page.reload
507
- @page.create_connector(@bar_block, "whatever")
508
- @page.reload
509
- end
510
-
511
- def test_editing_one_of_the_blocks_creates_a_new_version_of_the_page
512
- page_version = @page.draft.version
513
- @foo_block.update_attributes(:name => "Something Else")
514
- assert_incremented page_version, @page.draft.version
515
- end
516
-
517
- # A page that had 2 blocks added to it and then had them removed,
518
- # when reverting to the previous version,
519
- # should restore the connectors from the version being reverted to
520
- def test_removing_and_reverting_to_previous_version
521
- remove_both_connectors!
522
-
523
- connector_count = Connector.count
524
-
525
- @page.revert
526
-
527
- assert_incremented connector_count, Connector.count
528
-
529
- assert_properties @page.reload.connectors.for_page_version(@page.draft.version).first, {
530
- :page => @page,
531
- :page_version => 6,
532
- :connectable => @bar_block,
533
- :connectable_version => 1,
534
- :container => "whatever"}
535
- end
536
-
537
- # A page that had 2 blocks added to it and then had then removed,
538
- # when reverting to the version that had both connectors,
539
- # should restore the connectors that version
540
- def test_removing_and_reverting_to_version_with_both_connectors
541
- remove_both_connectors!
542
-
543
- connector_count = Connector.count
544
-
545
- @page.revert_to(3)
546
-
547
- assert_equal connector_count + 2, Connector.count
548
-
549
- foo, bar = @page.reload.connectors.for_page_version(@page.draft.version).find(:all, :order => "connectors.position")
550
- assert_properties foo, {
551
- :page => @page,
552
- :page_version => 6,
553
- :connectable => @foo_block,
554
- :connectable_version => 1,
555
- :container => "whatever"}
556
- assert_properties bar, {
557
- :page => @page,
558
- :page_version => 6,
559
- :connectable => @bar_block,
560
- :connectable_version => 1,
561
- :container => "whatever"}
562
-
563
- end
564
-
565
- def test_updating_one_of_the_blocks_and_reverting_to_version_before_the_update
566
- target_version = @page.draft.version
567
- @foo_block.update_attributes!(:name => "Foo V2")
568
- @page.reload
569
-
570
- page_version = @page.draft.version
571
- foo_block_version = @foo_block.draft.version
572
-
573
- @page.revert_to(target_version)
574
-
575
- assert_incremented page_version, @page.draft.version
576
- assert_incremented foo_block_version, @foo_block.draft.version
577
- assert_equal "Foo Block", @page.connectors.for_page_version(@page.draft.version).reload.first.connectable.name
578
- end
579
-
580
- protected
581
- def remove_both_connectors!
582
- @page.remove_connector(@page.connectors.for_page_version(@page.draft.version).first(:order => "connectors.position"))
583
- @page.remove_connector(@page.connectors.for_page_version(@page.draft.version).first(:order => "connectors.position"))
584
- end
585
-
586
- end
587
-
588
- class PageWithBlockTest < ActiveRecord::TestCase
589
- def setup
590
- @page = Factory(:page, :section => root_section)
591
- @block = Factory(:html_block)
592
- @conn = @page.create_connector(@block, "bar")
593
- @page.publish!
594
- @conn = @page.connectors.for_page_version(@page.version).for_connectable(@block).first
595
- end
596
-
597
- def test_removing_connector
598
- page_version = @page.draft.version
599
- page_version_count = Page::Version.count
600
- assert @page.published?
601
-
602
- @page.remove_connector(@conn)
603
-
604
- assert_incremented page_version_count, Page::Version.count
605
- assert_incremented page_version, @page.draft.version
606
-
607
- conns = @page.connectors.for_page_version(@page.draft.version-1).all
608
- assert_equal 1, conns.size
609
-
610
- assert_properties conns.first, {
611
- :page => @page,
612
- :page_version => page_version,
613
- :connectable => @block,
614
- :connectable_version => @block.version
615
- }
616
-
617
- assert @page.reload.connectors.for_page_version(@page.draft.version).empty?
618
- assert !@page.live?
619
- end
620
-
621
- def test_removing_multiple_connectors
622
- @block2 = Factory(:html_block)
623
- @conn2 = @page.create_connector(@block2, "bar")
624
- @conn3 = @page.create_connector(@block2, "foo")
625
- #Need to get the new connector that matches @conn2, otherwise you will delete an older version, not the latest connector
626
- @conn2 = Connector.first(:conditions => {:page_id => @page.reload.id, :page_version => @page.draft.version, :connectable_id => @block2.id, :connectable_version => @block2.version, :container => "bar"})
627
- @page.remove_connector(@conn2)
628
-
629
- page_version_count = Page::Version.count
630
- page_version = @page.draft.version
631
- page_connector_count = @page.connectors.for_page_version(@page.draft.version).count
632
-
633
- @conn = Connector.first(:conditions => {:page_id => @page.reload.id, :page_version => @page.draft.version, :connectable_id => @block2.id, :connectable_version => @block2.version, :container => "foo"})
634
- @page.remove_connector(@conn)
635
- @page.reload
636
-
637
- assert_incremented page_version_count, Page::Version.count
638
- assert_incremented page_version, @page.draft.version
639
- assert_decremented page_connector_count,
640
- @page.connectors.for_page_version(@page.draft.version).count
641
-
642
- conns = @page.connectors.all(:order => "id")
643
-
644
- #log_array conns, :id, :page_id, :page_version, :connectable_id, :connectable_type, :connectable_version, :container, :position
645
-
646
- assert_equal 9, conns.size
647
-
648
- assert_properties conns[0], {:page => @page, :page_version => 2, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
649
- assert_properties conns[1], {:page => @page, :page_version => 3, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
650
- assert_properties conns[2], {:page => @page, :page_version => 3, :connectable => @block2, :connectable_version => 1, :container => "bar", :position => 2}
651
- assert_properties conns[3], {:page => @page, :page_version => 4, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
652
- assert_properties conns[4], {:page => @page, :page_version => 4, :connectable => @block2, :connectable_version => 1, :container => "bar", :position => 2}
653
- assert_properties conns[5], {:page => @page, :page_version => 4, :connectable => @block2, :connectable_version => 1, :container => "foo", :position => 1}
654
- assert_properties conns[6], {:page => @page, :page_version => 5, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
655
- assert_properties conns[7], {:page => @page, :page_version => 5, :connectable => @block2, :connectable_version => 1, :container => "foo", :position => 1}
656
- assert_properties conns[8], {:page => @page, :page_version => 6, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
657
- end
658
-
659
- end
660
-
661
- class UnpublishedPageWithOnePublishedAndOneUnpublishedBlockTest < ActiveRecord::TestCase
662
- def setup
663
- @page = Factory(:page, :section => root_section)
664
- @published_block = Factory(:html_block, :name => "Published")
665
- @unpublished_block = Factory(:html_block, :name => "Unpublished")
666
- @page.create_connector(@published_block, "main")
667
- @page.create_connector(@unpublished_block, "main")
668
- @published_block.publish!
669
- @page.reload
670
- end
671
-
672
- def test_publishing_the_block
673
- @unpublished_block.publish!
674
- assert @unpublished_block.reload.published?
675
- @page.reload
676
- assert !@page.live?
677
- end
678
-
679
- def test_publishing_the_page
680
- page_version_count = Page::Version.count
681
- unpublished_block_version_count = @unpublished_block.versions.count
682
- published_block_version_count = @published_block.versions.count
683
-
684
- @page.publish!
685
-
686
- assert_equal page_version_count, Page::Version.count
687
- assert_equal unpublished_block_version_count, @unpublished_block.versions.count
688
- assert_equal published_block_version_count, @published_block.versions.count
689
- assert @page.live?
690
- assert @unpublished_block.reload.live?
691
- assert @published_block.reload.live?
692
- end
693
-
694
- end
695
-
696
- class RevertingABlockThatIsOnMultiplePagesTest < ActiveRecord::TestCase
697
- def test_that_it_reverts_both_pages
698
-
699
- # 1. Create a new page (Page 1, v1)
700
- @page1 = Factory(:page, :name => "Page 1")
701
- assert_equal 1, @page1.version
702
-
703
- # 2. Create a new page (Page 2, v1)
704
- @page2 = Factory(:page, :name => "Page 2")
705
-
706
- # 3. Add a new html block to Page 1. Save, don't publish. (Page 1, v2)
707
- @block = Factory(:html_block, :name => "Block v1",
708
- :connect_to_page_id => @page1.id, :connect_to_container => "main")
709
- reset(:page1, :page2, :block)
710
- assert_equal 2, @page1.draft.version
711
- assert_equal 1, @page2.draft.version
712
-
713
- # 4. Goto page 2, and select that block. (Page 2, v2)
714
- @page2.create_connector(@block, "main")
715
- reset(:page1, :page2, :block)
716
- assert_equal 2, @page1.draft.version
717
- assert_equal 2, @page2.draft.version
718
-
719
- # 5. Edit the block (Page 1, v3, Page 2, v3, Block v2)
720
- @block.update_attributes!(:name => "Block v2")
721
- reset(:page1, :page2, :block)
722
- assert_equal 3, @page1.draft.version
723
- assert_equal 3, @page2.draft.version
724
- assert_equal 2, @block.draft.version
725
-
726
- # 6. Revert page 1 to version 2. (Page 1, v4, Page 2, v4, Block v3)
727
- @page1.revert_to(2)
728
- reset(:page1, :page2, :block)
729
- assert_equal 4, @page1.draft.version
730
- assert_equal 3, @block.draft.version
731
- assert_equal 4, @page2.draft.version
732
-
733
- # Expected: Both page 1 and 2 will display the same version of the block (v1).
734
- assert_equal "Block v1", @page1.connectors.first.connectable.name
735
- assert_equal "Block v1", @page2.connectors.first.connectable.name
736
-
737
- end
738
-
739
- end
740
-
741
- class ViewingAPreviousVersionOfAPageTest < ActiveRecord::TestCase
742
-
743
- def test_that_it_shows_the_correct_version_of_the_blocks_it_is_connected_to
744
- # 1. Create Page A (v1)
745
- @page = Factory(:page, :section => root_section)
746
-
747
- # 2. Add new Html Block A to Page A (Page A v2, Block A v1)
748
- @block = Factory(:html_block, :name => "Block 1", :connect_to_page_id => @page.id, :connect_to_container => "main")
749
- reset(:page, :block)
750
- assert_equal 2, @page.draft.version
751
- assert_equal 1, @block.draft.version
752
-
753
- # 3. Publish Page A (Page A v3, Block A v2)
754
- @page.publish!
755
- reset(:page, :block)
756
- assert_equal 2, @page.draft.version
757
- assert_equal 1, @block.draft.version
758
-
759
- # 4. Edit Block A (Page A v4, Block A v3)
760
- @block.update_attributes!(:name => "Block 2")
761
- reset(:page, :block)
762
- assert_equal 2, @page.version
763
- assert_equal 3, @page.draft.version
764
- assert_equal 2, @block.draft.version
765
-
766
- # Open Page A in a different browser (as guest)
767
- @live_page = Page.find_live_by_path(@page.path)
768
- assert_equal 2, @live_page.version
769
- assert_equal "Block 1", @live_page.connectors.for_page_version(@live_page.version).first.connectable.live_version.name
770
-
771
- end
772
- end
773
-
774
- class PortletsDontHaveDraftsTest < ActiveRecord::TestCase
775
-
776
- def test_connectors_with_portlets_should_correctly_be_copied
777
- @page = Factory(:page, :section=> root_section)
778
- @portlet = TagCloudPortlet.create(:name=>"Portlet", :connect_to_page_id => @page.id, :connect_to_container => "main")
779
-
780
- # Check some assumptions.
781
- assert_equal 2, @page.draft.version, "Verifying that adding a portlet correctly increments page version."
782
- connectors = Connector.for_connectable(@portlet)
783
- assert_equal 1, connectors.size, "This portlet should have only 1 connector."
784
-
785
- # Verifies that an exception is not thrown while removing connectors
786
- @page.remove_connector(connectors[0])
787
-
788
- assert_equal 3, @page.draft.version
789
- assert @page.reload.connectors.for_page_version(@page.draft.version).empty?, "Verify that all connectors for the latest page are removed."
790
- end
791
- end
792
-