browsercms 3.1.5 → 3.3.0.beta

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 (425) hide show
  1. data/app/controllers/cms/base_controller.rb +3 -3
  2. data/app/controllers/cms/content_block_controller.rb +2 -2
  3. data/app/controllers/cms/content_controller.rb +5 -4
  4. data/app/controllers/cms/error_handling.rb +1 -1
  5. data/app/controllers/cms/routes_controller.rb +4 -5
  6. data/app/controllers/cms/section_nodes_controller.rb +1 -6
  7. data/app/controllers/cms/sections_controller.rb +2 -3
  8. data/app/controllers/cms/tasks_controller.rb +3 -0
  9. data/app/controllers/cms/users_controller.rb +1 -1
  10. data/app/helpers/cms/application_helper.rb +137 -34
  11. data/app/helpers/cms/form_builder.rb +33 -21
  12. data/app/helpers/cms/page_helper.rb +43 -10
  13. data/app/helpers/cms/path_helper.rb +1 -1
  14. data/app/helpers/cms/rendering_helper.rb +3 -4
  15. data/app/helpers/cms/section_nodes_helper.rb +5 -43
  16. data/app/models/abstract_file_block.rb +1 -16
  17. data/app/models/attachment.rb +57 -22
  18. data/app/models/category.rb +4 -4
  19. data/app/models/category_type.rb +2 -2
  20. data/app/models/cms/view_context.rb +46 -0
  21. data/app/models/connector.rb +7 -6
  22. data/app/models/content_type.rb +3 -3
  23. data/app/models/dynamic_view.rb +1 -1
  24. data/app/models/email_message.rb +2 -2
  25. data/app/models/file_block.rb +12 -0
  26. data/app/models/group.rb +4 -4
  27. data/app/models/group_type.rb +4 -4
  28. data/app/models/html_block.rb +1 -1
  29. data/app/models/image_block.rb +12 -0
  30. data/app/models/link.rb +22 -5
  31. data/app/models/page.rb +87 -46
  32. data/app/models/page_route.rb +61 -6
  33. data/app/models/permission.rb +1 -1
  34. data/app/models/portlet.rb +14 -4
  35. data/app/models/section.rb +48 -86
  36. data/app/models/section_node.rb +25 -40
  37. data/app/models/site.rb +1 -1
  38. data/app/models/tag.rb +1 -1
  39. data/app/models/task.rb +8 -7
  40. data/app/models/user.rb +2 -7
  41. data/app/portlets/forgot_password_portlet.rb +6 -2
  42. data/app/portlets/reset_password_portlet.rb +1 -1
  43. data/app/views/cms/blocks/_toolbar.html.erb +1 -1
  44. data/app/views/cms/blocks/_toolbar_for_collection.html.erb +3 -6
  45. data/app/views/cms/blocks/_toolbar_for_member.html.erb +3 -5
  46. data/app/views/cms/blocks/edit.html.erb +4 -4
  47. data/app/views/cms/blocks/index.html.erb +7 -7
  48. data/app/views/cms/blocks/new.html.erb +4 -4
  49. data/app/views/cms/blocks/show.html.erb +2 -2
  50. data/app/views/cms/blocks/usages.html.erb +2 -2
  51. data/app/views/cms/blocks/versions.html.erb +4 -4
  52. data/app/views/cms/cache/show.html.erb +2 -2
  53. data/app/views/cms/categories/_form.html.erb +2 -2
  54. data/app/views/cms/connectors/new.html.erb +6 -8
  55. data/app/views/cms/content/no_page.html.erb +1 -1
  56. data/app/views/cms/content/show.html.erb +2 -7
  57. data/app/views/cms/dashboard/_page_drafts.html.erb +1 -1
  58. data/app/views/cms/dashboard/_tasks.html.erb +1 -1
  59. data/app/views/cms/dashboard/index.html.erb +1 -1
  60. data/app/views/cms/dynamic_views/_form.html.erb +2 -2
  61. data/app/views/cms/dynamic_views/index.html.erb +7 -10
  62. data/app/views/cms/email_messages/show.html.erb +2 -2
  63. data/app/views/cms/file_blocks/_form.html.erb +4 -4
  64. data/app/views/cms/form_builder/_cms_fancy_drop_down.html.erb +2 -2
  65. data/app/views/cms/form_builder/_cms_file_field.html.erb +2 -2
  66. data/app/views/cms/form_builder/_cms_tag_list.html.erb +2 -2
  67. data/app/views/cms/form_builder/_cms_text_editor.html.erb +2 -2
  68. data/app/views/cms/groups/_form.html.erb +5 -5
  69. data/app/views/cms/groups/_permissions.html.erb +4 -4
  70. data/app/views/cms/groups/_sections.html.erb +1 -2
  71. data/app/views/cms/groups/index.html.erb +1 -1
  72. data/app/views/cms/html_blocks/render.html.erb +1 -1
  73. data/app/views/cms/image_blocks/_form.html.erb +4 -5
  74. data/app/views/cms/links/_form.html.erb +1 -1
  75. data/app/views/cms/links/edit.html.erb +2 -2
  76. data/app/views/cms/links/new.html.erb +2 -2
  77. data/app/views/cms/page_routes/_form.html.erb +2 -2
  78. data/app/views/cms/page_routes/index.html.erb +6 -9
  79. data/app/views/cms/page_routes/show.html.erb +5 -8
  80. data/app/views/cms/pages/_edit_connector.html.erb +1 -1
  81. data/app/views/cms/pages/_form.html.erb +3 -3
  82. data/app/views/cms/pages/edit.html.erb +2 -2
  83. data/app/views/cms/pages/new.html.erb +7 -7
  84. data/app/views/cms/pages/versions.html.erb +4 -4
  85. data/app/views/cms/redirects/_form.html.erb +2 -2
  86. data/app/views/cms/redirects/index.html.erb +8 -7
  87. data/app/views/cms/routes/index.html.erb +2 -2
  88. data/app/views/cms/section_nodes/_link.html.erb +3 -6
  89. data/app/views/cms/section_nodes/_node.html.erb +4 -13
  90. data/app/views/cms/section_nodes/_page.html.erb +7 -13
  91. data/app/views/cms/section_nodes/_section.html.erb +8 -24
  92. data/app/views/cms/section_nodes/_section_node.html.erb +10 -0
  93. data/app/views/cms/section_nodes/index.html.erb +18 -30
  94. data/app/views/cms/sections/_form.html.erb +4 -6
  95. data/app/views/cms/sections/edit.html.erb +2 -2
  96. data/app/views/cms/sections/index.html.erb +3 -3
  97. data/app/views/cms/sections/new.html.erb +3 -3
  98. data/app/views/cms/sessions/new.html.erb +3 -3
  99. data/app/views/cms/shared/_pagination.html.erb +1 -1
  100. data/app/views/cms/shared/error.html.erb +1 -1
  101. data/app/views/cms/tags/render.html.erb +2 -2
  102. data/app/views/cms/tasks/new.html.erb +4 -4
  103. data/app/views/cms/users/_form.html.erb +3 -3
  104. data/app/views/cms/users/_toolbar.html.erb +3 -3
  105. data/app/views/cms/users/change_password.html.erb +5 -5
  106. data/app/views/cms/users/edit.html.erb +2 -2
  107. data/app/views/cms/users/index.html.erb +4 -4
  108. data/app/views/cms/users/new.html.erb +2 -2
  109. data/app/views/cms/users/show.html.erb +16 -16
  110. data/app/views/layouts/_cms_toolbar.html.erb +5 -5
  111. data/app/views/layouts/_page_toolbar.html.erb +11 -11
  112. data/app/views/layouts/cms/_footer.erb +1 -1
  113. data/app/views/layouts/cms/_head.html.erb +2 -6
  114. data/app/views/layouts/cms/administration.html.erb +32 -32
  115. data/app/views/layouts/cms/content_library.html.erb +5 -5
  116. data/app/views/layouts/cms/toolbar.html.erb +1 -1
  117. data/app/views/portlets/email_page/render.html.erb +2 -2
  118. data/app/views/portlets/forgot_password/render.html.erb +1 -1
  119. data/app/views/portlets/login/render.html.erb +4 -2
  120. data/app/views/portlets/reset_password/render.html.erb +1 -1
  121. data/app/views/tests/pretend/open_with_layout.html.erb +1 -1
  122. data/bin/bcms +0 -0
  123. data/bin/bcms-upgrade +232 -0
  124. data/bin/browsercms +2 -2
  125. data/browsercms.gemspec +16 -14
  126. data/db/migrate/20100705083859_browsercms_3_3_0.rb +56 -0
  127. data/db/seeds.rb +58 -0
  128. data/doc/guides/html/authentication.html +448 -192
  129. data/doc/guides/html/build_it_yourself.html +454 -175
  130. data/doc/guides/html/building_modules.html +451 -220
  131. data/doc/guides/html/building_templates.html +448 -498
  132. data/doc/guides/html/content_blocks.html +450 -470
  133. data/doc/guides/html/customizing_browsercms.html +453 -169
  134. data/doc/guides/html/deployment_guide.html +443 -82
  135. data/doc/guides/html/files/bcmsorg.js +28 -0
  136. data/doc/guides/html/files/clearfix.css +8 -0
  137. data/doc/guides/html/files/cufon.js +7 -0
  138. data/doc/guides/html/files/global.css +190 -0
  139. data/doc/guides/html/files/helvetica.js +91 -0
  140. data/doc/guides/html/files/jquery.js +11 -0
  141. data/doc/guides/html/getting_started.html +454 -213
  142. data/doc/guides/html/index.html +454 -174
  143. data/doc/guides/html/installing_modules.html +454 -186
  144. data/doc/guides/html/portlets.html +451 -232
  145. data/doc/guides/html/user_guide.html +452 -270
  146. data/doc/guides/html/writing_guides.html +454 -161
  147. data/lib/acts_as_list.rb +1 -1
  148. data/lib/browsercms.rb +10 -6
  149. data/lib/cms/acts.rb +7 -0
  150. data/lib/cms/authentication.rb +4 -0
  151. data/lib/cms/authentication/controller.rb +1 -1
  152. data/lib/cms/behaviors.rb +1 -1
  153. data/lib/cms/behaviors/archiving.rb +2 -2
  154. data/lib/cms/behaviors/attaching.rb +28 -43
  155. data/lib/cms/behaviors/categorizing.rb +1 -1
  156. data/lib/cms/behaviors/connecting.rb +27 -12
  157. data/lib/cms/behaviors/dynamic_attributes.rb +8 -5
  158. data/lib/cms/behaviors/hiding.rb +2 -2
  159. data/lib/cms/behaviors/publishing.rb +32 -22
  160. data/lib/cms/behaviors/rendering.rb +41 -18
  161. data/lib/cms/behaviors/searching.rb +1 -1
  162. data/lib/cms/behaviors/soft_deleting.rb +58 -29
  163. data/lib/cms/behaviors/taggable.rb +1 -1
  164. data/lib/cms/behaviors/userstamping.rb +5 -4
  165. data/lib/cms/behaviors/versioning.rb +192 -111
  166. data/lib/cms/content_rendering_support.rb +3 -3
  167. data/lib/cms/date_picker.rb +23 -0
  168. data/lib/cms/engine.rb +46 -0
  169. data/lib/cms/extensions.rb +1 -1
  170. data/lib/cms/extensions/active_record/errors.rb +2 -2
  171. data/lib/cms/extensions/hash.rb +4 -2
  172. data/lib/cms/extensions/string.rb +7 -2
  173. data/lib/cms/init.rb +32 -21
  174. data/lib/cms/module.rb +22 -0
  175. data/lib/cms/module_installation.rb +38 -0
  176. data/lib/cms/routes.rb +127 -115
  177. data/lib/cms/version.rb +2 -2
  178. data/lib/generators/browser_cms.rb +12 -0
  179. data/lib/generators/browser_cms/cms/USAGE +2 -0
  180. data/lib/generators/browser_cms/cms/cms_generator.rb +36 -0
  181. data/{rails_generators/browser_cms → lib/generators/browser_cms/cms}/templates/README +0 -0
  182. data/{rails_generators/browser_cms_demo_site → lib/generators/browser_cms/demo_site}/USAGE +0 -0
  183. data/lib/generators/browser_cms/demo_site/demo_site_generator.rb +138 -0
  184. data/lib/generators/browser_cms/demo_site/templates/demo_site.rake +11 -0
  185. data/{rails_generators/browser_cms_demo_site/templates/migration.rb → lib/generators/browser_cms/demo_site/templates/migration.erb} +2 -8
  186. data/lib/generators/cms/content_block/USAGE +22 -0
  187. data/lib/generators/cms/content_block/content_block_generator.rb +55 -0
  188. data/{rails_generators → lib/generators/cms}/content_block/templates/_form.html.erb +0 -0
  189. data/{rails_generators → lib/generators/cms}/content_block/templates/content_block.rb +0 -0
  190. data/{rails_generators → lib/generators/cms}/content_block/templates/controller.rb +0 -0
  191. data/{rails_generators → lib/generators/cms}/content_block/templates/functional_test.erb +0 -0
  192. data/{rails_generators/content_block/templates/migration.rb → lib/generators/cms/content_block/templates/migration.erb} +1 -1
  193. data/{rails_generators → lib/generators/cms}/content_block/templates/render.html.erb +0 -0
  194. data/{rails_generators → lib/generators/cms}/content_block/templates/unit_test.erb +0 -0
  195. data/lib/generators/cms/install/USAGE +8 -0
  196. data/lib/generators/cms/install/install_generator.rb +20 -0
  197. data/{rails_generators → lib/generators/cms}/portlet/USAGE +3 -16
  198. data/lib/generators/cms/portlet/portlet_generator.rb +38 -0
  199. data/{rails_generators → lib/generators/cms}/portlet/templates/_form.html.erb +0 -0
  200. data/{rails_generators → lib/generators/cms}/portlet/templates/portlet.rb +0 -0
  201. data/{rails_generators → lib/generators/cms}/portlet/templates/portlet_helper.rb +0 -0
  202. data/{rails_generators → lib/generators/cms}/portlet/templates/render.html.erb +0 -0
  203. data/{rails_generators → lib/generators/cms}/portlet/templates/unit_test.erb +0 -0
  204. data/{rails_generators → lib/generators/cms}/template/USAGE +1 -1
  205. data/lib/generators/cms/template/template_generator.rb +18 -0
  206. data/lib/generators/cms/template/templates/template.erb +2 -0
  207. data/lib/generators/cms/upgrade_module/README.txt +3 -0
  208. data/lib/generators/cms/upgrade_module/templates/20100705083859_browsercms_3_3_0.rb +56 -0
  209. data/lib/generators/cms/upgrade_module/templates/README +1 -0
  210. data/lib/generators/cms/upgrade_module/templates/USAGE.erb +10 -0
  211. data/lib/generators/cms/upgrade_module/templates/build_gem.rake +5 -0
  212. data/lib/generators/cms/upgrade_module/templates/engine.erb +7 -0
  213. data/lib/generators/cms/upgrade_module/templates/gemspec.erb +25 -0
  214. data/lib/generators/cms/upgrade_module/templates/gitignore.erb +11 -0
  215. data/lib/generators/cms/upgrade_module/templates/install.erb +9 -0
  216. data/lib/generators/cms/upgrade_module/templates/module_file.erb +3 -0
  217. data/lib/generators/cms/upgrade_module/templates/routes.erb +7 -0
  218. data/lib/generators/cms/upgrade_module/upgrade_module_generator.rb +61 -0
  219. data/lib/tasks/build_gem.rake +1 -0
  220. data/lib/tasks/cms.rake +34 -6
  221. data/lib/tasks/cucumber.rake +53 -0
  222. data/lib/tasks/db.rake +2 -2
  223. data/public/javascripts/cms/application.js +144 -135
  224. data/public/javascripts/cms/sitemap.js +383 -357
  225. data/public/javascripts/jquery-ui.js +782 -591
  226. data/public/javascripts/jquery.cookie.js +38 -43
  227. data/public/javascripts/jquery.js +13 -8
  228. data/public/javascripts/jquery.taglist.js +7 -0
  229. data/public/stylesheets/cms/date_picker.css +49 -40
  230. data/rails/init.rb +2 -3
  231. data/templates/blank.rb +13 -7
  232. data/templates/demo.rb +15 -7
  233. data/templates/module.rb +12 -75
  234. metadata +87 -407
  235. data/app/helpers/cms/content_block_helper.rb +0 -27
  236. data/app/views/layouts/cms/thickbox.html.erb +0 -24
  237. data/db/migrate/20120117144039_browsercms315.rb +0 -94
  238. data/db/migrate/20121114172307_load_seeds.rb +0 -70
  239. data/lib/cms/addressable.rb +0 -83
  240. data/lib/cms/error_pages.rb +0 -8
  241. data/public/images/cms/thickbox/loadingAnimation.gif +0 -0
  242. data/public/images/cms/thickbox/macFFBgHack.png +0 -0
  243. data/public/javascripts/jquery.contextMenu.js +0 -211
  244. data/public/javascripts/jquery.dimensions.js +0 -119
  245. data/public/javascripts/jquery.thickbox.js +0 -10
  246. data/public/stylesheets/cms/jquery.contextMenu.css +0 -61
  247. data/public/stylesheets/cms/thickbox.css +0 -163
  248. data/rails_generators/browser_cms/USAGE +0 -2
  249. data/rails_generators/browser_cms/browser_cms_generator.rb +0 -35
  250. data/rails_generators/browser_cms_demo_site/browser_cms_demo_site_generator.rb +0 -63
  251. data/rails_generators/content_block/USAGE +0 -32
  252. data/rails_generators/content_block/content_block_generator.rb +0 -69
  253. data/rails_generators/portlet/portlet_generator.rb +0 -35
  254. data/rails_generators/template/template_generator.rb +0 -18
  255. data/rails_generators/template/templates/template.erb +0 -3
  256. data/test/custom_assertions.rb +0 -74
  257. data/test/factories.rb +0 -111
  258. data/test/factories/sitemap_factories.rb +0 -28
  259. data/test/fixtures/connectors.yml +0 -97
  260. data/test/fixtures/content_type_groups.yml +0 -13
  261. data/test/fixtures/content_types.yml +0 -50
  262. data/test/fixtures/dynamic_view_versions.yml +0 -26
  263. data/test/fixtures/dynamic_views.yml +0 -26
  264. data/test/fixtures/group_permissions.yml +0 -16
  265. data/test/fixtures/group_sections.yml +0 -31
  266. data/test/fixtures/group_type_permissions.yml +0 -11
  267. data/test/fixtures/group_types.yml +0 -25
  268. data/test/fixtures/groups.yml +0 -25
  269. data/test/fixtures/html_block_versions.yml +0 -67
  270. data/test/fixtures/html_blocks.yml +0 -63
  271. data/test/fixtures/page_versions.yml +0 -265
  272. data/test/fixtures/pages.yml +0 -85
  273. data/test/fixtures/permissions.yml +0 -28
  274. data/test/fixtures/section_nodes.yml +0 -46
  275. data/test/fixtures/sections.yml +0 -19
  276. data/test/fixtures/sites.yml +0 -9
  277. data/test/fixtures/user_group_memberships.yml +0 -11
  278. data/test/fixtures/users.yml +0 -15
  279. data/test/functional/cms/cache_controller_test.rb +0 -14
  280. data/test/functional/cms/categories_controller_test.rb +0 -25
  281. data/test/functional/cms/connectors_controller_test.rb +0 -60
  282. data/test/functional/cms/content_block_controller_test.rb +0 -120
  283. data/test/functional/cms/content_controller_test.rb +0 -439
  284. data/test/functional/cms/content_types_controller_test.rb +0 -18
  285. data/test/functional/cms/dashboard_controller_test.rb +0 -16
  286. data/test/functional/cms/dynamic_views_controller_test.rb +0 -52
  287. data/test/functional/cms/file_blocks_controller_test.rb +0 -52
  288. data/test/functional/cms/groups_controller_test.rb +0 -50
  289. data/test/functional/cms/home_controller_test.rb +0 -156
  290. data/test/functional/cms/html_blocks_controller_test.rb +0 -164
  291. data/test/functional/cms/image_blocks_controller_test.rb +0 -82
  292. data/test/functional/cms/links_controller_test.rb +0 -148
  293. data/test/functional/cms/pages_controller_test.rb +0 -227
  294. data/test/functional/cms/portlets_controller_test.rb +0 -67
  295. data/test/functional/cms/section_nodes_controller_test.rb +0 -112
  296. data/test/functional/cms/sections_controller_test.rb +0 -227
  297. data/test/functional/cms/sessions_controller_test.rb +0 -76
  298. data/test/functional/cms/toolbar_controller_test.rb +0 -64
  299. data/test/functional/cms/users_controller_test.rb +0 -231
  300. data/test/functional/tests/pretend_controller_test.rb +0 -57
  301. data/test/integration/cms/ckeditor_test.rb +0 -30
  302. data/test/integration/cms/password_management_test.rb +0 -56
  303. data/test/integration/login_test.rb +0 -14
  304. data/test/integration/sitemap_performance_test.rb +0 -26
  305. data/test/selenium-core/Blank.html +0 -7
  306. data/test/selenium-core/InjectedRemoteRunner.html +0 -8
  307. data/test/selenium-core/RemoteRunner.html +0 -110
  308. data/test/selenium-core/SeleniumLog.html +0 -109
  309. data/test/selenium-core/TestPrompt.html +0 -145
  310. data/test/selenium-core/TestRunner-splash.html +0 -55
  311. data/test/selenium-core/TestRunner.hta +0 -176
  312. data/test/selenium-core/TestRunner.html +0 -176
  313. data/test/selenium-core/domviewer/butmin.gif +0 -0
  314. data/test/selenium-core/domviewer/butplus.gif +0 -0
  315. data/test/selenium-core/domviewer/domviewer.css +0 -298
  316. data/test/selenium-core/domviewer/domviewer.html +0 -16
  317. data/test/selenium-core/domviewer/selenium-domviewer.js +0 -205
  318. data/test/selenium-core/icons/all.png +0 -0
  319. data/test/selenium-core/icons/continue.png +0 -0
  320. data/test/selenium-core/icons/continue_disabled.png +0 -0
  321. data/test/selenium-core/icons/pause.png +0 -0
  322. data/test/selenium-core/icons/pause_disabled.png +0 -0
  323. data/test/selenium-core/icons/selected.png +0 -0
  324. data/test/selenium-core/icons/step.png +0 -0
  325. data/test/selenium-core/icons/step_disabled.png +0 -0
  326. data/test/selenium-core/iedoc-core.xml +0 -1515
  327. data/test/selenium-core/iedoc.xml +0 -1469
  328. data/test/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
  329. data/test/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
  330. data/test/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
  331. data/test/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
  332. data/test/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
  333. data/test/selenium-core/lib/prototype.js +0 -2006
  334. data/test/selenium-core/lib/scriptaculous/builder.js +0 -101
  335. data/test/selenium-core/lib/scriptaculous/controls.js +0 -815
  336. data/test/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
  337. data/test/selenium-core/lib/scriptaculous/effects.js +0 -958
  338. data/test/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
  339. data/test/selenium-core/lib/scriptaculous/slider.js +0 -283
  340. data/test/selenium-core/lib/scriptaculous/unittest.js +0 -383
  341. data/test/selenium-core/scripts/find_matching_child.js +0 -69
  342. data/test/selenium-core/scripts/htmlutils.js +0 -894
  343. data/test/selenium-core/scripts/injection.html +0 -72
  344. data/test/selenium-core/scripts/js2html.js +0 -70
  345. data/test/selenium-core/scripts/narcissus-defs.js +0 -175
  346. data/test/selenium-core/scripts/narcissus-exec.js +0 -1054
  347. data/test/selenium-core/scripts/narcissus-parse.js +0 -1003
  348. data/test/selenium-core/scripts/se2html.js +0 -63
  349. data/test/selenium-core/scripts/selenium-api.js +0 -2409
  350. data/test/selenium-core/scripts/selenium-browserbot.js +0 -2203
  351. data/test/selenium-core/scripts/selenium-browserdetect.js +0 -150
  352. data/test/selenium-core/scripts/selenium-commandhandlers.js +0 -377
  353. data/test/selenium-core/scripts/selenium-executionloop.js +0 -175
  354. data/test/selenium-core/scripts/selenium-logging.js +0 -147
  355. data/test/selenium-core/scripts/selenium-remoterunner.js +0 -571
  356. data/test/selenium-core/scripts/selenium-testrunner.js +0 -1333
  357. data/test/selenium-core/scripts/selenium-version.js +0 -5
  358. data/test/selenium-core/scripts/user-extensions.js +0 -3
  359. data/test/selenium-core/scripts/user-extensions.js.sample +0 -75
  360. data/test/selenium-core/scripts/xmlextras.js +0 -153
  361. data/test/selenium-core/selenium-logo.png +0 -0
  362. data/test/selenium-core/selenium-test.css +0 -43
  363. data/test/selenium-core/selenium.css +0 -299
  364. data/test/selenium-core/xpath/dom.js +0 -428
  365. data/test/selenium-core/xpath/misc.js +0 -252
  366. data/test/selenium-core/xpath/xpath.js +0 -2223
  367. data/test/selenium/_login_as_cmsadmin.rsel +0 -4
  368. data/test/selenium/dashboard.rsel +0 -5
  369. data/test/selenium/html_blocks.rsel +0 -4
  370. data/test/selenium/login/failed_login.rsel +0 -8
  371. data/test/selenium/login/successful_login.rsel +0 -9
  372. data/test/selenium/page_templates.rsel +0 -12
  373. data/test/selenium/pages/edit_properties.rsel +0 -5
  374. data/test/selenium/site/view_home_page.rsel +0 -4
  375. data/test/selenium/sitemap/move_page.rsel +0 -9
  376. data/test/selenium/sitemap/open_section.rsel +0 -6
  377. data/test/selenium/sitemap/select_page.rsel +0 -12
  378. data/test/selenium/sitemap/select_section.rsel +0 -17
  379. data/test/test_helper.rb +0 -193
  380. data/test/test_logging.rb +0 -67
  381. data/test/unit/behaviors/attaching_test.rb +0 -357
  382. data/test/unit/behaviors/connectable_test.rb +0 -29
  383. data/test/unit/behaviors/dynamic_attributes_test.rb +0 -38
  384. data/test/unit/behaviors/publishable_test.rb +0 -84
  385. data/test/unit/behaviors/searching_test.rb +0 -102
  386. data/test/unit/behaviors/taggable_test.rb +0 -109
  387. data/test/unit/behaviors/versioning_test.rb +0 -36
  388. data/test/unit/extensions/active_record/base_test.rb +0 -10
  389. data/test/unit/extensions/hash_test.rb +0 -17
  390. data/test/unit/extensions/integer_test.rb +0 -10
  391. data/test/unit/helpers/application_helper_test.rb +0 -77
  392. data/test/unit/helpers/form_builder_test.rb +0 -36
  393. data/test/unit/helpers/menu_helper_test.rb +0 -242
  394. data/test/unit/helpers/page_helper_test.rb +0 -67
  395. data/test/unit/helpers/path_helper_test.rb +0 -57
  396. data/test/unit/lib/acts_as_content_page_test.rb +0 -72
  397. data/test/unit/lib/cms/authentication/controller_test.rb +0 -20
  398. data/test/unit/lib/cms/sitemap_test.rb +0 -206
  399. data/test/unit/lib/cms_domain_support_test.rb +0 -43
  400. data/test/unit/lib/command_line_test.rb +0 -70
  401. data/test/unit/lib/content_block_test.rb +0 -203
  402. data/test/unit/lib/content_rendering_support_test.rb +0 -40
  403. data/test/unit/lib/generators_test.rb +0 -40
  404. data/test/unit/lib/routes_test.rb +0 -57
  405. data/test/unit/models/attachment_test.rb +0 -116
  406. data/test/unit/models/category_test.rb +0 -40
  407. data/test/unit/models/category_type_test.rb +0 -8
  408. data/test/unit/models/connector_test.rb +0 -152
  409. data/test/unit/models/content_type_test.rb +0 -56
  410. data/test/unit/models/email_page_portlet_test.rb +0 -14
  411. data/test/unit/models/file_block_test.rb +0 -230
  412. data/test/unit/models/group_test.rb +0 -13
  413. data/test/unit/models/html_block_test.rb +0 -102
  414. data/test/unit/models/link_test.rb +0 -52
  415. data/test/unit/models/page_partial_test.rb +0 -29
  416. data/test/unit/models/page_route_test.rb +0 -29
  417. data/test/unit/models/page_template_test.rb +0 -40
  418. data/test/unit/models/page_test.rb +0 -792
  419. data/test/unit/models/permission_test.rb +0 -10
  420. data/test/unit/models/portlet_test.rb +0 -69
  421. data/test/unit/models/sections_test.rb +0 -264
  422. data/test/unit/models/site_test.rb +0 -50
  423. data/test/unit/models/task_test.rb +0 -141
  424. data/test/unit/models/user_test.rb +0 -352
  425. data/test/unit/schema_statements_test.rb +0 -41
