/plone/app/page/tests/test_content.py

https://github.com/kcleong/plone.app.page
Python | 85 lines | 53 code | 28 blank | 4 comment | 0 complexity | 7a5ef604af84ed2a7ea3c14f56d4038b MD5 | raw file
  1. import unittest2 as unittest
  2. from plone.app.page.testing import PAGE_INTEGRATION_TESTING
  3. class IntegrationTests(unittest.TestCase):
  4. layer = PAGE_INTEGRATION_TESTING
  5. def test_adding(self):
  6. # Ensure that invokeFactory() works as with normal types
  7. self.layer['folder'].invokeFactory('page', 'dp')
  8. def test_attributes_and_reindexing(self):
  9. from zope.lifecycleevent import modified
  10. # Demonstrate that dynamic types such as ``page``
  11. # automatically get the attributes specified in their model, and
  12. # that content is reindexed when an IObjectModified event is fired.
  13. folder = self.layer['folder']
  14. folder.invokeFactory('page', 'dp', title="Old title")
  15. self.assertEquals("Old title", folder['dp'].title)
  16. folder['dp'].title = "New Title"
  17. modified(folder['dp'])
  18. self.assertEquals("New Title", folder['dp'].title)
  19. results = self.layer['portal']['portal_catalog']({'Title': "New title"})
  20. self.assertEquals(1, len(results))
  21. def test_behavior_registered(self):
  22. from zope.component import getUtility
  23. from plone.behavior.interfaces import IBehavior
  24. from plone.app.blocks.layoutbehavior import ILayoutAware
  25. behavior = getUtility(IBehavior, name=u"plone.app.blocks.layoutbehavior.ILayoutAware")
  26. self.assertEqual(behavior.title, u'Layout support')
  27. self.assertEqual(behavior.interface, ILayoutAware)
  28. self.assertEqual(behavior.marker, ILayoutAware)
  29. def test_behavior_defaults(self):
  30. from plone.app.blocks.layoutbehavior import ILayoutAware
  31. self.layer['folder'].invokeFactory('page', 'dp')
  32. obj = self.layer['folder']['dp']
  33. layout = ILayoutAware(obj)
  34. self.assertEqual(layout.content, None)
  35. self.assertEqual(layout.pageSiteLayout, None)
  36. self.assertEqual(layout.sectionSiteLayout, None)
  37. def test_behavior_default_page_layout(self):
  38. import os.path
  39. from zope.component import provideUtility
  40. from zope.component import getGlobalSiteManager
  41. from plone.resource.directory import FilesystemResourceDirectory
  42. from plone.resource.interfaces import IResourceDirectory
  43. from plone.app.blocks.layoutbehavior import ILayoutAware
  44. basePath = os.path.dirname(__file__)
  45. resourcePath = os.path.join(basePath, 'resources', 'pagelayout', 'default')
  46. resourceDir = FilesystemResourceDirectory(resourcePath)
  47. provideUtility(resourceDir, provides=IResourceDirectory, name=u'++pagelayout++default')
  48. self.layer['folder'].invokeFactory('page', 'dp')
  49. obj = self.layer['folder']['dp']
  50. layout = ILayoutAware(obj)
  51. self.assertEqual(layout.content, u"<div>a page</div>")
  52. self.assertEqual(layout.pageSiteLayout, None)
  53. self.assertEqual(layout.sectionSiteLayout, None)
  54. getGlobalSiteManager().unregisterUtility(resourceDir,
  55. provided=IResourceDirectory,
  56. name=u'++pagelayout++default',
  57. )