Dexterity ========= A example for a Dexterity Content Type called IDepartment: .. code-block:: python class DepartmentIntegrationTest(unittest.TestCase): layer = FREITAG_OVERVIEW_INTEGRATION_TESTING def setUp(self): self.portal = self.layer['portal'] self.request = self.layer['request'] self.request['ACTUAL_URL'] = self.portal.absolute_url() setRoles(self.portal, TEST_USER_ID, ['Manager']) self.portal.invokeFactory('Folder', 'test-folder') self.folder = self.portal['test-folder'] self.portal.invokeFactory('freitag.overview.overview', id="overview1") self.overview = self.portal.overview1 def test_schema(self): fti = queryUtility(IDexterityFTI, name='freitag.overview.department') schema = fti.lookupSchema() self.assertEquals(IDepartment, schema) def test_fti(self): fti = queryUtility(IDexterityFTI, name='freitag.overview.department') self.assertNotEquals(None, fti) def test_factory(self): fti = queryUtility(IDexterityFTI, name='freitag.overview.department') factory = fti.factory new_object = createObject(factory) self.failUnless(IDepartment.providedBy(new_object)) def test_adding(self): self.overview.invokeFactory('freitag.overview.department', 'department1') department1 = self.overview['department1'] self.failUnless(IDepartment.providedBy(department1)) def test_global_adding_disallowed(self): self.assertRaises(ValueError, self.folder.invokeFactory, 'freitag.overview.department', 'department1') Test Reference to file ---------------------- .. code-block:: python def test_method_render_pdf_file_component(self): # Create file to reference to self.portal.invokeFactory('File', 'pdf_file') pdf_file = os.path.join( os.path.dirname(__file__), 'content', u'loremipsum.pdf' ) self.portal.pdf_file.file = NamedBlobFile( data=open(pdf_file, 'r').read(), contentType='application/pdf', filename=u'loremipsum.pdf' ) from zope import component from zope.app.intid.interfaces import IIntIds intids = component.getUtility(IIntIds) pdf_file_id = intids.getId(self.portal.pdf_file) # Create file component self.portal.mi.eb.invokeFactory('FileComponent', 'fc') from z3c.relationfield import RelationValue self.portal.mi.eb.fc.file = RelationValue(pdf_file_id) self.assertTrue(self.portal.mi.eb.fc.render()) self.assertEqual( self.portal.mi.eb.fc.render(), u'' u'loremipsum.pdf' ) Permissions ----------- .. code-block:: python def test_add_medical_information_permission(self): self.portal.invokeFactory('MedicalInformation', 'mi1') sm = getSecurityManager() self.assertTrue( sm.checkPermission("dkg.addMedicalInformation", self.portal.mi1) ) def test_editor_has_add_permission(self): logout() setRoles(self.portal, TEST_USER_ID, ['Editor']) login(self.portal, TEST_USER_NAME) self.assertTrue( self.portal.invokeFactory('MedicalInformation', 'mi1'), "The 'Editor' role does not possess the " + "'dkg.addMedicalInformation' permission." ) def test_external_typist_has_add_permission(self): logout() setRoles(self.portal, TEST_USER_ID, ['External Typist']) login(self.portal, TEST_USER_NAME) self.assertTrue( self.portal.invokeFactory('MedicalInformation', 'mi1'), "The 'External Typist' role does not possess the " + "'dkg.addMedicalInformation' permission." )