browsercms 3.4.2 → 3.5.0.rc1

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 (367) hide show
  1. data/README.markdown +1 -0
  2. data/app/assets/images/cms/file-uploading.gif +0 -0
  3. data/app/assets/javascripts/cms/application.js +1 -0
  4. data/app/assets/javascripts/cms/attachment_manager.js.erb +87 -0
  5. data/app/assets/javascripts/cms/core_library.js.erb +38 -25
  6. data/app/assets/stylesheets/cms/application.css.erb +1 -0
  7. data/app/assets/stylesheets/cms/attachment_manager.css.scss +28 -0
  8. data/app/controllers/cms/application_controller.rb +1 -1
  9. data/app/controllers/cms/attachments_controller.rb +45 -10
  10. data/app/controllers/cms/cache_controller.rb +1 -1
  11. data/app/controllers/cms/content_block_controller.rb +134 -122
  12. data/app/controllers/cms/content_controller.rb +143 -155
  13. data/app/controllers/cms/dashboard_controller.rb +11 -9
  14. data/app/controllers/cms/error_handling.rb +19 -7
  15. data/app/controllers/cms/file_blocks_controller.rb +2 -2
  16. data/app/controllers/cms/home_controller.rb +3 -0
  17. data/app/controllers/cms/section_nodes_controller.rb +52 -44
  18. data/app/controllers/cms/sections_controller.rb +4 -2
  19. data/app/controllers/cms/toolbar_controller.rb +14 -10
  20. data/app/helpers/cms/application_helper.rb +23 -19
  21. data/app/helpers/cms/form_builder.rb +65 -18
  22. data/app/helpers/cms/mobile_helper.rb +19 -0
  23. data/app/helpers/cms/path_helper.rb +30 -4
  24. data/app/helpers/cms/rendering_helper.rb +9 -1
  25. data/app/models/cms/abstract_file_block.rb +6 -6
  26. data/app/models/cms/attachment.rb +196 -107
  27. data/app/models/cms/category.rb +3 -0
  28. data/app/models/cms/category_type.rb +2 -0
  29. data/app/models/cms/connector.rb +3 -0
  30. data/app/models/cms/content_type.rb +3 -0
  31. data/app/models/cms/content_type_group.rb +2 -0
  32. data/app/models/cms/dynamic_view.rb +4 -0
  33. data/app/models/cms/email_message.rb +2 -0
  34. data/app/models/cms/file_block.rb +9 -2
  35. data/app/models/cms/group.rb +5 -2
  36. data/app/models/cms/group_permission.rb +2 -0
  37. data/app/models/cms/group_section.rb +3 -0
  38. data/app/models/cms/group_type.rb +2 -0
  39. data/app/models/cms/group_type_permission.rb +2 -0
  40. data/app/models/cms/html_block.rb +3 -2
  41. data/app/models/cms/image_block.rb +13 -2
  42. data/app/models/cms/page.rb +14 -3
  43. data/app/models/cms/page_route.rb +4 -0
  44. data/app/models/cms/page_route_condition.rb +1 -0
  45. data/app/models/cms/page_route_option.rb +2 -0
  46. data/app/models/cms/page_route_requirement.rb +1 -0
  47. data/app/models/cms/permission.rb +3 -0
  48. data/app/models/cms/portlet.rb +2 -2
  49. data/app/models/cms/redirect.rb +2 -0
  50. data/app/models/cms/section.rb +15 -1
  51. data/app/models/cms/section_node.rb +1 -0
  52. data/app/models/cms/site.rb +3 -0
  53. data/app/models/cms/tag.rb +2 -0
  54. data/app/models/cms/tagging.rb +3 -0
  55. data/app/models/cms/task.rb +5 -1
  56. data/app/models/cms/user.rb +1 -1
  57. data/app/models/cms/user_group_membership.rb +3 -0
  58. data/app/views/cms/attachments/_attachment.html.erb +14 -0
  59. data/app/views/cms/attachments/_attachment_table.html.erb +17 -0
  60. data/app/views/cms/attachments/_attachment_wrapper.html.erb +4 -0
  61. data/app/views/cms/blocks/index.html.erb +2 -3
  62. data/app/views/cms/blocks/show.html.erb +1 -1
  63. data/app/views/cms/dynamic_views/index.html.erb +1 -1
  64. data/app/views/cms/email_messages/index.html.erb +1 -1
  65. data/app/views/cms/file_blocks/_form.html.erb +1 -27
  66. data/app/views/cms/file_blocks/_section_selector.html.erb +13 -0
  67. data/app/views/cms/file_blocks/render.html.erb +3 -3
  68. data/app/views/cms/form_builder/_cms_attachment_manager.html.erb +26 -0
  69. data/app/views/cms/form_builder/_cms_file_field.html.erb +27 -35
  70. data/app/views/cms/groups/index.html.erb +1 -1
  71. data/app/views/cms/image_blocks/_form.html.erb +1 -27
  72. data/app/views/cms/image_blocks/render.html.erb +4 -1
  73. data/app/views/cms/page_routes/index.html.erb +3 -0
  74. data/app/views/cms/shared/error.xml.erb +8 -0
  75. data/app/views/cms/tags/render.html.erb +1 -1
  76. data/app/views/cms/toolbar/_mobile_toggle.html.erb +33 -0
  77. data/app/views/cms/users/index.html.erb +1 -1
  78. data/app/views/layouts/_page_toolbar.html.erb +2 -1
  79. data/bin/bcms +21 -26
  80. data/config/routes.rb +3 -2
  81. data/db/browsercms.seeds.rb +2 -1
  82. data/db/migrate/20111130221145_browsercms340.rb +5 -4
  83. data/db/migrate/20120329144406_browsercms350.rb +32 -0
  84. data/{test/dummy/db → db}/schema.rb +97 -128
  85. data/{performance_tuning_notes.md → doc/performance_tuning_notes.md} +0 -0
  86. data/doc/release_notes.md +74 -0
  87. data/lib/browsercms.rb +3 -0
  88. data/lib/cms/acts/content_block.rb +10 -2
  89. data/lib/cms/addressable.rb +8 -0
  90. data/lib/cms/attachments/attachment_serving.rb +59 -0
  91. data/lib/cms/attachments/configuration.rb +88 -0
  92. data/lib/cms/behaviors/attaching.rb +305 -136
  93. data/lib/cms/behaviors/connecting.rb +3 -4
  94. data/lib/cms/behaviors/dynamic_attributes.rb +121 -118
  95. data/lib/cms/behaviors/flush_cache_on_change.rb +1 -3
  96. data/lib/cms/behaviors/naming.rb +16 -0
  97. data/lib/cms/behaviors/pagination.rb +4 -1
  98. data/lib/cms/behaviors/publishing.rb +9 -3
  99. data/lib/cms/behaviors/searching.rb +3 -8
  100. data/lib/cms/behaviors/soft_deleting.rb +1 -0
  101. data/lib/cms/behaviors/taggable.rb +2 -0
  102. data/lib/cms/behaviors/versioning.rb +73 -120
  103. data/lib/cms/caching.rb +53 -11
  104. data/lib/cms/commands/actions.rb +19 -2
  105. data/lib/cms/configuration.rb +44 -0
  106. data/lib/cms/content_rendering_support.rb +9 -6
  107. data/lib/cms/default_accessible.rb +13 -0
  108. data/lib/cms/domain_support.rb +22 -0
  109. data/lib/cms/engine.rb +40 -19
  110. data/lib/cms/engine_helper.rb +54 -0
  111. data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +14 -2
  112. data/lib/cms/mobile_aware.rb +67 -0
  113. data/lib/cms/route_extensions.rb +3 -0
  114. data/lib/cms/upgrades/v3_5_0.rb +155 -0
  115. data/lib/cms/version.rb +6 -1
  116. data/lib/generators/cms/content_block/content_block_generator.rb +14 -9
  117. data/lib/generators/cms/content_block/templates/_form.html.erb +17 -6
  118. data/lib/generators/cms/content_block/templates/render.html.erb +12 -5
  119. data/lib/generators/cms/template/template_generator.rb +11 -2
  120. data/lib/tasks/cms.rake +23 -0
  121. data/lib/templates/active_record/model/model.rb +6 -0
  122. metadata +127 -517
  123. data/.gitignore +0 -24
  124. data/.rvmrc +0 -2
  125. data/Gemfile +0 -29
  126. data/Gemfile.lock +0 -196
  127. data/Rakefile +0 -97
  128. data/app/assets/images/browsercms/.gitkeep +0 -0
  129. data/app/controllers/browsercms/application_controller.rb +0 -4
  130. data/browsercms.gemspec +0 -35
  131. data/config/cucumber.yml +0 -8
  132. data/config/database.jdbcmysql.yml +0 -30
  133. data/config/database.mysql.yml +0 -27
  134. data/config/database.postgres.yml +0 -25
  135. data/config/database.sqlite3.yml +0 -11
  136. data/config/environment.rb +0 -6
  137. data/config/initializers/query_reviewer_patch.rb +0 -12
  138. data/config/initializers/rack_1_2_1_patch.rb +0 -12
  139. data/config/locales/en.yml +0 -5
  140. data/features/acts_as_content_page.feature +0 -62
  141. data/features/add_content_to_pages.feature +0 -45
  142. data/features/caching.feature +0 -13
  143. data/features/ckeditor.feature +0 -11
  144. data/features/commands/confirm_aruba_works.feature +0 -24
  145. data/features/commands/generate_module.feature +0 -54
  146. data/features/commands/install_browsercms.feature +0 -21
  147. data/features/commands/new_demo_project.feature +0 -30
  148. data/features/commands/new_projects.feature +0 -50
  149. data/features/commands/upgrade_modules_to_3_4_0_from_3_1_x.feature +0 -19
  150. data/features/commands/upgrade_project_to_3_4_0_from_3_3_x.feature +0 -52
  151. data/features/commands/upgrading_modules.feature +0 -67
  152. data/features/content_blocks/manage_custom_blocks.feature +0 -67
  153. data/features/content_blocks/manage_html_blocks.feature +0 -48
  154. data/features/content_blocks/manage_image_blocks.feature +0 -41
  155. data/features/content_files.feature +0 -37
  156. data/features/content_pages.feature +0 -21
  157. data/features/generators/content_blocks_for_modules.feature +0 -58
  158. data/features/generators/content_blocks_for_projects.feature +0 -109
  159. data/features/install_content.feature +0 -25
  160. data/features/jquery-testplan.txt +0 -12
  161. data/features/manage_groups.feature +0 -33
  162. data/features/manage_page_routes.feature +0 -72
  163. data/features/manage_redirects.feature +0 -20
  164. data/features/manage_sections.feature +0 -12
  165. data/features/manage_tasks.feature +0 -25
  166. data/features/manage_users.feature +0 -38
  167. data/features/page_templates.feature +0 -49
  168. data/features/portlets/email_friend_portlet.feature +0 -29
  169. data/features/portlets/portlets.feature +0 -100
  170. data/features/portlets/tag_cloud_portlet.feature +0 -28
  171. data/features/sitemap/create_pages.feature +0 -15
  172. data/features/sitemap/manage_links.feature +0 -29
  173. data/features/sitemap/sitemap.feature +0 -18
  174. data/features/step_definitions/acts_as_content_page_steps.rb.rb +0 -3
  175. data/features/step_definitions/ckeditor_steps.rb +0 -13
  176. data/features/step_definitions/command_line_steps.rb +0 -212
  177. data/features/step_definitions/content_pages_steps.rb +0 -170
  178. data/features/step_definitions/data_steps.rb +0 -48
  179. data/features/step_definitions/edit_page_templates_steps.rb +0 -21
  180. data/features/step_definitions/html_blocks_steps.rb +0 -9
  181. data/features/step_definitions/install_content_steps.rb +0 -4
  182. data/features/step_definitions/manage_content_blocks_steps.rb +0 -26
  183. data/features/step_definitions/manage_image_blocks_steps.rb +0 -31
  184. data/features/step_definitions/manage_sections_steps.rb +0 -18
  185. data/features/step_definitions/manage_user_steps.rb +0 -22
  186. data/features/step_definitions/more_custom_block_steps.rb +0 -34
  187. data/features/step_definitions/page_route_steps.rb +0 -65
  188. data/features/step_definitions/page_template_steps.rb +0 -5
  189. data/features/step_definitions/permissions_steps.rb +0 -13
  190. data/features/step_definitions/portlets_steps.rb +0 -64
  191. data/features/step_definitions/redirect_steps.rb +0 -12
  192. data/features/step_definitions/sitemap_steps.rb +0 -18
  193. data/features/step_definitions/tag_cloud_steps.rb +0 -11
  194. data/features/step_definitions/task_steps.rb +0 -4
  195. data/features/step_definitions/taxonomy_steps.rb +0 -16
  196. data/features/step_definitions/upgrade_module_steps.rb +0 -76
  197. data/features/step_definitions/web_steps.rb +0 -211
  198. data/features/support/async_support.rb +0 -17
  199. data/features/support/command_line_helpers.rb +0 -63
  200. data/features/support/debug_formatter.rb +0 -7
  201. data/features/support/debugging.rb +0 -28
  202. data/features/support/env.rb +0 -73
  203. data/features/support/git_api.rb +0 -9
  204. data/features/support/open_on_first_failure.rb +0 -25
  205. data/features/support/paths.rb +0 -32
  206. data/features/support/rails_api.rb +0 -8
  207. data/features/support/selectors.rb +0 -39
  208. data/features/support/transforms.rb +0 -7
  209. data/features/taxonomy/add_content_with_category.feature +0 -30
  210. data/features/taxonomy/manage_categories.feature +0 -20
  211. data/features/taxonomy/manage_category_types.feature +0 -16
  212. data/lib/cms/init.rb +0 -105
  213. data/lib/tasks/data.rake +0 -43
  214. data/lib/tasks/db.rake +0 -82
  215. data/public/styled_file_field/index.html +0 -72
  216. data/script/cucumber +0 -10
  217. data/script/rails +0 -6
  218. data/test/console_helper.rb +0 -5
  219. data/test/custom_assertions.rb +0 -84
  220. data/test/dummy/Rakefile +0 -7
  221. data/test/dummy/app/assets/javascripts/application.js +0 -9
  222. data/test/dummy/app/assets/javascripts/content_page.js +0 -2
  223. data/test/dummy/app/assets/stylesheets/application.css +0 -7
  224. data/test/dummy/app/assets/stylesheets/content_page.css +0 -4
  225. data/test/dummy/app/controllers/application_controller.rb +0 -3
  226. data/test/dummy/app/controllers/cms/products_controller.rb +0 -2
  227. data/test/dummy/app/controllers/cms/sample_blocks_controller.rb +0 -3
  228. data/test/dummy/app/controllers/content_page_controller.rb +0 -13
  229. data/test/dummy/app/helpers/application_helper.rb +0 -2
  230. data/test/dummy/app/helpers/content_page_helper.rb +0 -2
  231. data/test/dummy/app/mailers/.gitkeep +0 -0
  232. data/test/dummy/app/models/.gitkeep +0 -0
  233. data/test/dummy/app/models/cms/sample_block.rb +0 -22
  234. data/test/dummy/app/models/product.rb +0 -5
  235. data/test/dummy/app/views/cms/products/_form.html.erb +0 -7
  236. data/test/dummy/app/views/cms/products/render.html.erb +0 -3
  237. data/test/dummy/app/views/content_page/custom_page.html.erb +0 -3
  238. data/test/dummy/app/views/content_page/index.html.erb +0 -2
  239. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  240. data/test/dummy/app/views/layouts/templates/default.html.erb +0 -17
  241. data/test/dummy/app/views/layouts/templates/subpage.html.erb +0 -16
  242. data/test/dummy/app/views/test_route/index.html.erb +0 -14
  243. data/test/dummy/config.ru +0 -4
  244. data/test/dummy/config/application.rb +0 -45
  245. data/test/dummy/config/boot.rb +0 -10
  246. data/test/dummy/config/database.yml +0 -27
  247. data/test/dummy/config/environment.rb +0 -5
  248. data/test/dummy/config/environments/development.rb +0 -32
  249. data/test/dummy/config/environments/production.rb +0 -60
  250. data/test/dummy/config/environments/test.rb +0 -46
  251. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  252. data/test/dummy/config/initializers/browsercms.rb +0 -7
  253. data/test/dummy/config/initializers/inflections.rb +0 -10
  254. data/test/dummy/config/initializers/mime_types.rb +0 -5
  255. data/test/dummy/config/initializers/quiet_sprocket_assets.rb +0 -13
  256. data/test/dummy/config/initializers/secret_token.rb +0 -7
  257. data/test/dummy/config/initializers/session_store.rb +0 -8
  258. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  259. data/test/dummy/config/locales/en.yml +0 -5
  260. data/test/dummy/config/routes.rb +0 -23
  261. data/test/dummy/db/migrate/20111228141250_create_products.rb +0 -16
  262. data/test/dummy/db/seeds.rb +0 -1
  263. data/test/dummy/lib/assets/.gitkeep +0 -0
  264. data/test/dummy/public/404.html +0 -26
  265. data/test/dummy/public/422.html +0 -26
  266. data/test/dummy/public/500.html +0 -26
  267. data/test/dummy/public/favicon.ico +0 -0
  268. data/test/dummy/script/rails +0 -6
  269. data/test/dummy/test/functional/content_page_controller_test.rb +0 -9
  270. data/test/dummy/test/unit/helpers/content_page_helper_test.rb +0 -4
  271. data/test/factories.rb +0 -235
  272. data/test/fixtures/multipart/foo.jpg +0 -0
  273. data/test/fixtures/multipart/sample_upload.txt +0 -1
  274. data/test/fixtures/multipart/second_upload.txt +0 -1
  275. data/test/fixtures/multipart/test.jpg +0 -0
  276. data/test/fixtures/multipart/version1.txt +0 -1
  277. data/test/fixtures/multipart/version2.txt +0 -1
  278. data/test/functional/cms/cache_controller_test.rb +0 -16
  279. data/test/functional/cms/categories_controller_test.rb +0 -28
  280. data/test/functional/cms/connectors_controller_test.rb +0 -64
  281. data/test/functional/cms/content_block_controller_test.rb +0 -127
  282. data/test/functional/cms/content_controller_test.rb +0 -351
  283. data/test/functional/cms/dashboard_controller_test.rb +0 -20
  284. data/test/functional/cms/file_blocks_controller_test.rb +0 -55
  285. data/test/functional/cms/home_controller_test.rb +0 -160
  286. data/test/functional/cms/html_blocks_controller_test.rb +0 -159
  287. data/test/functional/cms/image_blocks_controller_test.rb +0 -78
  288. data/test/functional/cms/links_controller_test.rb +0 -92
  289. data/test/functional/cms/log/test.log +0 -0
  290. data/test/functional/cms/pages_controller_test.rb +0 -233
  291. data/test/functional/cms/portlets_controller_test.rb +0 -57
  292. data/test/functional/cms/sections_controller_test.rb +0 -234
  293. data/test/functional/cms/sessions_controller_test.rb +0 -80
  294. data/test/functional/cms/tasks_controller_test.rb +0 -64
  295. data/test/functional/cms/toolbar_controller_test.rb +0 -76
  296. data/test/functional/cms/users_controller_test.rb +0 -218
  297. data/test/integration/cms/password_management_test.rb +0 -66
  298. data/test/integration/sitemap_performance_test.rb +0 -26
  299. data/test/mock_file.rb +0 -33
  300. data/test/performance/browsing_test.rb +0 -9
  301. data/test/support/engine_controller_hacks.rb +0 -34
  302. data/test/support/factory_helpers.rb +0 -57
  303. data/test/support/rails_3_1_routes_hack.rb +0 -70
  304. data/test/test_helper.rb +0 -199
  305. data/test/test_logging.rb +0 -67
  306. data/test/unit/active_record_callbacks.rb +0 -50
  307. data/test/unit/behaviors/attaching_test.rb +0 -370
  308. data/test/unit/behaviors/cms_user_test.rb +0 -67
  309. data/test/unit/behaviors/connectable_test.rb +0 -32
  310. data/test/unit/behaviors/connecting_test.rb +0 -56
  311. data/test/unit/behaviors/dynamic_attributes_test.rb +0 -74
  312. data/test/unit/behaviors/namespacing_test.rb +0 -76
  313. data/test/unit/behaviors/publishable_test.rb +0 -83
  314. data/test/unit/behaviors/rendering_test.rb +0 -68
  315. data/test/unit/behaviors/searching_test.rb +0 -102
  316. data/test/unit/behaviors/taggable_test.rb +0 -110
  317. data/test/unit/behaviors/userstamping_test.rb +0 -27
  318. data/test/unit/behaviors/versioning_test.rb +0 -102
  319. data/test/unit/extensions/active_record/base_test.rb +0 -25
  320. data/test/unit/extensions/hash_test.rb +0 -26
  321. data/test/unit/extensions/integer_test.rb +0 -10
  322. data/test/unit/extensions/string_test.rb +0 -14
  323. data/test/unit/factories_test.rb +0 -50
  324. data/test/unit/generators/install_generator_test.rb +0 -15
  325. data/test/unit/helpers/application_helper_test.rb +0 -104
  326. data/test/unit/helpers/date_picker_test.rb +0 -17
  327. data/test/unit/helpers/menu_helper_test.rb +0 -240
  328. data/test/unit/helpers/page_helper_test.rb +0 -69
  329. data/test/unit/helpers/path_helper_test.rb +0 -38
  330. data/test/unit/helpers/rendering_helper_test.rb +0 -8
  331. data/test/unit/lib/acts_as_content_page_test.rb +0 -72
  332. data/test/unit/lib/cms/authentication/controller_test.rb +0 -20
  333. data/test/unit/lib/cms/engine_helper_test.rb +0 -119
  334. data/test/unit/lib/cms/sitemap_test.rb +0 -210
  335. data/test/unit/lib/cms_domain_support_test.rb +0 -44
  336. data/test/unit/lib/command_line_test.rb +0 -70
  337. data/test/unit/lib/content_block_test.rb +0 -304
  338. data/test/unit/lib/content_rendering_support_test.rb +0 -40
  339. data/test/unit/lib/generators_test.rb +0 -40
  340. data/test/unit/lib/routes_test.rb +0 -98
  341. data/test/unit/mock_file_test.rb +0 -19
  342. data/test/unit/models/attachment_test.rb +0 -160
  343. data/test/unit/models/category_test.rb +0 -40
  344. data/test/unit/models/category_type_test.rb +0 -8
  345. data/test/unit/models/connector_test.rb +0 -152
  346. data/test/unit/models/content_type_group_test.rb +0 -26
  347. data/test/unit/models/content_type_test.rb +0 -177
  348. data/test/unit/models/dynamic_views_test.rb +0 -36
  349. data/test/unit/models/email_page_portlet_test.rb +0 -20
  350. data/test/unit/models/file_block_test.rb +0 -246
  351. data/test/unit/models/group_test.rb +0 -29
  352. data/test/unit/models/html_block_test.rb +0 -121
  353. data/test/unit/models/image_block_test.rb +0 -35
  354. data/test/unit/models/link_test.rb +0 -52
  355. data/test/unit/models/namespaces_test.rb +0 -57
  356. data/test/unit/models/page_partial_test.rb +0 -37
  357. data/test/unit/models/page_route_test.rb +0 -113
  358. data/test/unit/models/page_template_test.rb +0 -50
  359. data/test/unit/models/page_test.rb +0 -879
  360. data/test/unit/models/permission_test.rb +0 -10
  361. data/test/unit/models/portlet_test.rb +0 -99
  362. data/test/unit/models/sections_test.rb +0 -278
  363. data/test/unit/models/site_test.rb +0 -50
  364. data/test/unit/models/task_test.rb +0 -150
  365. data/test/unit/models/user_test.rb +0 -358
  366. data/test/unit/schema_statements_test.rb +0 -137
  367. data/todo_list.markdown +0 -50
