Dexterity¶
A example for a Dexterity Content Type called IDepartment:
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¶
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'<a href="http://nohost/plone/pdf_file/@@download">'
u'loremipsum.pdf</a>'
)
Permissions¶
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."
)