@@ -1,10 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- class PermissionTest < ActiveSupport::TestCase
4
- def test_create
5
- perm = Factory(:permission, :name => "test")
6
- assert !Factory.build(:permission, :name => "").valid?
7
- assert !Factory.build(:permission, :name => "test").valid?
8
- assert_equal perm, Permission.named("test").first
9
- end
10
- end
@@ -1,69 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- # For some reason, these Portlet classes cannot be defined within the PortletTest class. Something
4
- # related to the dynamic attributes causes other tests to fail.
5
- class NoInlinePortlet < Portlet
6
- render_inline false
7
- end
8
- class InlinePortlet < Portlet
9
- end
10
-
11
- class NonEditablePortlet < Portlet
12
- enable_template_editor false
13
- end
14
-
15
- class EditablePortlet < Portlet
16
- enable_template_editor true
17
- end
18
-
19
-
20
- class PortletTest < ActiveSupport::TestCase
21
-
22
- def test_dynamic_attributes
23
- portlet = DynamicPortlet.create(:name => "Test", :foo => "FOO")
24
- assert_equal "FOO", Portlet.find(portlet.id).foo
25
- assert_equal "Dynamic Portlet", portlet.portlet_type_name
26
- end
27
-
28
- def test_portlets_consistently_load_the_same_number_of_types
29
-
30
- list = Portlet.types
31
- assert list.size > 0
32
-
33
- DynamicPortlet.create!(:name=>"test 1")
34
- DynamicPortlet.create!(:name=>"test 2")
35
-
36
- assert_equal list.size, Portlet.types.size
37
- end
38
-
39
-
40
- test "render_inline" do
41
- assert_equal false, NoInlinePortlet.render_inline
42
- end
43
-
44
- test "Portlets should default to render_inline is true" do
45
- assert InlinePortlet.render_inline
46
- end
47
-
48
- test "allow_template_editing" do
49
- assert_equal true, EditablePortlet.render_inline
50
-
51
- assert_equal false, NonEditablePortlet.render_inline
52
- end
53
-
54
- test "If render_inline is true, should return the value of 'template'" do
55
- p = EditablePortlet.new
56
- p.template = "<b>CODE HERE</b>"
57
-
58
- assert_equal p.template, p.inline_options[:inline]
59
- end
60
- test "If render_inline is true, but template is blank, don't render inline" do
61
- p = EditablePortlet.new
62
-
63
- p.template = nil
64
- assert_equal({}, p.inline_options)
65
-
66
- p.template = ""
67
- assert_equal({}, p.inline_options)
68
- end
69
- end
@@ -1,264 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- class SectionTest < ActiveSupport::TestCase
4
-
5
- def setup
6
- @root = Factory(:root_section)
7
- end
8
-
9
- def test_not_allow_slash_in_name
10
- section = Factory.build(:section, :name => "OMG / WTF / BBQ")
11
- assert !section.valid?
12
- assert_has_error_on section, :name, "cannot contain '/'"
13
- end
14
-
15
- test "sections return all child sections of a section" do
16
- s = Factory(:public_section)
17
- assert_equal [s], s.parent.sections
18
- end
19
-
20
- def test_create_sub_section
21
- sub = Factory(:section, :name => "Sub Section", :parent => @root)
22
- assert_equal sub, @root.sections.last
23
- assert_equal @root, sub.parent
24
- end
25
-
26
- def test_move_into_another_section
27
- foo = Factory(:section, :name => "Foo", :parent => @root)
28
- bar = Factory(:section, :name => "Bar", :parent => @root)
29
- assert_equal @root, foo.parent
30
- assert foo.move_to(bar)
31
- assert_equal bar, foo.parent
32
- end
33
-
34
- def test_cannot_move_root_section
35
- foo = Factory(:section, :name => "Foo", :parent => @root)
36
- assert !@root.move_to(foo)
37
- end
38
-
39
- def test_find_first_page_or_link_in_section_page
40
- @a = Factory(:section, :parent => @root, :name => "A")
41
- @a1 = Factory(:section, :parent => @a, :name => "A1")
42
- @a1a = Factory(:section, :parent => @a1, :name => "A1a")
43
- @foo = Factory(:page, :section => @a1a, :name => "Foo")
44
- @b = Factory(:section, :parent => @root, :name => "B")
45
-
46
- assert_equal @foo, @a.first_page_or_link
47
- assert_equal @foo, @a1.first_page_or_link
48
- assert_equal @foo, @a1a.first_page_or_link
49
- assert_nil @b.first_page_or_link
50
- end
51
-
52
- def test_find_first_page_or_link_in_section_link
53
- @a = Factory(:section, :parent => @root, :name => "A")
54
- @a1 = Factory(:link, :section => @a, :name => "A1")
55
- @a2 = Factory(:page, :section => @a, :name => "A2")
56
-
57
- assert_equal @a1, @a.first_page_or_link
58
-
59
- @a2.section_node.move_to(@a, 0)
60
-
61
- assert_equal @a2, @a.first_page_or_link
62
- end
63
-
64
- def test_find_first_page_or_link_after_delete
65
- @a = Factory(:section, :parent => @root, :name => "A")
66
- @a1 = Factory(:page, :section => @a, :name => "A1")
67
- @a2 = Factory(:page, :section => @a, :name => "A2")
68
- @a3 = Factory(:page, :section => @a, :name => "A3")
69
- assert_equal @a1, @a.first_page_or_link
70
- @a1.destroy
71
-
72
- assert_equal @a2, @a.first_page_or_link
73
- end
74
-
75
- def test_section_with_child_sections_should_not_be_deletable
76
- @section = Factory(:section, :parent => @root)
77
- Factory(:section, :parent => @section)
78
-
79
- assert !@section.empty?
80
- assert !@section.deletable?
81
-
82
- assert_no_difference 'Section.count; SectionNode.count' do
83
- @section.destroy
84
- end
85
- end
86
-
87
- test "sections with pages should not be empty?" do
88
- @section = Factory(:section, :parent => @root)
89
- Factory(:page, :section => @section)
90
-
91
- assert_equal false, @section.empty?
92
- end
93
-
94
- def test_section_with_page_should_not_be_deletable
95
- @section = Factory(:section, :parent => @root)
96
- Factory(:page, :section => @section)
97
-
98
- assert !@section.deletable?
99
-
100
- section_count = Section.count
101
- assert !@section.destroy
102
- assert_equal section_count, Section.count
103
- end
104
-
105
- def test_a_root_section_shouldnt_be_deletable_even_without_children
106
- root = Factory(:root_section)
107
-
108
- assert root.empty?
109
- assert !root.deletable?
110
-
111
- assert_no_difference 'Section.count' do
112
- assert !root.destroy
113
- end
114
- end
115
-
116
- def test_empty_section
117
- @section = Factory(:section, :parent => @root)
118
-
119
- assert @section.empty?
120
- assert @section.deletable?
121
-
122
- section_count = Section.count
123
- section_node_count = SectionNode.count
124
- assert @section.destroy
125
- assert_decremented section_count, Section.count
126
- assert_decremented section_node_count, SectionNode.count
127
- end
128
-
129
- def test_creating_page_with_reserved_path
130
- @section = Section.new(:name => "FAIL", :path => "/cms")
131
- assert_not_valid @section
132
- assert_has_error_on(@section, :path, "is invalid, '/cms' a reserved path")
133
-
134
- @section = Section.new(:name => "FAIL", :path => "/cache")
135
- assert_not_valid @section
136
- assert_has_error_on(@section, :path, "is invalid, '/cache' a reserved path")
137
-
138
- @section = Section.new(:name => "FTW", :path => "/whatever")
139
- assert_valid @section
140
- end
141
-
142
- def test_old_syntax_for_marking_group_sections
143
- groups = Group.all(&:id)
144
- assert_equal Group, groups[0].class, "This is previous"
145
-
146
- groups = Group.all()
147
- assert_equal Group, groups[0].class, "No difference between this and the previous call."
148
-
149
- group_ids = Group.all.map(&:id)
150
- assert_equal Fixnum, group_ids[0].class
151
- end
152
-
153
- def test_new_section_with_groups
154
- section = Section.new(:allow_groups=>:all)
155
- assert_equal Group.all, section.groups
156
-
157
- end
158
-
159
- def test_new_section_with_no_groups
160
- s = Section.new(:allow_groups=>:none)
161
- assert_equal 0, s.groups.size
162
- end
163
-
164
- def test_create_section
165
- s = Section.create!(:name=>"For All", :path=>"/", :allow_groups=>:all)
166
-
167
- assert_equal Group.count, Section.with_path("/").first.groups.size
168
- end
169
- end
170
-
171
- class TestsWithoutFixtures < ActiveSupport::TestCase
172
- def setup
173
- remove_all_sitemap_fixtures_to_avoid_bugs
174
- end
175
-
176
- def test_find_by_name_path
177
- @a = Factory(:section, :parent => root_section, :name => "A")
178
- @b = Factory(:section, :parent => @a, :name => "B")
179
- @c = Factory(:section, :parent => @b, :name => "C")
180
-
181
- assert_equal root_section, Section.find_by_name_path("/")
182
- assert_equal @a, Section.find_by_name_path("/A/")
183
- assert_equal @b, Section.find_by_name_path("/A/B/")
184
- assert_equal @c, Section.find_by_name_path("/A/B/C/")
185
- end
186
- end
187
-
188
- class TestAncestors < ActiveSupport::TestCase
189
-
190
- def setup
191
- remove_all_sitemap_fixtures_to_avoid_bugs
192
- @visible_section = Factory(:public_section, :parent=>root_section)
193
- @hidden_section = Factory(:public_section, :parent=>root_section, :hidden=>true)
194
- @visible_page = Factory(:public_page, :section=>root_section)
195
- @hidden_page = Factory(:public_page, :hidden => true, :section=>root_section)
196
- @file_block = Factory(:file_block, :attachment_section => root_section, :attachment_file =>mock_file)
197
- end
198
-
199
- test "visible_child_nodes should include non-hidden sections and non-hidden pages" do
200
- assert_equal [@visible_section.node, @visible_page.node], root_section.visible_child_nodes
201
- end
202
-
203
- test "ancestors :include_self" do
204
- assert_equal [root_section], @visible_section.ancestors
205
- assert_equal [root_section, @visible_section], @visible_section.ancestors(:include_self=>true)
206
- end
207
-
208
- test "#ancestry_path delegates to SectionNode" do
209
- assert_equal @visible_section.node.ancestry_path, @visible_section.ancestry_path
210
- end
211
-
212
- test "#build_section creates a new section within this section" do
213
- new_section = @visible_section.build_section
214
- assert_equal @visible_section, new_section.parent
215
- end
216
-
217
- test "#partial_for" do
218
- assert_equal "section", @visible_section.partial_for
219
- assert_equal "page", @visible_page.partial_for
220
- assert_equal "link", Factory(:link, :section=>root_section).partial_for
221
- end
222
-
223
- test "#status is cached" do
224
- assert_equal :unlocked, @visible_section.status
225
- assert_equal :unlocked, @visible_section.instance_variable_get(:@status)
226
- end
227
-
228
- test "Section#section_node should be the same object " do
229
- sn = root_section.section_node
230
- assert_equal sn.object_id, sn.node.section_node.object_id, "Should be the same object"
231
- end
232
-
233
- test "Page#section_node should be the same object" do
234
- sn = @visible_page.section_node
235
- assert_equal sn.object_id, sn.node.section_node.object_id
236
- end
237
-
238
- test "Link#section_node should be the same object" do
239
- link = Factory(:link, :section=>root_section)
240
- sn = link.section_node
241
- assert_equal sn.object_id, sn.node.section_node.object_id
242
- end
243
-
244
- test "#public?" do
245
- assert @visible_section.public?
246
- refute Factory(:section).public?
247
- end
248
-
249
- test "#sitemap" do
250
- sitemap = Section.sitemap
251
- assert_equal root_section.node, sitemap.keys.first
252
- assert_equal [@visible_section, @hidden_section, @visible_page , @hidden_page].map {|n|n.section_node}, sitemap[root_section.node].keys
253
- end
254
-
255
- test "#master_section_list" do
256
- subsection = Factory(:public_section, :parent=>@visible_section, :name=>"Child 1")
257
- sections = root_section.master_section_list
258
- assert_equal [@visible_section, subsection, @hidden_section], sections
259
- assert_equal "#{@visible_section.name}", sections[0].full_path
260
- assert_equal "#{@visible_section.name} / #{subsection.name}", sections[1].full_path
261
- assert_equal "#{@hidden_section.name}", sections[2].full_path
262
- end
263
-
264
- end
@@ -1,50 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- class SiteTest < ActiveSupport::TestCase
4
-
5
- def test_does_not_allow_duplicate_names
6
- Factory(:site, :domain => "test.com")
7
- @site = Factory.build(:site, :domain => "test.com")
8
- assert !@site.valid?
9
- assert_has_error_on @site, :domain, "has already been taken"
10
- end
11
-
12
- def test_remove_www_from_front_when_saving
13
- @site = Factory(:site, :domain => "www.test.com")
14
- assert_equal "test.com", @site.domain
15
- end
16
-
17
- def test_should_remove_www_from_front_when_saving_preserving_sub_domains
18
- @site = Factory(:site, :domain => "www.foo.test.com")
19
- assert_equal "foo.test.com", @site.domain
20
- end
21
-
22
- def test_should_not_remove_sub_domain_from_domain_when_saving
23
- @site = Factory(:site, :domain => "foo.test.com")
24
- assert_equal "foo.test.com", @site.domain
25
- end
26
-
27
- def test_should_make_the_first_the_default
28
- @first = Site.default.first
29
- @second = Factory(:site)
30
- assert @first.the_default?
31
- assert !@second.the_default?
32
- end
33
-
34
- def test_change_the_default
35
- @first = Factory(:site)
36
- @second = Factory(:site, :the_default => true)
37
- reset(:first, :second)
38
- assert !@first.the_default?
39
- assert @second.the_default?
40
- end
41
-
42
- def test_find_by_domain
43
- @default = Site.default.first
44
- @example = Factory(:site, :domain => "test.com")
45
- assert_equal @example, Site.find_by_domain("test.com")
46
- assert_equal @example, Site.find_by_domain("www.test.com")
47
- assert_equal @default, Site.find_by_domain("whatever.com")
48
- end
49
-
50
- end
@@ -1,141 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../../test_helper')
2
-
3
- class TaskTest < ActiveSupport::TestCase
4
- def setup
5
- super
6
- @editor_a = create_admin_user(:login => "editor_a", :email => "editor_a@example.com")
7
- @editor_b = create_admin_user(:login => "editor_b", :email => "editor_b@example.com")
8
- @non_editor = Factory(:user, :login => "non_editor", :email => "non_editor@example.com")
9
- @page = Factory(:page, :name => "Task Test", :path => "/task_test")
10
- @page2 = Factory(:page, :name => "Task Test 2", :path => "/task_test_2")
11
- end
12
- end
13
-
14
- class CreateTaskTest < TaskTest
15
-
16
- def test_create_task
17
- assert_that_you_can_assign_a_task_to_yourself
18
- assert_that_an_assigned_by_user_that_is_an_editor_is_required
19
- assert_that_an_assigned_to_user_that_is_an_editor_is_required
20
- assert_that_a_page_is_required
21
-
22
- create_the_task!
23
- create_the_second_task!
24
-
25
- assert !@task.completed?
26
- assert(@task.due_date < Time.now)
27
- assert_equal "Howdy!", @task.comment
28
-
29
- assert_that_an_email_is_sent_to_the_user_the_task_was_assigned_to
30
- assert_that_the_page_is_assigned_to_the_assigned_to_user
31
- assert_that_the_task_is_added_to_the_users_incomplete_tasks
32
- end
33
-
34
- protected
35
-
36
- def assert_that_you_can_assign_a_task_to_yourself
37
- assert_valid Factory.build(:task, :assigned_by => @editor_a, :assigned_to => @editor_a)
38
- end
39
-
40
- def assert_that_an_assigned_by_user_that_is_an_editor_is_required
41
- task = Factory.build(:task, :assigned_by => nil, :assigned_to => @editor_a)
42
- assert_not_valid task
43
- assert_has_error_on task, :assigned_by_id, "is required"
44
-
45
- task = Factory.build(:task, :assigned_by => @non_editor, :assigned_to => @editor_a)
46
- assert_not_valid task
47
- assert_has_error_on task, :assigned_by_id, "cannot assign tasks"
48
- end
49
-
50
- def assert_that_an_assigned_to_user_that_is_an_editor_is_required
51
- task = Factory.build(:task, :assigned_by => @editor_a, :assigned_to => nil)
52
- assert_not_valid task
53
- assert_has_error_on task, :assigned_to_id, "is required"
54
-
55
- task = Factory.build(:task, :assigned_by => @editor_a, :assigned_to => @non_editor)
56
- assert_not_valid task
57
- assert_has_error_on task, :assigned_to_id, "cannot be assigned tasks"
58
- end
59
-
60
- def assert_that_a_page_is_required
61
- task = Factory.build(:task, :page => nil)
62
- assert_not_valid task
63
- assert_has_error_on task, :page_id, "is required"
64
- end
65
-
66
- def create_the_task!
67
- @task = Task.create!(
68
- :assigned_by => @editor_a,
69
- :assigned_to => @editor_b,
70
- :due_date => 5.minutes.ago,
71
- :comment => "Howdy!",
72
- :page => @page)
73
- end
74
-
75
- def create_the_second_task!
76
- @task2 = Task.create!(
77
- :assigned_by => @editor_a,
78
- :assigned_to => @editor_b,
79
- :due_date => 1.minutes.ago,
80
- :comment => "Howdy Again!",
81
- :page => @page2)
82
- end
83
-
84
- def assert_that_an_email_is_sent_to_the_user_the_task_was_assigned_to
85
- email = EmailMessage.first(:order => "id asc")
86
- assert_equal @editor_a.email, email.sender
87
- assert_equal @editor_b.email, email.recipients
88
- assert_equal "Page '#{@page.name}' has been assigned to you", email.subject
89
- assert_equal "http://cms.#{SITE_DOMAIN}#{@page.path}\n\n#{@task.comment}", email.body
90
- end
91
-
92
- def assert_that_the_page_is_assigned_to_the_assigned_to_user
93
- assert @page.assigned_to?(@editor_b), "Expected the page to be assigned to editor b"
94
- assert !@page.assigned_to?(@editor_a), "Expected the page not to be assigned to editor a"
95
- end
96
-
97
- def assert_that_the_task_is_added_to_the_users_incomplete_tasks
98
- assert !@editor_a.tasks.incomplete.all.include?(@task),
99
- "Expected Editor A's incomplete tasks not to include the task"
100
- assert !@editor_a.tasks.incomplete.all.include?(@task2),
101
- "Expected Editor A's incomplete tasks not to include the second task"
102
- assert @editor_b.tasks.incomplete.all.include?(@task),
103
- "Expected Editor B's incomplete tasks to include the task"
104
- assert @editor_b.tasks.incomplete.all.include?(@task2),
105
- "Expected Editor B's incomplete tasks to include the second task"
106
- end
107
-
108
- end
109
-
110
- class ExistingIncompleteTaskTest < TaskTest
111
- def setup
112
- super
113
- @existing_task = Factory(:task, :assigned_by => @editor_a, :assigned_to => @editor_b, :page => @page)
114
- end
115
-
116
- def test_create_task_for_a_page_with_existing_incomplete_tasks
117
- assert !@existing_task.completed?
118
-
119
- @new_task = Factory(:task, :assigned_by => @editor_b, :assigned_to => @editor_a, :page => @page)
120
- @existing_task = Task.find(@existing_task.id)
121
-
122
- assert @existing_task.completed?
123
- assert !@new_task.completed?
124
- assert @page.assigned_to?(@editor_a)
125
- assert !@page.assigned_to?(@editor_b)
126
- assert @editor_a.tasks.incomplete.all.include?(@new_task)
127
- assert !@editor_b.tasks.incomplete.all.include?(@existing_task)
128
- end
129
-
130
- def test_completing_a_task
131
- assert !@existing_task.completed?
132
- assert_equal @editor_b, @page.assigned_to
133
- assert @editor_b.tasks.incomplete.all.include?(@existing_task)
134
-
135
- @existing_task.mark_as_complete!
136
-
137
- assert @existing_task.completed?
138
- assert @page.assigned_to.nil?
139
- assert !@editor_b.tasks.incomplete.all.include?(@existing_task)
140
- end
141
- end