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,304 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ContentBlockTest < ActiveSupport::TestCase
4
- def setup
5
- @block = Factory(:html_block, :name => "Test")
6
- end
7
-
8
- def test_publishing
9
- assert_equal "Draft", @block.status_name
10
- assert !@block.published?
11
-
12
- @block.publish
13
- assert @block.published?
14
-
15
- @block.publish_on_save = true
16
- @block.save
17
-
18
- assert @block.published?
19
-
20
- assert @block.update_attributes(:name => "Whatever")
21
-
22
-
23
- assert !@block.live?
24
-
25
- end
26
-
27
- def test_revision_comment_on_create
28
- assert_equal 'Created', @block.draft.version_comment
29
- end
30
-
31
- def test_revision_comment_on_update
32
- assert @block.update_attributes(:name => "Something Else", :content => "Whatever")
33
- assert_equal 'Changed content, name', @block.draft.version_comment
34
- end
35
-
36
- test "Updating a block without changing attributes shouldn't cause new save" do
37
- result = @block.update_attributes(:name => @block.name)
38
- assert_equal 1, @block.version, "Block should keep itself at version 1"
39
- assert_equal 1, @block.versions.size, "Should only have the one original version of the block"
40
- assert_equal 'Created', @block.draft.version_comment
41
- assert result , "Update with same attributes should still return true"
42
- end
43
-
44
- def test_custom_revision_comment
45
- assert @block.update_attributes(:name => "Something Else", :version_comment => "Something Changed")
46
- assert_equal "Something Changed", @block.draft.version_comment
47
- end
48
-
49
-
50
- end
51
-
52
- class SoftPublishingTest < ActiveSupport::TestCase
53
-
54
- def setup
55
- @block = Factory(:html_block, :name => "Test")
56
- end
57
-
58
- test "deleted? should return true for deleted records, false otherwise" do
59
- assert_equal false, @block.deleted?
60
- @block.destroy
61
- assert_equal true, @block.deleted?
62
- end
63
-
64
- test "Destroying a block should mark it as deleted, rather than remove it from the database" do
65
- @block.destroy
66
-
67
- found = Cms::HtmlBlock.find_by_sql("SELECT * FROM #{Cms::HtmlBlock.table_name} where id = #{@block.id}")
68
- assert_equal 1, found.size, "Should find one record"
69
- assert_not_nil found[0], "A block should still exist in the database"
70
- assert_equal true, found[0].deleted, "It's published flag should be true"
71
-
72
- end
73
-
74
- test "exists? should not return blocks marked as deleted" do
75
- @block.destroy
76
-
77
- assert_equal false, Cms::HtmlBlock.exists?(@block.id)
78
- assert_equal false, Cms::HtmlBlock.exists?(["name = ?", @block.name])
79
- end
80
-
81
- test "find by id should throw an exception for records marked as deleted" do
82
- @block.destroy
83
- assert_raise(ActiveRecord::RecordNotFound) { Cms::HtmlBlock.find(@b) }
84
-
85
- end
86
-
87
- test "dynamic finders (i.e. find_by_name) should not find deleted records" do
88
- @block.destroy
89
- assert_nil Cms::HtmlBlock.find_by_name(@block.name)
90
- end
91
-
92
-
93
- test "find with deleted returns all records even marked as deleted" do
94
- @block.destroy
95
- assert_not_nil Cms::HtmlBlock.find_with_deleted(@block.id)
96
- end
97
-
98
- test "Marking as deleted should create a new record in the versions table" do
99
- @block.destroy
100
-
101
-
102
- deleted_block = Cms::HtmlBlock.find_with_deleted(@block.id)
103
- assert_equal 2, deleted_block.versions.size
104
- assert_equal 2, deleted_block.version
105
- assert_equal 1, deleted_block.versions.first.version
106
- assert_equal 2, Cms::HtmlBlock::Version.count(:conditions => {:original_record_id => @block.id})
107
- end
108
-
109
- test "Count should exclude deleted records" do
110
- html_block_count = Cms::HtmlBlock.count
111
- @block.destroy
112
- assert_decremented html_block_count, Cms::HtmlBlock.count
113
-
114
- end
115
-
116
- test "count_with_deleted should return all records, even those marked as deleted" do
117
- original_count = Cms::HtmlBlock.count
118
- @block.destroy
119
- assert_equal original_count, Cms::HtmlBlock.count_with_deleted
120
- end
121
-
122
-
123
- def test_delete_all
124
- Cms::HtmlBlock.delete_all(["name = ?", @block.name])
125
- assert_raise(ActiveRecord::RecordNotFound) { Cms::HtmlBlock.find(@block.id) }
126
- assert Cms::HtmlBlock.find_with_deleted(@block.id).deleted?
127
- end
128
- end
129
-
130
- class VersionedContentBlock < ActiveSupport::TestCase
131
- def setup
132
- @block = Factory(:html_block, :name => "Versioned Content Block")
133
- end
134
-
135
- test "Calling publish! on a block should save it, and mark that block as published." do
136
- @block.publish!
137
-
138
- found = Cms::HtmlBlock.find(@block)
139
- assert_equal true, found.published?
140
- end
141
-
142
- test "Getting a block as of a particular version shouldn't be considered a 'new record'." do
143
- @block.update_attributes(:name=>"Changed", :publish_on_save=>true)
144
- @block.reload
145
-
146
- @v1 = @block.as_of_version(1)
147
- assert_equal false, @v1.new_record?, "Old versions of blocks aren't 'new' and shouldn't ever be resaved."
148
-
149
- end
150
-
151
- test 'Calling publish_on_save should not be sufficent to publish the block'do
152
- @block.publish_on_save = true
153
- @block.save
154
-
155
- found = Cms::HtmlBlock.find(@block)
156
- assert_equal 1, found.version
157
- end
158
-
159
- test "Setting the 'publish' flag on a block, along with any other change, and saving it should mark that block as published." do
160
- @block.publish_on_save = true
161
- @block.name = "Anything else"
162
- @block.save
163
-
164
- found = Cms::HtmlBlock.find(@block)
165
- assert_equal true, found.published?
166
- end
167
-
168
- def test_edit
169
- old_name = "Versioned Content Block"
170
- new_name = "New version of content block"
171
- @block.publish!
172
- @block.reload
173
- assert_equal @block.draft.name, old_name
174
- @block.name = new_name
175
- @block.save
176
- @block.reload
177
- assert_equal @block.draft.name, new_name
178
- @block.name = old_name
179
- @block.save
180
- @block.reload
181
- assert_equal @block.draft.name, old_name
182
- end
183
-
184
- def test_revert
185
- old_name = "Versioned Content Block"
186
- new_name = "New version of content block"
187
- @block.publish!
188
- @block.reload
189
- assert_equal @block.draft.name, old_name
190
- version = @block.version
191
- @block.name = new_name
192
- @block.save
193
- @block.reload
194
- assert_equal @block.draft.name, new_name
195
- @block.revert_to(version)
196
- @block.reload
197
- assert_equal @block.draft.name, old_name
198
- end
199
-
200
- end
201
-
202
- class VersionedContentBlockConnectedToAPageTest < ActiveSupport::TestCase
203
- def setup
204
- @page = Factory(:page, :section => root_section)
205
- @block = Factory(:html_block, :name => "Versioned Content Block")
206
- @page.create_connector(@block, "main")
207
- reset(:page, :block)
208
- end
209
-
210
- def test_editing_connected_to_an_unpublished_page
211
- page_version_count = Cms::Page::Version.count
212
- assert_equal 2, @page.versions.size, "Should be two versions of the page"
213
- assert !@page.published?, "The page should not be published yet."
214
-
215
- pages = Cms::Page.connected_to(:connectable => @block, :version => @block.version).all
216
- assert_equal [@page], pages, "The block should be connected to page"
217
-
218
-
219
- assert @block.update_attributes(:name => "something different")
220
- assert_equal false, @block.skip_callbacks
221
- assert_equal 2, @block.versions.size, "should be two versions of this block"
222
- reset(:page)
223
-
224
-
225
- assert !@page.published?
226
- assert_equal 3, @page.versions.size, "Should be three versions of the page."
227
- assert_equal 3, @page.draft.version, "Draft version of page should be updated to v3 since its connected to the updated block."
228
- assert_incremented page_version_count, Cms::Page::Version.count
229
- assert_match /^HtmlBlock #\d+ was Edited/, @page.draft.version_comment
230
-
231
- conns = @block.connectors.all(:order => 'id')
232
- assert_equal 2, conns.size
233
- assert_properties conns[0], :page => @page, :page_version => 2, :connectable => @block, :connectable_version => 1, :container => "main"
234
- assert_properties conns[1], :page => @page, :page_version => 3, :connectable => @block, :connectable_version => 2, :container => "main"
235
- end
236
-
237
- # Verify that when we have a block connected to a published page, the page should remain published.
238
- def test_editing_connected_to_a_published_page
239
- @page.publish!
240
- reset(:page, :block)
241
-
242
- assert @page.published?
243
- assert @block.update_attributes(:name => "something different", :publish_on_save => true)
244
- reset(:page)
245
-
246
- assert @page.published?
247
- end
248
-
249
- def test_deleting_when_connected_to_page
250
- @page.publish!
251
- reset(:page, :block)
252
-
253
- page_connector_count = @page.connectors.for_page_version(@page.draft.version).count
254
- page_version = @page.draft.version
255
-
256
- @block.destroy
257
-
258
- reset(:page)
259
-
260
- assert_decremented page_connector_count, @page.connectors.for_page_version(@page.draft.version).count
261
- assert_incremented page_version, @page.draft.version
262
- assert_match /^HtmlBlock #\d+ was Deleted/, @page.draft.version_comment
263
- end
264
-
265
- end
266
-
267
- class NonVersionedContentBlockConnectedToAPageTest < ActiveSupport::TestCase
268
- def setup
269
- @page = Factory(:page, :section => root_section)
270
- @block = Factory(:non_versioned_block, :name => "Non-Versioned Non-Publishable Content Block")
271
- @page.create_connector(@block, "main")
272
- reset(:page, :block)
273
- end
274
-
275
- def test_editing_connected_to_an_unpublished_page
276
- page_version_count = Cms::Page::Version.count
277
-
278
- assert_equal "Dynamic Portlet '#{@block.name}' was added to the 'main' container", @page.draft.version_comment
279
- assert !@page.published?
280
-
281
- assert @block.update_attributes(:name => "something different")
282
- reset(:page)
283
-
284
- assert 2, @page.version
285
- assert_equal page_version_count, Cms::Page::Version.count
286
- assert !@page.published?
287
-
288
- conns = Cms::Connector.for_connectable(@block).all(:order => 'id')
289
- assert_equal 1, conns.size
290
- assert_properties conns[0], :page => @page, :page_version => 2, :connectable => @block, :connectable_version => nil, :container => "main"
291
- end
292
-
293
-
294
- def test_editing_connected_to_a_published_page
295
- @page.publish!
296
- reset(:page)
297
-
298
- assert @page.published?
299
- assert @block.update_attributes(:name => "something different")
300
- reset(:page)
301
-
302
- assert @page.published?
303
- end
304
- end
@@ -1,40 +0,0 @@
1
- require "test_helper"
2
-
3
- class ContentRenderingSupportTest < ActiveSupport::TestCase
4
-
5
- def setup
6
-
7
- end
8
-
9
- def teardown
10
-
11
- end
12
-
13
- test "still has error handling methods" do
14
- c = Cms::ContentController.new
15
-
16
- assert c.respond_to? :handle_access_denied_on_page
17
- assert c.respond_to? :handle_not_found_on_page
18
- assert c.respond_to? :handle_server_error_on_page
19
- assert c.respond_to? :handle_error_with_cms_page, true
20
-
21
- assert(c.respond_to?(:logged_in?), "Should include Cms::Authentication::Controller methods")
22
- end
23
-
24
- class MyController < ActionController::Base
25
- include Cms::ContentRenderingSupport
26
- end
27
-
28
- test "Arbitrary controller should have authentication methods" do
29
- c = MyController.new
30
-
31
- assert c.respond_to? :handle_access_denied_on_page
32
- assert c.respond_to? :handle_not_found_on_page
33
- assert c.respond_to? :handle_server_error_on_page
34
- assert c.respond_to? :handle_error_with_cms_page, true
35
-
36
- assert(!c.respond_to?(:logged_in?), "Should Not include Cms::Authentication::Controller methods")
37
- assert(c.respond_to?(:handle_server_error), "Should include Cms::ErrorHandling methods")
38
- end
39
-
40
- end
@@ -1,40 +0,0 @@
1
- require 'test_helper'
2
-
3
- class GeneratorsTest < Test::Unit::TestCase
4
-
5
- def test_patterns_substition_for_windows
6
- pattern = /\b[A-Za-z]:\//
7
-
8
- # Default
9
- full_windows_path = "C:/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js"
10
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", full_windows_path.gsub(pattern, "/")
11
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", Cms.scrub_path(full_windows_path)
12
-
13
- # D: drive
14
- full_windows_path = "D:/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js"
15
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", full_windows_path.gsub(pattern, "/")
16
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", Cms.scrub_path(full_windows_path)
17
-
18
- # F: Drive
19
- full_windows_path = "F:/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js"
20
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", full_windows_path.gsub(pattern, "/")
21
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", Cms.scrub_path(full_windows_path)
22
-
23
- # lower-case
24
- full_windows_path = "c:/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js"
25
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", full_windows_path.gsub(pattern, "/")
26
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", Cms.scrub_path(full_windows_path)
27
-
28
- # multiple
29
- full_windows_path = "c:/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js c:/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/custom.js"
30
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js /Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/custom.js", full_windows_path.gsub(pattern, "/")
31
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js /Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/custom.js", Cms.scrub_path(full_windows_path)
32
-
33
- # not scrub if in middle of string
34
- full_windows_path = "c:/Ruby/lib/ruby/gems/1.8/gems:local/browsercms-3.0.0/public/javascripts/jquery-ui.js"
35
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems:local/browsercms-3.0.0/public/javascripts/jquery-ui.js", full_windows_path.gsub(pattern, "/")
36
- assert_equal "/Ruby/lib/ruby/gems/1.8/gems:local/browsercms-3.0.0/public/javascripts/jquery-ui.js", Cms.scrub_path(full_windows_path)
37
-
38
- end
39
-
40
- end
@@ -1,98 +0,0 @@
1
- require 'test_helper'
2
-
3
- class RouteBuilder
4
- include Cms::RouteExtensions
5
- end
6
-
7
- class Bear < ActiveRecord::Base
8
- acts_as_content_block
9
- end
10
-
11
- class Kindness < ActiveRecord::Base
12
- acts_as_content_block
13
- end
14
-
15
- # This verifiest the behavior of how BrowserCMS creates new routes
16
- # for projects.
17
- class RoutesTest < ActiveSupport::TestCase
18
-
19
- def setup
20
- @routes = RouteBuilder.new
21
- end
22
-
23
- test "Verify behavior of classify, and how it works with already pluralized symbols" do
24
- assert_equal "Kindness", :kindnesses.to_s.classify, "routes will pass 'plural' symbols to 'content_block', rather than single"
25
- end
26
-
27
-
28
- # These tests could be better, but I'm not entirely sure how to mock test syntax that looks like:
29
- #
30
- # resources content_block_name do
31
- # member do
32
- # put :publish if content_block.publishable?
33
- # get :versions if content_block.versioned?
34
- # get :usages if content_block.connectable?
35
- # end
36
- # end
37
- #
38
- # Which is what 'content_blocks' is currently doing.
39
- test "behavior of 'content_blocks' route generator" do
40
- rb = RouteBuilder.new
41
-
42
- # Expect
43
- rb.expects(:resources).with(:bears)
44
- rb.expects(:get).with('/bears/:id/version/:version', {:to => 'bears#version', :as => :version_cms_bears})
45
- rb.expects(:put)
46
- rb.content_blocks :bears
47
-
48
- # Verifies the exact messages being passed to the route generator
49
- end
50
-
51
- # Could be better. See previous method.
52
- test "model names with s at the end behave identically (since content_blocks expects plural symbols)" do
53
- rb = RouteBuilder.new
54
- rb.expects(:resources).with(:kindnesses)
55
- rb.expects(:get).with('/kindnesses/:id/version/:version', {:to => 'kindnesses#version', :as => :version_cms_kindnesses})
56
- rb.expects(:put)
57
-
58
- rb.content_blocks :kindnesses
59
-
60
- # Verifies the exact messages being passed to the route generator
61
- end
62
-
63
- end
64
-
65
- module BcmsZoo
66
- class Engine < Rails::Engine
67
- include Cms::Module
68
- end
69
- class Lion < ActiveRecord::Base
70
- acts_as_content_block
71
- end
72
- end
73
-
74
- class RoutingTest < ActiveSupport::TestCase
75
- include Cms::RouteExtensions
76
-
77
- def setup
78
- stubs(:get)
79
- stubs(:put)
80
- end
81
-
82
-
83
- test "Each CMS Engine stores the 'current' namespace" do
84
- Cms::Module.expects(:current_namespace=).with("Cms")
85
- Cms::Engine.routes
86
- end
87
-
88
- test "Other Engines store 'current_namespace'" do
89
- Cms::Module.expects(:current_namespace=).with("BcmsZoo")
90
- BcmsZoo::Engine.routes
91
- end
92
-
93
- test "handle models in modules with namespaces" do
94
- expects(:resources).with(:lion)
95
- Cms::Module.expects(:current_namespace).returns("BcmsZoo")
96
- content_blocks :lion
97
- end
98
- end