This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
collective.dms.mailcontent/src/collective/dms/mailcontent/tests/test_content.py

84 lines
5.1 KiB
Python

# -*- coding: utf8 -*-
import unittest2 as unittest
import datetime
from zope.component import getUtility
from zope.interface import Invalid
from plone.app.testing import setRoles, TEST_USER_ID
from plone.dexterity.utils import createContentInContainer
from plone.registry.interfaces import IRegistry
from collective.dms.mailcontent.testing import INTEGRATION
from collective.dms.mailcontent import dmsmail
class TestContentTypes(unittest.TestCase):
"""Base class to test new content types"""
layer = INTEGRATION
def setUp(self):
self.portal = self.layer['portal']
setRoles(self.portal, TEST_USER_ID, ['Manager'])
class TestDmsmailMethods(TestContentTypes):
def test_reception_date_default_value(self):
reception_date = dmsmail.receptionDateDefaultValue('')
self.assertEqual(reception_date.date(), datetime.date.today())
self.assertEqual(reception_date.hour, 18)
self.assertEqual(reception_date.minute, 0)
def test_original_date_default_value(self):
self.assertEqual(dmsmail.originalMailDateDefaultValue(''), datetime.date.today() - datetime.timedelta(3))
def test_validateIndexValueUniqueness(self):
imail1 = createContentInContainer(self.portal, 'dmsincomingmail', **{'internal_reference_no': '12345',
'title': 'Test 1'})
#test with container as context, value doesn't exist
self.assertEquals(dmsmail.validateIndexValueUniqueness(self.portal, 'dmsincomingmail',
'internal_reference_number', '54321'), None)
#test with container as context, value exists
self.assertRaisesRegexp(Invalid, u"This value is already used", dmsmail.validateIndexValueUniqueness,
*[self.portal, 'dmsincomingmail', 'internal_reference_number', '12345'])
#test with object as context, value doesn't exist
self.assertEquals(dmsmail.validateIndexValueUniqueness(imail1, 'dmsincomingmail',
'internal_reference_number', '54321'), None)
#test with object as context, value exists on the same object
self.assertEquals(dmsmail.validateIndexValueUniqueness(imail1, 'dmsincomingmail',
'internal_reference_number', '12345'), None)
#test with object as context and a sub element in the folder, value exists on the same object
createContentInContainer(imail1, 'dmsmainfile', **{'title': 'File 1'})
self.assertEquals(dmsmail.validateIndexValueUniqueness(imail1, 'dmsincomingmail',
'internal_reference_number', '12345'), None)
#test with object as context, value exists on a different object too
imail2 = createContentInContainer(self.portal, 'dmsincomingmail',
**{'internal_reference_no': '12345', 'title': 'Test 2'})
self.assertRaisesRegexp(Invalid, u"This value is already used", dmsmail.validateIndexValueUniqueness,
*[imail2, 'dmsincomingmail', 'internal_reference_number', '12345'])
#test with empty value
imail3 = createContentInContainer(self.portal, 'dmsincomingmail',
**{'internal_reference_no': '', 'title': 'Test 2'})
self.assertEquals(dmsmail.validateIndexValueUniqueness(self.portal, 'dmsincomingmail',
'internal_reference_number', ''), None)
self.assertEquals(dmsmail.validateIndexValueUniqueness(imail3, 'dmsincomingmail',
'internal_reference_number', ''), None)
def test_evaluateInternalReference(self):
self.assertEquals(dmsmail.evaluateInternalReference(self.portal, self.portal.REQUEST,
'collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_number',
'collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_talexpression'),
'test-in/10')
def test_incrementIncomingMailNumber(self):
registry = getUtility(IRegistry)
old_value = registry['collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_number']
imail1 = createContentInContainer(self.portal, 'dmsincomingmail', **{'internal_reference_no': '12345',
'title': 'Test 1'})
self.assertEquals(registry['collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_number'],
old_value+1)
self.assertEquals(imail1.internal_reference_no, '12345')
# we create a dmsincomingmail without internal_reference_no, it will be generated
imail2 = createContentInContainer(self.portal, 'dmsincomingmail', **{'title': 'Test 2'})
self.assertEquals(imail2.internal_reference_no, 'test-in/11')