@@ -1,35 +0,0 @@
1
- require "test_helper"
2
-
3
- module Cms
4
- class ImageBlockTest < ActiveSupport::TestCase
5
-
6
- def setup
7
-
8
- end
9
-
10
- def teardown
11
-
12
- end
13
-
14
- test "#parent" do
15
- image = Factory(:image_block)
16
- assert_equal root_section, image.parent
17
- end
18
-
19
- test "default table_name" do
20
- assert_equal Namespacing.prefix("file_blocks"), ImageBlock.table_name
21
- end
22
-
23
- test "non_versioned_columns should not include the version_foreign_ken" do
24
- assert ImageBlock.non_versioned_columns.include?("original_record_id")
25
- end
26
-
27
- test "version_foreign_key" do
28
- assert_equal :original_record_id, ImageBlock.version_foreign_key
29
- end
30
-
31
- test "create works" do
32
- ImageBlock.create!(:name=>"test")
33
- end
34
- end
35
- end
@@ -1,52 +0,0 @@
1
- require 'test_helper'
2
-
3
- class LinkTest < ActiveSupport::TestCase
4
-
5
- def setup
6
- @link = Factory(:link)
7
- @another_link = Factory(:link)
8
- end
9
-
10
- def test_create
11
- assert Factory.build(:link).valid?
12
- assert !Factory.build(:link, :name => "").valid?
13
- end
14
-
15
- test "draft_version is stored on pages" do
16
- assert_equal 1, @link.version
17
- assert_equal 1, @link.latest_version
18
- end
19
-
20
- test "#update increments the latest_version" do
21
- @link.name = "New"
22
- @link.save!
23
- @link.reload
24
-
25
- assert_equal 1, @link.version
26
- assert_equal 2, @link.latest_version
27
-
28
- assert_equal 1, @another_link.reload.latest_version, "Should only update its own version, not other tables"
29
- end
30
-
31
- test "live?" do
32
- assert @link.live?
33
- end
34
-
35
- test "updating makes it not live" do
36
- @link.update_attributes(:name => "New")
37
- @link.reload
38
- refute @link.live?
39
-
40
- @link.publish!
41
- @link.reload
42
- assert @link.live?
43
- end
44
-
45
- test "live? as_of_version" do
46
- @link.update_attributes(:name => "New")
47
- @link.publish!
48
-
49
- v1 = @link.as_of_version(1)
50
- assert v1.live?
51
- end
52
- end
@@ -1,57 +0,0 @@
1
-
2
- # This test is to verify that for all of our namespaced objects that the named reflections are valid.
3
- # Mostly to ensure that :class_name is set where needed.
4
-
5
- require 'test_helper'
6
-
7
- class NamespacesTest < ActiveSupport::TestCase
8
-
9
-
10
- # Fetches all of the subclasses from a given module by grabbing the defined constants
11
- # and seeing if they are a Class or something else. Does not check to see if it is an
12
- # AR class or if it has a blueprint.
13
- def self.subclasses_from_module(module_name)
14
- subclasses = []
15
- mod = module_name.constantize
16
- if mod.class == Module
17
- mod.constants.each do |module_const_name|
18
- begin
19
- klass_name = "#{module_name}::#{module_const_name}"
20
- klass = klass_name.constantize
21
- if klass.class == Class
22
- subclasses << klass
23
- subclasses += klass.send(:descendants).collect{|x| x.respond_to?(:constantize) ? x.constantize : x}
24
- else
25
- subclasses += subclasses_from_module(klass_name)
26
- end
27
- rescue NameError
28
- raise $!
29
- puts $!.inspect
30
- end
31
- end
32
- end
33
- return subclasses
34
- end
35
-
36
- # If you want to test more namespaces add them here.
37
- classes = []
38
- classes += subclasses_from_module("Cms")
39
- classes.uniq!
40
-
41
- classes.each do |klass|
42
- test "ensure a #{klass.name} has valid reflections" do
43
- if klass.kind_of? ActiveRecord::Base
44
- @obj = klass.new
45
- klass.reflections.each do |name, reflection|
46
- assert_nothing_thrown("Error with #{name} reflection") do
47
- @obj.send(name)
48
- reflection.klass unless reflection.options[:polymorphic]
49
- end
50
- end
51
- end
52
- end
53
- end
54
-
55
-
56
- end
57
-
@@ -1,37 +0,0 @@
1
- require '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
- test "Name used to build the form" do
14
- assert_equal "page_partial", Cms::PagePartial.resource_collection_name
15
- end
16
-
17
- test "resource_name works for namespaced templates" do
18
- assert_equal "page_partials", Cms::PagePartial.resource_name
19
- end
20
-
21
- def test_create
22
- assert !File.exists?(@page_partial.file_path), "partial file already exists"
23
- assert_valid @page_partial
24
- assert @page_partial.save
25
- assert File.exists?(@page_partial.file_path), "partial file was not written to disk"
26
- end
27
-
28
- def test_for_valid_name
29
- assert_not_valid Factory.build(:page_partial, :name => "Fancy")
30
- assert_not_valid Factory.build(:page_partial, :name => "foo bar")
31
- partial = Factory.build(:page_partial, :name => "subpage_1_column")
32
- assert_valid partial
33
- assert_equal "_subpage_1_column", partial.name
34
- assert_valid Factory.build(:page_partial, :name => "_sidebar")
35
- end
36
-
37
- end
@@ -1,113 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PageRouteTest < ActiveSupport::TestCase
4
- def setup
5
- @route = Cms::PageRoute.new(:pattern=>"/:some/:pattern", :name=>"My Name")
6
- end
7
-
8
-
9
- def test_create
10
- page = Factory(:page, :path => "/things/overview")
11
- route = page.page_routes.build(:pattern => "/things/:year/:month/:day")
12
- route.add_requirement(:year, "\\d{4,}")
13
- route.add_requirement(:month, "\\d{2,}")
14
- route.add_requirement(:day, "\\d{2,}")
15
- route.add_condition(:method, "get")
16
-
17
- assert route.save!
18
- assert_equal "/things/:year/:month/:day", route.pattern
19
- assert_equal({
20
- :controller => "cms/content",
21
- :action => "show_page_route",
22
- :_page_route_id => route.id.to_s,
23
- :requirements => {
24
- :year => /\d{4,}/,
25
- :month => /\d{2,}/,
26
- :day => /\d{2,}/
27
- }, :conditions => {
28
- :method => :get
29
- }
30
- }, route.options_map)
31
-
32
-
33
- end
34
-
35
- # Rails 3 Routing
36
- test "match :to" do
37
- assert_equal "cms/content#show_page_route", @route.to
38
- end
39
-
40
- test "match :as" do
41
- assert_equal "my_name", @route.route_name
42
- assert_equal "my_name", @route.as
43
- end
44
-
45
- test "default method conditions" do
46
- assert_equal [:get, :post], @route.via
47
- end
48
- test "setting method conditions" do
49
- @route.add_condition(:method, "post")
50
- assert_equal([:post], @route.via)
51
-
52
- end
53
-
54
- test "Using :via to constraint the callable methods" do
55
- @route.via = :get
56
- assert_equal [:get], @route.via
57
- end
58
-
59
- test "Specify multiple methods using :via to constraint the callable methods" do
60
- @route.via = [:get, :propfind]
61
- assert_equal [:get, :propfind], @route.via
62
- end
63
-
64
- test "constraints converts string key to symbol since routes requires it" do
65
- @route.add_requirement("year", 'd{4}')
66
- assert_equal(true, @route.constraints.include?(:year))
67
-
68
- end
69
- test "constraints allows for regular expressions to be set for pattern elements in a route" do
70
- @route.add_requirement(:year, '\d{4,}')
71
- assert_equal({:year => /\d{4,}/}, @route.constraints)
72
- end
73
-
74
- test "add_constraint is replacement method for add_requirement " do
75
- @route.add_requirement(:year, 'd{4}')
76
- assert_equal({:year => /d{4}/}, @route.constraints)
77
- end
78
-
79
- test "constraints handles more than one pattern" do
80
- @route.add_requirement(:month, '\d{2,}')
81
- @route.add_requirement(:day, '\d{2,}')
82
- @route.add_requirement(:year, '\d{4,}')
83
- assert_equal({:month => /\d{2,}/, :day => /\d{2,}/, :year => /\d{4,}/}, @route.constraints)
84
- end
85
- end
86
-
87
-
88
- class LoadingPageRoutesTest < ActiveSupport::TestCase
89
-
90
- def setup
91
-
92
- end
93
-
94
- test "can_be_loaded?" do
95
- Cms::PageRoute.expects(:database_exists?).returns(true)
96
- Cms::PageRoute.expects(:table_exists?).returns(true)
97
-
98
- assert_equal true, Cms::PageRoute.can_be_loaded?
99
- end
100
-
101
- test "Routes cannot be loaded if the table doesn't exist" do
102
- Cms::PageRoute.expects(:database_exists?).returns(true)
103
- Cms::PageRoute.expects(:table_exists?).returns(false)
104
-
105
- assert_equal false, Cms::PageRoute.can_be_loaded?
106
- end
107
-
108
- test "Routes cannot be loaded if the database doesn't exist" do
109
- Cms::PageRoute.expects(:database_exists?).returns(false)
110
-
111
- assert_equal false, Cms::PageRoute.can_be_loaded?
112
- end
113
- end
@@ -1,50 +0,0 @@
1
- require '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
-
14
- test "Name used to build the form" do
15
- assert_equal "page_template", Cms::PageTemplate.resource_collection_name
16
- end
17
-
18
- test "resource_name works for namespaced templates" do
19
- assert_equal "page_templates", Cms::PageTemplate.resource_name
20
-
21
- end
22
-
23
- def test_create_and_destroy
24
- assert !File.exists?(@page_template.file_path), "template file already exists"
25
- assert_valid @page_template
26
- assert @page_template.save
27
- assert File.exists?(@page_template.file_path), "template file was not written to disk"
28
- @page_template.destroy
29
- assert !File.exists?(@page_template.file_path), "template file was not removed on destroy"
30
- end
31
-
32
- def test_for_valid_name
33
- assert_not_valid Factory.build(:page_template, :name => "Fancy")
34
- assert_not_valid Factory.build(:page_template, :name => "foo bar")
35
- assert_valid Factory.build(:page_template, :name => "subpage_1_column")
36
- end
37
-
38
- def test_find_by_file_name
39
- assert @page_template.save, "Could not save page template"
40
- assert_equal @page_template, Cms::PageTemplate.find_by_file_name("test.html.erb")
41
- assert_nil Cms::PageTemplate.find_by_file_name("fail.html.erb")
42
- assert_nil Cms::PageTemplate.find_by_file_name("fail.erb")
43
- assert_nil Cms::PageTemplate.find_by_file_name("fail")
44
- assert_nil Cms::PageTemplate.find_by_file_name(nil)
45
- end
46
-
47
- def test_default_body
48
- assert_not_nil Cms::PageTemplate.default_body
49
- end
50
- end
@@ -1,879 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Cms
4
- class CreatingPageTest < ActiveSupport::TestCase
5
-
6
- test "Testing Database should be empty and have no pages" do
7
- assert_nil Cms::Page.with_path("/").first
8
- end
9
-
10
- def test_creating_a_page_and_updating_the_attributes
11
- @page = Cms::Page.new(
12
- :name => "Test",
13
- :path => "test",
14
- :section => root_section,
15
- :publish_on_save => true)
16
-
17
- assert @page.save
18
- assert_path_is_unique
19
-
20
- @page.update_attributes(:name => "Test v2")
21
- page = Cms::Page.find_live_by_path("/test")
22
- assert_equal "Test", page.name
23
-
24
- assert_equal 1, page.version
25
-
26
- end
27
-
28
- test "Creating a page builds a section node" do
29
- @page = Page.create!(:name => "Hello", :path => "/hello", :section => Factory(:root_section))
30
- assert_not_nil @page.section_node
31
- end
32
-
33
- test "page with no parent" do
34
- @page = Page.new
35
- assert_nil @page.parent
36
- end
37
-
38
- test "#section is alias for #parent" do
39
- @page = Page.new
40
- assert_nil @page.section
41
- end
42
-
43
-
44
- protected
45
- def assert_path_is_unique
46
- page = Factory.build(:page, :path => @page.path)
47
- assert_not_valid page
48
- assert_has_error_on page, :path
49
- end
50
-
51
- end
52
-
53
- class VersionTest < ActiveSupport::TestCase
54
-
55
- def setup
56
- @page = Factory(:public_page)
57
- @another_page = Factory(:public_page)
58
- end
59
-
60
- test "#latest_version set set when page is created" do
61
- assert_equal 1, @page.version
62
- assert_equal 1, @page.latest_version
63
- end
64
-
65
- test "#latest_version is incremented when page#update occurs" do
66
- @page.name = "New"
67
- @page.save!
68
- @page.reload
69
-
70
- assert_equal 1, @page.version
71
- assert_equal 2, @page.latest_version
72
-
73
- assert_equal 1, @another_page.reload.latest_version, "Should only update its own version, not other tables"
74
- end
75
-
76
- test "live? using latest version" do
77
- assert @page.live?
78
-
79
- @page.update_attributes(:name => "New")
80
- @page.reload
81
- refute @page.live?
82
-
83
- @page.publish!
84
- @page.reload
85
- assert @page.live?
86
- end
87
-
88
- test "live? as_of_version" do
89
- @page.update_attributes(:name => "New")
90
- @page.publish!
91
-
92
- v1 = @page.as_of_version(1)
93
- assert v1.live?
94
- end
95
- end
96
- class PageTest < ActiveSupport::TestCase
97
-
98
- def test_creating_page_with_reserved_path
99
- @page = Cms::Page.new(:name => "FAIL", :path => "/cms")
100
- assert_not_valid @page
101
- assert_has_error_on(@page, :path, "is invalid, '/cms' a reserved path")
102
-
103
- @page = Cms::Page.new(:name => "FAIL", :path => "/cache")
104
- assert_not_valid @page
105
- assert_has_error_on(@page, :path, "is invalid, '/cache' a reserved path")
106
-
107
- @page = Cms::Page.new(:name => "FTW", :path => "/whatever")
108
-
109
- assert_valid @page
110
- end
111
-
112
- def test_creating_page_with_trailing_slash
113
- @page = Factory.build(:page, :path => "/slashed/")
114
- @page.save
115
- assert_equal @page.path, "/slashed"
116
-
117
- @page = Factory.build(:page, :path => "/slashed/loooong/path/")
118
- @page.save
119
- assert_equal @page.path, "/slashed/loooong/path"
120
- end
121
-
122
- def test_find_live_by_path
123
- @page = Factory.build(:page, :path => '/foo')
124
- assert_nil Cms::Page.find_live_by_path('/foo')
125
-
126
- @page.publish!
127
- reset(:page)
128
- assert_equal @page, Cms::Page.find_live_by_path('/foo')
129
-
130
- @page.update_attributes(:path => '/bar')
131
- assert_equal @page, Cms::Page.find_live_by_path('/foo')
132
- assert_nil Cms::Page.find_live_by_path('/bar')
133
-
134
- @page.publish!
135
- reset(:page)
136
- assert_nil Cms::Page.find_live_by_path('/foo')
137
- assert_equal @page, Cms::Page.find_live_by_path('/bar')
138
- end
139
-
140
- test "It should be possible to create a new page, using the same path as a previously deleted page" do
141
- Cms::Page.delete_all
142
- p = Time.now.to_f.to_s #use a unique, but consistent path
143
-
144
- @page = Factory(:published_page, :path => "/#{p}")
145
- @page.destroy
146
-
147
- @page2 = Factory(:published_page, :path => "/#{p}")
148
- assert_not_equal(@page, @page2)
149
- end
150
-
151
- test "Find by live path should not located deleted blocks, even if they share paths with live ones" do
152
- @page = Factory.build(:page, :path => '/foo')
153
- @page.publish!
154
- reset(:page)
155
-
156
- @page.mark_as_deleted!
157
- assert_nil Cms::Page.find_live_by_path('/foo')
158
-
159
- @new_page = Factory.build(:page, :path => '/foo')
160
- assert_nil Cms::Page.find_live_by_path('/foo')
161
-
162
- @new_page.publish!
163
- reset(:new_page)
164
- assert_equal @new_page, Cms::Page.find_live_by_path('/foo')
165
- assert_not_equal @page, @new_page
166
- end
167
-
168
- def test_path_normalization
169
- page = Factory.build(:page, :path => 'foo/bar')
170
- assert_valid page
171
- assert_equal "/foo/bar", page.path
172
-
173
- page = Factory.build(:page, :path => '/foo/bar')
174
- assert_valid page
175
- assert_equal "/foo/bar", page.path
176
- end
177
-
178
- def test_template
179
- page_template = Factory(:page_template, :name => 'test')
180
- page = Factory.build(:page, :template_file_name => 'test.html.erb')
181
- assert_equal 'test.html.erb', page.template_file_name
182
- assert_equal 'Test (html/erb)', page.template_name
183
- assert_equal page_template, page.template
184
- assert_equal 'templates/test', page.layout
185
-
186
- page = Factory.build(:page, :template_file_name => 'foo.html.erb')
187
- assert_equal 'foo.html.erb', page.template_file_name
188
- assert_equal 'Foo (html/erb)', page.template_name
189
- assert_nil page.template
190
- assert_equal 'templates/foo', page.layout
191
- end
192
-
193
- def test_revision_comments
194
- page = Factory(:page, :section => root_section, :name => "V1")
195
-
196
- assert_equal 'Created', page.live_version.version_comment
197
-
198
- assert page.reload.save
199
- assert_equal 'Created', page.reload.live_version.version_comment
200
- assert_equal page.live_version.version_comment,
201
- page.as_of_version(page.version).live_version.version_comment
202
-
203
- page.update_attributes(:name => "V2")
204
- assert_equal 'Changed name', page.draft.version_comment
205
- assert_equal 'Created', page.live_version.version_comment
206
-
207
- block = Factory(:html_block, :name => "Hello, World!")
208
- page.create_connector(block, "main")
209
- assert_equal "Html Block 'Hello, World!' was added to the 'main' container",
210
- page.draft.version_comment
211
- assert_equal 'Created', page.live_version.version_comment
212
- assert_equal 3, page.reload.draft.version
213
-
214
- page.create_connector(Factory(:html_block, :name => "Whatever"), "main")
215
- assert_equal 4, page.reload.draft.version
216
-
217
- page.move_connector_down(page.connectors.for_page_version(page.reload.draft.version).for_connectable(block).first)
218
- assert_equal "Html Block 'Hello, World!' was moved down within the 'main' container",
219
- page.draft.version_comment
220
- assert_equal 'Created', page.live_version.version_comment
221
-
222
- page.move_connector_up(page.connectors.for_page_version(page.reload.draft.version).for_connectable(block).first)
223
- assert_equal "Html Block 'Hello, World!' was moved up within the 'main' container",
224
- page.draft.version_comment
225
- assert_equal 'Created', page.live_version.version_comment
226
-
227
- page.remove_connector(page.connectors.for_page_version(page.reload.draft.version).for_connectable(block).first)
228
- assert_equal "Html Block 'Hello, World!' was removed from the 'main' container",
229
- page.draft.version_comment
230
- assert_equal 'Created', page.live_version.version_comment
231
-
232
- page.revert_to(1)
233
- assert_equal "Reverted to version 1",
234
- page.reload.draft.version_comment
235
- assert_equal 'Created', page.live_version.version_comment
236
-
237
- assert_equal "Created", page.as_of_version(1).current_version.version_comment
238
- assert_equal "Changed name", page.as_of_version(2).current_version.version_comment
239
- assert_equal "Reverted to version 1", page.draft.version_comment
240
-
241
- end
242
-
243
- def test_container_live
244
- page = Factory(:page)
245
- published = Factory(:html_block, :publish_on_save => true)
246
- unpublished = Factory(:html_block)
247
- page.create_connector(published, "main")
248
- page.create_connector(unpublished, "main")
249
- assert !page.container_published?("main")
250
- assert unpublished.publish
251
- assert page.container_published?("main")
252
- end
253
-
254
- def test_move_page_to_another_section
255
- page = Factory(:public_page)
256
- new_section = Factory(:public_section)
257
-
258
- assert_not_equal new_section, page.section
259
- page.section = new_section
260
- assert page.save
261
- assert_equal new_section, page.section
262
- end
263
-
264
- def test_deleting_page
265
- page = Factory(:page)
266
- page_count = Cms::Page.count_with_deleted
267
-
268
- page_version_count = page.versions.count
269
- assert !page.deleted?
270
-
271
- page.destroy
272
-
273
- assert_equal page_count, Cms::Page.count_with_deleted
274
- assert_incremented page_version_count, page.versions.count
275
- assert page.deleted?
276
- assert_raise ActiveRecord::RecordNotFound do
277
- Cms::Page.find(page.id)
278
- end
279
-
280
- end
281
-
282
- def test_adding_a_block_to_a_page_puts_page_in_draft_mode
283
- @page = Factory(:page, :section => root_section, :publish_on_save => true)
284
- @block = Factory(:html_block, :publish_on_save => true)
285
- reset(:page, :block)
286
- assert @page.published?
287
- assert @block.published?
288
- @page.create_connector(@block, "main")
289
- reset(:page, :block)
290
- assert !@page.live?
291
- end
292
-
293
- def test_reverting_and_then_publishing_a_page
294
- @page = Factory(:page, :section => root_section, :publish_on_save => true)
295
-
296
- @block = Factory(:html_block,
297
- :connect_to_page_id => @page.id,
298
- :connect_to_container => "main")
299
- @page.publish
300
-
301
- reset(:page, :block)
302
-
303
- assert_equal 2, @page.version
304
- assert_equal 1, @page.connectors.for_page_version(@page.version).count
305
-
306
- @block.update_attributes(:content => "Something else")
307
- @page.publish!
308
- reset(:page, :block)
309
-
310
- assert_equal 1, @page.connectors.for_page_version(@page.version).count
311
- assert_equal 2, @block.version
312
- assert_equal 3, @page.version
313
- assert @block.live?
314
- assert @page.live?
315
-
316
- @page.revert_to(2)
317
- reset(:page, :block)
318
-
319
- assert_equal 3, @page.version
320
- assert_equal 4, @page.draft.version
321
- assert_equal 2, @block.version
322
- assert_equal 3, @block.draft.version
323
- assert_equal 1, @page.connectors.for_page_version(@page.version).count
324
- assert_equal 1, @page.connectors.for_page_version(@page.draft.version).count
325
- assert !@page.live?
326
- assert !@block.live?
327
-
328
- end
329
-
330
- end
331
-
332
- class UserStampingTest < ActiveSupport::TestCase
333
-
334
- def setup
335
- @first_guy = Factory(:user, :login => "first_guy")
336
- @next_guy = Factory(:user, :login => "next_guy")
337
- Cms::User.current = @first_guy
338
- end
339
-
340
- def teardown
341
- Cms::User.current = nil
342
- end
343
-
344
- def test_user_stamps_are_applied_to_versions
345
- page = Factory(:page, :name => "Original Value")
346
-
347
- assert_equal page, page.draft.page
348
- assert_equal @first_guy, page.updated_by
349
-
350
- Cms::User.current = @new_guy
351
-
352
- page.update_attributes(:name => "Something Different")
353
-
354
- assert_equal "Something Different", page.draft.name
355
- assert_equal "Original Value", page.reload.name
356
- assert_equal "Original Value", page.versions.first.name
357
- assert_equal @first_guy, page.versions.first.updated_by
358
- assert_equal @new_guy, page.versions.last.updated_by
359
- assert_equal 2, page.versions.count
360
- end
361
-
362
- end
363
-
364
- class PageInSectionTest < ActiveSupport::TestCase
365
-
366
- def setup
367
- @root = Factory(:root_section, :name => "First Section")
368
- @football_section = Factory :public_section, :name => "Football", :parent => @root
369
- @baseball_section = Factory :public_section, :name => "Baseball", :parent => @root
370
-
371
- @football_page = Factory :public_page, :section => @football_section
372
- @baseball_page = Factory :public_page, :section => @baseball_section
373
- end
374
-
375
- test "in_section if immediate parent section is included" do
376
- assert @football_page.in_section?("Football")
377
- assert !@baseball_page.in_section?("Football")
378
- end
379
-
380
- test "in_section if immediate parent's name is included" do
381
- assert @football_page.in_section?("Football")
382
- assert !@baseball_page.in_section?("Football")
383
- end
384
-
385
- test "in_section if any ancestor is included" do
386
- assert @football_page.in_section?(@root)
387
- assert @baseball_page.in_section?(@root)
388
- assert @football_page.in_section?("First Section")
389
- assert @baseball_page.in_section?("First Section")
390
- end
391
-
392
- test "#top_level_section" do
393
- assert_equal @football_section, @football_page.top_level_section
394
- assert_equal @baseball_section, @baseball_page.top_level_section
395
-
396
- second_level_section = Factory(:public_section, :parent => @football_section)
397
- second_level_page = Factory(:public_page, :section => second_level_section)
398
- assert_equal @football_section, second_level_page.top_level_section
399
- end
400
-
401
- test "#top_level_section caches result to avoid repeated requests" do
402
- top = @football_page.top_level_section
403
- assert_equal top.object_id, @football_page.top_level_section.object_id
404
- end
405
- end
406
-
407
- class PageWithAssociatedBlocksTest < ActiveSupport::TestCase
408
- def setup
409
- super
410
- @page = Factory(:page, :section => root_section, :name => "Bar")
411
- @block = Factory(:html_block)
412
- @other_connector = Factory(:connector, :connectable => @block, :connectable_version => @block.version)
413
- @page_connector = Factory(:connector, :page => @page, :page_version => @page.version, :connectable => @block, :connectable_version => @block.version)
414
- end
415
-
416
- # It should create a new page version and a new connector
417
- def test_updating_the_page_with_changes
418
- Cms::Page.delete_all
419
- connector_count = Cms::Connector.count
420
-
421
- page_version = @page.version
422
- @page.update_attributes(:name => "Foo")
423
-
424
- assert_incremented connector_count, Cms::Connector.count
425
- assert_equal page_version, @page.version
426
- assert_incremented page_version, @page.draft.version
427
- end
428
-
429
- # It should not create a new page version or a new connector
430
- def test_updating_the_page_without_changes
431
- connector_count = Cms::Connector.count
432
- page_version = @page.version
433
-
434
- @page.update_attributes(:name => @page.name)
435
-
436
- assert_equal connector_count, Cms::Connector.count
437
-
438
- assert_equal page_version, @page.version
439
- end
440
-
441
- # Verifies that 'after_destroy' callbacks happen on Page/SoftDeleting objects, such that
442
- # a deleted page is disassociated with any blocks it was connected to.
443
- test "Destroying a page with a block should remove its connectors from the database completely." do
444
-
445
- connector_count = Cms::Connector.count
446
- assert Cms::Connector.exists?(@page_connector.id)
447
- assert Cms::Connector.exists?(@other_connector.id)
448
-
449
- @page.destroy
450
-
451
- assert_decremented connector_count, Cms::Connector.count
452
- assert !Cms::Connector.exists?(@page_connector.id)
453
- assert Cms::Connector.exists?(@other_connector.id)
454
- assert Cms::HtmlBlock.exists?(@block.id)
455
- assert !@block.deleted?
456
- end
457
-
458
-
459
- end
460
-
461
- class AddingBlocksTest < ActiveSupport::TestCase
462
-
463
- def setup
464
- @page = Factory(:page)
465
- @block = Factory(:html_block)
466
- @original_versions_count = @page.versions.count
467
- @connector_count = Cms::Connector.count
468
-
469
- @connector = @page.create_connector(@block, "main")
470
- reset(:page, :block)
471
- end
472
-
473
- test "Adding a block to a page without publishing" do
474
- assert_equal 1, @page.version, "The unpublished page should still be version 1"
475
- assert_equal 2, @connector.page_version, "The connector should point to version 2 of the page"
476
- assert_equal 1, @connector.connectable_version, "Connector should point to version 1 of the block"
477
- assert_incremented @original_versions_count, @page.versions.count # "There should be a new version of the page"
478
- assert_equal 1, @page.connectors.for_page_version(@page.draft.version).count
479
-
480
- assert_equal @connector_count + 1, Cms::Connector.count, "Adding the first block to a page should add exactly one connector"
481
- end
482
-
483
- test "Adding additional blocks to a page" do
484
- block2 = Factory(:html_block)
485
-
486
-
487
- conn = @page.create_connector(block2, "main")
488
-
489
- assert_equal 1, @page.version
490
- assert_equal 1, conn.connectable_version
491
- assert_equal 3, @page.versions.count, "Should be three versions of the page now"
492
- assert_equal 3, @page.draft.version, "Latest draft of a page should be 3"
493
- assert_equal 2, @page.connectors.for_page_version(@page.draft.version).count
494
- assert_equal @connector_count + 3, Cms::Connector.count, "Adding a second block to an existing page should add 3 total connectors."
495
- end
496
-
497
- test "Creating a new block to a page should update all existing connectors to the new page version." do
498
- Rails.logger.warn "Creating a new connector"
499
- @page.create_connector(Factory(:html_block), "main")
500
- expected_version = 3
501
- Rails.logger.warn "Done"
502
- connectors = @page.connectors.for_page_version(expected_version)
503
- assert_equal expected_version, connectors[0].page_version, "There should be two connectors with the same version as the page"
504
- assert_equal expected_version, connectors[1].page_version
505
- assert_equal 2, connectors.count, "There should be two connectors total for the page for this version (3) of the page."
506
-
507
- end
508
- end
509
-
510
- class AddingBlocksToPageTest < ActiveSupport::TestCase
511
-
512
-
513
- def test_that_it_works
514
- @page = Factory(:page, :section => root_section)
515
- @block = Factory(:html_block)
516
- @block2 = Factory(:html_block)
517
- @first_conn = @page.create_connector(@block, "testing")
518
- @second_conn = @page.create_connector(@block2, "testing")
519
-
520
- page_version_count = @page.versions.count
521
- connector_count = Cms::Connector.count
522
-
523
- @conn = @page.create_connector(@block2, "testing")
524
-
525
- assert_equal 1, @page.reload.version
526
- assert_equal 4, @conn.page_version
527
- assert_equal 1, @conn.connectable_version
528
- assert_incremented page_version_count, @page.versions.count
529
- assert_equal 3, @page.connectors.for_page_version(@page.draft.version).count
530
- assert_equal connector_count + 3, Cms::Connector.count
531
-
532
-
533
- # should leave the previous connectors untouched
534
- @conns = @page.connectors.all(:conditions => ["page_version < 4"], :order => "id")
535
-
536
- assert_equal 3, @conns.size
537
-
538
- assert_properties @conns[0], {
539
- :connectable => @block,
540
- :page => @page,
541
- :page_version => 2,
542
- :connectable_version => 1
543
- }
544
-
545
- assert_properties @conns[1], {
546
- :connectable => @block,
547
- :page => @page,
548
- :page_version => 3,
549
- :connectable_version => 1
550
- }
551
-
552
- assert_properties @conns[2], {
553
- :connectable => @block2,
554
- :page => @page,
555
- :page_version => 3,
556
- :connectable_version => 1
557
- }
558
-
559
- @conns = @page.connectors.for_page_version(4).all(:order => "id")
560
- assert_equal 3, @conns.size
561
-
562
- assert_properties @conns[0], {
563
- :connectable => @block,
564
- :page => @page,
565
- :page_version => 4,
566
- :connectable_version => 1
567
- }
568
-
569
- assert_properties @conns[1], {
570
- :connectable => @block2,
571
- :page => @page,
572
- :page_version => 4,
573
- :connectable_version => 1
574
- }
575
-
576
- assert_properties @conns[2], {
577
- :connectable => @block2,
578
- :page => @page,
579
- :page_version => 4,
580
- :connectable_version => 1
581
- }
582
-
583
- end
584
- end
585
-
586
- class PageWithTwoBlocksTest < ActiveSupport::TestCase
587
- def setup
588
- super
589
- @page = Factory(:page, :section => root_section)
590
- @foo_block = Factory(:html_block, :name => "Foo Block")
591
- @bar_block = Factory(:html_block, :name => "Bar Block")
592
- @page.create_connector(@foo_block, "whatever")
593
- @page.reload
594
- @page.create_connector(@bar_block, "whatever")
595
- @page.reload
596
- end
597
-
598
- def test_editing_one_of_the_blocks_creates_a_new_version_of_the_page
599
- page_version = @page.draft.version
600
- @foo_block.update_attributes(:name => "Something Else")
601
- assert_incremented page_version, @page.draft.version
602
- end
603
-
604
- # A page that had 2 blocks added to it and then had them removed,
605
- # when reverting to the previous version,
606
- # should restore the connectors from the version being reverted to
607
- def test_removing_and_reverting_to_previous_version
608
- remove_both_connectors!
609
-
610
- connector_count = Cms::Connector.count
611
-
612
- @page.revert
613
-
614
- assert_incremented connector_count, Cms::Connector.count
615
- assert_properties @page.reload.connectors.for_page_version(@page.draft.version).first, {
616
- :page => @page,
617
- :page_version => 6,
618
- :connectable => @bar_block,
619
- :connectable_version => 1,
620
- :container => "whatever"}
621
- end
622
-
623
- # A page that had 2 blocks added to it and then had then removed,
624
- # when reverting to the version that had both connectors,
625
- # should restore the connectors that version
626
- def test_removing_and_reverting_to_version_with_both_connectors
627
- remove_both_connectors!
628
-
629
- connector_count = Cms::Connector.count
630
-
631
- @page.revert_to(3)
632
-
633
- assert_equal connector_count + 2, Cms::Connector.count
634
-
635
- foo, bar = @page.reload.connectors.for_page_version(@page.draft.version).find(:all, :order => "#{Cms::Connector.table_name}.position")
636
-
637
- assert_properties foo, {
638
- :page => @page,
639
- :page_version => 6,
640
- :connectable => @foo_block,
641
- :connectable_version => 1,
642
- :container => "whatever"}
643
- assert_properties bar, {
644
- :page => @page,
645
- :page_version => 6,
646
- :connectable => @bar_block,
647
- :connectable_version => 1,
648
- :container => "whatever"}
649
-
650
- end
651
-
652
- def test_updating_one_of_the_blocks_and_reverting_to_version_before_the_update
653
- target_version = @page.draft.version
654
- @foo_block.update_attributes!(:name => "Foo V2")
655
- @page.reload
656
-
657
- page_version = @page.draft.version
658
- foo_block_version = @foo_block.draft.version
659
-
660
- @page.revert_to(target_version)
661
-
662
- assert_incremented page_version, @page.draft.version
663
- assert_incremented foo_block_version, @foo_block.draft.version
664
- assert_equal "Foo Block", @page.connectors.for_page_version(@page.draft.version).reload.first.connectable.name
665
- end
666
-
667
- protected
668
- def remove_both_connectors!
669
- @page.remove_connector(@page.connectors.for_page_version(@page.draft.version).first(:order => "#{Cms::Connector.table_name}.position"))
670
- @page.remove_connector(@page.connectors.for_page_version(@page.draft.version).first(:order => "#{Cms::Connector.table_name}.position"))
671
- end
672
-
673
-
674
- end
675
-
676
- class PageWithBlockTest < ActiveSupport::TestCase
677
- def setup
678
- @page = Factory(:page, :section => root_section)
679
- @block = Factory(:html_block)
680
- @conn = @page.create_connector(@block, "bar")
681
- @page.publish!
682
- @conn = @page.connectors.for_page_version(@page.version).for_connectable(@block).first
683
- end
684
-
685
- def test_removing_connector
686
- page_version = @page.draft.version
687
- page_version_count = Cms::Page::Version.count
688
- assert @page.published?
689
-
690
- @page.remove_connector(@conn)
691
-
692
- assert_incremented page_version_count, Cms::Page::Version.count
693
-
694
- assert_incremented page_version, @page.draft.version
695
-
696
- conns = @page.connectors.for_page_version(@page.draft.version-1).all
697
- assert_equal 1, conns.size
698
-
699
- assert_properties conns.first, {
700
- :page => @page,
701
- :page_version => page_version,
702
- :connectable => @block,
703
- :connectable_version => @block.version
704
- }
705
-
706
- assert @page.reload.connectors.for_page_version(@page.draft.version).empty?
707
- assert !@page.live?
708
- end
709
-
710
- def test_removing_multiple_connectors
711
- @block2 = Factory(:html_block)
712
- @conn2 = @page.create_connector(@block2, "bar")
713
- @conn3 = @page.create_connector(@block2, "foo")
714
- #Need to get the new connector that matches @conn2, otherwise you will delete an older version, not the latest connector
715
- @conn2 = Cms::Connector.first(:conditions => {:page_id => @page.reload.id, :page_version => @page.draft.version, :connectable_id => @block2.id, :connectable_version => @block2.version, :container => "bar"})
716
- @page.remove_connector(@conn2)
717
-
718
- page_version_count = Cms::Page::Version.count
719
- page_version = @page.draft.version
720
- page_connector_count = @page.connectors.for_page_version(@page.draft.version).count
721
-
722
- @conn = Cms::Connector.first(:conditions => {:page_id => @page.reload.id, :page_version => @page.draft.version, :connectable_id => @block2.id, :connectable_version => @block2.version, :container => "foo"})
723
- @page.remove_connector(@conn)
724
- @page.reload
725
-
726
- assert_incremented page_version_count, Cms::Page::Version.count
727
- assert_incremented page_version, @page.draft.version
728
- assert_decremented page_connector_count, @page.connectors.for_page_version(@page.draft.version).count
729
-
730
- conns = Cms::Connector.where("page_id = ?", @page.id).order("id")
731
-
732
- assert_equal 9, conns.size
733
-
734
- assert_properties conns[0], {:page => @page, :page_version => 2, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
735
- assert_properties conns[1], {:page => @page, :page_version => 3, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
736
- assert_properties conns[2], {:page => @page, :page_version => 3, :connectable => @block2, :connectable_version => 1, :container => "bar", :position => 2}
737
- assert_properties conns[3], {:page => @page, :page_version => 4, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
738
- assert_properties conns[4], {:page => @page, :page_version => 4, :connectable => @block2, :connectable_version => 1, :container => "bar", :position => 2}
739
- assert_properties conns[5], {:page => @page, :page_version => 4, :connectable => @block2, :connectable_version => 1, :container => "foo", :position => 1}
740
- assert_properties conns[6], {:page => @page, :page_version => 5, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
741
- assert_properties conns[7], {:page => @page, :page_version => 5, :connectable => @block2, :connectable_version => 1, :container => "foo", :position => 1}
742
- assert_properties conns[8], {:page => @page, :page_version => 6, :connectable => @block, :connectable_version => 1, :container => "bar", :position => 1}
743
- end
744
-
745
- end
746
-
747
- class UnpublishedPageWithOnePublishedAndOneUnpublishedBlockTest < ActiveSupport::TestCase
748
- def setup
749
- @page = Factory(:page, :section => root_section)
750
- @published_block = Factory(:html_block, :name => "Published")
751
- @unpublished_block = Factory(:html_block, :name => "Unpublished")
752
- @page.create_connector(@published_block, "main")
753
- @page.create_connector(@unpublished_block, "main")
754
- @published_block.publish!
755
- @page.reload
756
- end
757
-
758
- def test_publishing_the_block
759
- @unpublished_block.publish!
760
- assert @unpublished_block.reload.published?
761
- @page.reload
762
- assert !@page.live?
763
- end
764
-
765
- def test_publishing_the_page
766
- page_version_count = Cms::Page::Version.count
767
- unpublished_block_version_count = @unpublished_block.versions.count
768
- published_block_version_count = @published_block.versions.count
769
-
770
- @page.publish!
771
-
772
- assert_equal page_version_count, Cms::Page::Version.count
773
- assert_equal unpublished_block_version_count, @unpublished_block.versions.count
774
- assert_equal published_block_version_count, @published_block.versions.count
775
- assert @page.live?
776
- assert @unpublished_block.reload.live?
777
- assert @published_block.reload.live?
778
- end
779
-
780
- end
781
-
782
- class RevertingABlockThatIsOnMultiplePagesTest < ActiveSupport::TestCase
783
- def test_that_it_reverts_both_pages
784
- Cms::Page.delete_all
785
-
786
- # 1. Create a new page (Page 1, v1)
787
- @page1 = Factory(:page, :name => "Page 1")
788
- assert_equal 1, @page1.version
789
-
790
- # 2. Create a new page (Page 2, v1)
791
- @page2 = Factory(:page, :name => "Page 2")
792
-
793
- # 3. Add a new html block to Page 1. Save, don't publish. (Page 1, v2)
794
- @block = Factory(:html_block, :name => "Block v1",
795
- :connect_to_page_id => @page1.id, :connect_to_container => "main")
796
- reset(:page1, :page2, :block)
797
- assert_equal 2, @page1.draft.version
798
- assert_equal 1, @page2.draft.version
799
-
800
- # 4. Goto page 2, and select that block. (Page 2, v2)
801
- @page2.create_connector(@block, "main")
802
- reset(:page1, :page2, :block)
803
- assert_equal 2, @page1.draft.version
804
- assert_equal 2, @page2.draft.version
805
-
806
- # 5. Edit the block (Page 1, v3, Page 2, v3, Block v2)
807
- @block.update_attributes!(:name => "Block v2")
808
- reset(:page1, :page2, :block)
809
- assert_equal 3, @page1.draft.version
810
- assert_equal 3, @page2.draft.version
811
- assert_equal 2, @block.draft.version
812
-
813
- # 6. Revert page 1 to version 2. (Page 1, v4, Page 2, v4, Block v3)
814
- @page1.revert_to(2)
815
- reset(:page1, :page2, :block)
816
- assert_equal 4, @page1.draft.version
817
- assert_equal 3, @block.draft.version
818
- assert_equal 4, @page2.draft.version
819
-
820
- # Expected: Both page 1 and 2 will display the same version of the block (v1).
821
- assert_equal "Block v1", @page1.connectors.first.connectable.name
822
- assert_equal "Block v1", @page2.connectors.first.connectable.name
823
-
824
- end
825
-
826
- end
827
-
828
- class ViewingAPreviousVersionOfAPageTest < ActiveSupport::TestCase
829
-
830
- def test_that_it_shows_the_correct_version_of_the_blocks_it_is_connected_to
831
- # 1. Create Page A (v1)
832
- @page = Factory(:page, :section => root_section)
833
-
834
- # 2. Add new Html Block A to Page A (Page A v2, Block A v1)
835
- @block = Factory(:html_block, :name => "Block 1", :connect_to_page_id => @page.id, :connect_to_container => "main")
836
- reset(:page, :block)
837
- assert_equal 2, @page.draft.version
838
- assert_equal 1, @block.draft.version
839
-
840
- # 3. Publish Page A (Page A v3, Block A v2)
841
- @page.publish!
842
- reset(:page, :block)
843
- assert_equal 2, @page.draft.version
844
- assert_equal 1, @block.draft.version
845
-
846
- # 4. Edit Block A (Page A v4, Block A v3)
847
- @block.update_attributes!(:name => "Block 2")
848
- reset(:page, :block)
849
- assert_equal 2, @page.version
850
- assert_equal 3, @page.draft.version
851
- assert_equal 2, @block.draft.version
852
-
853
- # Open Page A in a different browser (as guest)
854
- @live_page = Cms::Page.find_live_by_path(@page.path)
855
- assert_equal 2, @live_page.version
856
- assert_equal "Block 1", @live_page.connectors.for_page_version(@live_page.version).first.connectable.live_version.name
857
-
858
- end
859
- end
860
-
861
- class PortletsDontHaveDraftsTest < ActiveSupport::TestCase
862
-
863
- def test_connectors_with_portlets_should_correctly_be_copied
864
- @page = Factory(:page, :section => root_section)
865
- @portlet = TagCloudPortlet.create(:name => "Portlet", :connect_to_page_id => @page.id, :connect_to_container => "main")
866
-
867
- # Check some assumptions.
868
- assert_equal 2, @page.draft.version, "Verifying that adding a portlet correctly increments page version."
869
- connectors = Cms::Connector.for_connectable(@portlet)
870
- assert_equal 1, connectors.size, "This portlet should have only 1 connector."
871
-
872
- # Verifies that an exception is not thrown while removing connectors
873
- @page.remove_connector(connectors[0])
874
-
875
- assert_equal 3, @page.draft.version
876
- assert @page.reload.connectors.for_page_version(@page.draft.version).empty?, "Verify that all connectors for the latest page are removed."
877
- end
878
- end
879
- end