def test_OMPDGenerationView(self): """ Test all methods of OMPDGenerationView view """ rep1 = get_object(oid='reponse1', ptype='dmsoutgoingmail') view = rep1.restrictedTraverse('persistent-document-generation') hview = rep1.restrictedTraverse('document_generation_helper_view') view.pod_template = self.portal['templates']['om']['main'] # view(template_uid=template.UID(), output_format='odt') # Test title self.assertEqual(view._get_title('', ''), u'Modèle de base') # Test generate_persistent_doc doc = view.generate_persistent_doc(view.pod_template, 'odt') self.assertEqual(doc.portal_type, 'dmsommainfile') self.assertIsNone(doc.scan_user) # Test redirects # redirects has be monkey patched in tests !! # self.assertEqual(view.redirects(doc), # 'http://nohost/plone/outgoing-mail/reponse1/012999900000001/external_edit') # Test generation context gen_con = view._get_generation_context(hview, view.pod_template) self.assertEqual(gen_con['scan_id'], 'IMIO012999900000002') get_object(oid='reponse1', ptype='dmsoutgoingmail').id = 'test_creation_modele' gen_con = view._get_generation_context(hview, view.pod_template) self.assertEqual(gen_con['scan_id'], 'IMIO012999900000000')
def setUp(self): self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) self.intids = getUtility(IIntIds) self.mail_table = self.portal['incoming-mail']['mail-searches'].unrestrictedTraverse('@@faceted-table-view') self.task_table = self.portal['incoming-mail']['mail-searches'].unrestrictedTraverse('@@faceted-table-view') self.imf = self.portal['incoming-mail'] self.im1 = get_object(oid='courrier1', ptype='dmsincomingmail') self.im5 = get_object(oid='courrier5', ptype='dmsincomingmail') self.ta1 = self.im1['tache1'] self.ta31 = self.im1['tache3']['tache3-1'] self.maxDiff = None
def setUp(self): self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) self.portal.REQUEST['AUTHENTICATED_USER'] = api.user.get(username=TEST_USER_ID) self.im2 = get_object(oid='courrier2', ptype='dmsincomingmail') self.view = self.im2.unrestrictedTraverse('@@actions_panel') self.intids = getUtility(IIntIds)
def test_task_transition(self): # task = createContentInContainer(self.imail, 'task', id='t1') task = get_object(oid='courrier1', ptype='dmsincomingmail')['tache1'] # no assigned_user and no TaskServiceValidation self.assertIsNone(task.assigned_user) api.content.transition(task, transition='do_to_assign') self.assertEqual(api.content.get_state(task), 'to_do') # assigned_user and no TaskServiceValidation api.content.transition(task, transition='back_in_created2') task.assigned_user = '******' api.content.transition(task, transition='do_to_assign') self.assertEqual(api.content.get_state(task), 'to_do') # no assigned_user but TaskServiceValidation but no user in groups api.content.transition(task, transition='back_in_created2') task.assigned_user = None add_applied_adaptation( 'imio.dms.mail.wfadaptations.TaskServiceValidation', 'task_workflow', False) api.content.transition(task, transition='do_to_assign') self.assertEqual(api.content.get_state(task), 'to_do') # no assigned_user but TaskServiceValidation and user in groups api.content.transition(task, transition='back_in_created2') api.group.create(groupname='{}_n_plus_1'.format(task.assigned_group), groups=['chef']) api.content.transition(task, transition='do_to_assign') self.assertEqual(api.content.get_state(task), 'to_assign')
def setUp(self): self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) self.pc = api.portal.get_tool('portal_catalog') self.imf = self.portal['incoming-mail'] self.msf = self.imf['mail-searches'] self.imdb = self.imf['mail-searches']['all_mails'] self.im1 = get_object(oid='courrier1', ptype='dmsincomingmail') self.im2 = get_object(oid='courrier2', ptype='dmsincomingmail') self.im3 = get_object(oid='courrier3', ptype='dmsincomingmail') self.im4 = get_object(oid='courrier4', ptype='dmsincomingmail') self.tsf = self.portal['tasks']['task-searches'] self.ta1 = self.im1['tache1'] self.ta2 = self.im1['tache2'] self.ta3 = self.im1['tache3'] self.pgof = self.portal['contacts']['plonegroup-organization']
def test_call_ContactSuggest(self): imail1 = get_object(oid='courrier1', ptype='dmsincomingmail') view = imail1.unrestrictedTraverse('@@contact-autocomplete-suggest') # no term self.assertEqual(view(), '[]') # term electra view.request['term'] = 'electra' ret = json.loads(view()) self.assertEqual(ret.pop(0), { "text": "Electrabel", "id": self.elec.UID() }) self.assertEqual(ret.pop(0), { "text": "Electrabel / Travaux 1", "id": self.elec['travaux'].UID() }) self.assertEqual( ret.pop(0), { "text": "Monsieur Jean Courant, Agent (Electrabel)", "id": self.ctct['jeancourant']['agent-electrabel'].UID() }) self.assertEqual(ret.pop(0), { "text": "Monsieur Jean Courant", "id": self.ctct['jeancourant'].UID() }) self.assertEqual(ret.pop(0), { "text": "Electrabel [TOUT]", "id": 'l:%s' % self.elec.UID() }) self.assertEqual( ret.pop(0), { "text": "Electrabel / Travaux 1 [TOUT]", "id": 'l:%s' % self.elec['travaux'].UID() })
def test_RestrictedNamedBlobFile(self): path = "%s/batchimport/toprocess/outgoing-mail/Accusé de réception.odt" % imiodmsmail.__path__[ 0] odtfile = file(path, 'rb') odtblob = NamedBlobFile(data=odtfile.read(), filename=u'file.odt') odtfile.close() path = "%s/configure.zcml" % imiodmsmail.__path__[0] otherfile = file(path, 'rb') otherblob = NamedBlobFile(data=otherfile.read(), filename=u'file.txt') otherfile.close() registry = getUtility(IRegistry) # check content type self.assertEqual(get_contenttype(odtblob), 'application/vnd.oasis.opendocument.text') self.assertEqual(get_contenttype(otherblob), 'text/plain') field = RestrictedNamedBlobFile() # with om context and good file field.context = get_object(oid='reponse1', ptype='dmsoutgoingmail')['1'] field._validate(odtblob) # with bad file self.assertRaises(Invalid, field._validate, otherblob) # bad file, validation deactivated registry[ 'imio.dms.mail.browser.settings.IImioDmsMailConfig.omail_odt_mainfile'] = False field._validate(otherblob)
def test_showEditableBorder(self): view = get_object( oid='courrier1', ptype='dmsincomingmail').unrestrictedTraverse('@@plone') self.assertEqual(view.showEditableBorder(), False) view = self.portal['front-page'].unrestrictedTraverse('@@plone') self.assertEqual(view.showEditableBorder(), True)
def test_TaskUtilsMethods_can_do_transition1(self): task = get_object(oid='courrier1', ptype='dmsincomingmail')['tache1'] api.content.transition(task, transition='do_to_assign') self.assertEqual(api.content.get_state(task), 'to_do') view = TaskUtilsMethods(task, task.REQUEST) setRoles(self.portal, TEST_USER_ID, ['Editor', 'Reviewer']) # no assigned_group: NOK task.assigned_group = None self.assertFalse(view.can_do_transition('back_in_created2')) self.assertFalse(view.can_do_transition('back_in_to_assign')) # ag ok, no user in group task.assigned_group = get_registry_organizations()[0] groupname = '{}_n_plus_1'.format(task.assigned_group) self.assertFalse(group_has_user(groupname)) self.assertTrue(view.can_do_transition('back_in_created2')) self.assertFalse(view.can_do_transition('back_in_to_assign')) # ag ok, user in group api.group.add_user(groupname=groupname, username='******') self.assertTrue(group_has_user(groupname)) self.assertFalse(view.can_do_transition('back_in_created2')) self.assertTrue(view.can_do_transition('back_in_to_assign')) # we do transition api.content.transition(task, transition='back_in_to_assign') api.content.transition(task, transition='back_in_created') api.content.transition(task, transition='do_to_assign') self.assertEqual(api.content.get_state(task), 'to_assign')
def test_ContextInformationViewlet(self): login(self.portal, 'encodeur') org_v = ContextInformationViewlet(self.elec, self.elec.REQUEST, None) self.assertListEqual(org_v.getAllMessages(), []) sorg_v = ContextInformationViewlet(self.elec['travaux'], self.elec.REQUEST, None) self.assertTrue(self.elec['travaux'].use_parent_address) self.assertListEqual(sorg_v.getAllMessages(), []) pers_v = ContextInformationViewlet(self.jean, self.elec.REQUEST, None) self.assertEqual(len(pers_v.getAllMessages()), 1) # no address hp_v = ContextInformationViewlet(self.jean['agent-electrabel'], self.elec.REQUEST, None) self.assertTrue(self.jean['agent-electrabel'].use_parent_address) self.assertListEqual(hp_v.getAllMessages(), []) om_v = ContextInformationViewlet( get_object(oid='reponse1', ptype='dmsoutgoingmail'), self.elec.REQUEST, None) self.assertListEqual(om_v.getAllMessages(), []) # removing street from electrabel org self.elec.street = None msgs = org_v.getAllMessages() self.assertEqual(len(msgs), 1) self.assertTrue(isinstance(msgs[0], PseudoMessage)) self.assertIn('missing address fields: street', msgs[0].text.output) self.assertEqual(len(sorg_v.getAllMessages()), 1) # suborganization has missing street too self.assertEqual(len(hp_v.getAllMessages()), 1) # held position has missing street too self.assertEqual(len(om_v.getAllMessages()), 1) # outgoing mail has missing street too
def test_OutgoingMailLinksViewlet(self): """ Test viewlet """ rep1 = get_object(oid='reponse1', ptype='dmsoutgoingmail') viewlet = OutgoingMailLinksViewlet(rep1, rep1.REQUEST, None) self.assertFalse(viewlet.available()) self.assertEqual(viewlet.get_generation_view_name('', ''), 'persistent-document-generation')
def test_find_relations(self): login(self.portal, 'encodeur') viewlet = ContactContentBackrefsViewlet(self.elec, self.elec.REQUEST, None) ret = viewlet.find_relations(from_attribute='sender') self.assertSetEqual( set([b.getObject() for b in ret]), { get_object(oid='courrier7', ptype='dmsincomingmail'), get_object(oid='courrier1', ptype='dmsincomingmail') }) ret = viewlet.find_relations( from_interfaces_flattened=IImioDmsIncomingMail) self.assertSetEqual( set([b.getObject() for b in ret]), { get_object(oid='courrier7', ptype='dmsincomingmail'), get_object(oid='courrier1', ptype='dmsincomingmail') }) # call on person viewlet = ContactContentBackrefsViewlet(self.jean, self.jean.REQUEST, None) ret = viewlet.find_relations() self.assertSetEqual( set([b.getObject() for b in ret]), { get_object(oid='courrier3', ptype='dmsincomingmail'), get_object(oid='courrier9', ptype='dmsincomingmail') }) # call on held position agent = self.jean['agent-electrabel'] viewlet = ContactContentBackrefsViewlet(agent, agent.REQUEST, None) ret = viewlet.find_relations() self.assertSetEqual( set([b.getObject() for b in ret]), {get_object(oid='courrier5', ptype='dmsincomingmail')})
def test_call_SenderSuggest(self): omail1 = get_object(oid='courrier1', ptype='dmsincomingmail') view = omail1.unrestrictedTraverse('@@sender-autocomplete-suggest') # no term self.assertEqual(view(), '[]') # search held position view.request['term'] = 'directeur' ret = json.loads(view()) self.assertEqual( ret.pop(0), { 'text': u'Monsieur Maxime DG, Directeur du personnel (Mon organisation / Direction générale ' u'/ GRH)', 'id': self.pf['dirg']['directeur-du-personnel'].UID() }) self.assertEqual( ret.pop(0), { 'text': u'Monsieur Maxime DG, Directeur général (Mon organisation / Direction générale)', 'id': self.pf['dirg']['directeur-general'].UID() }) # search organization view.request['term'] = 'direction générale grh' ret = json.loads(view()) self.assertEqual( ret.pop(0), { 'text': u'Mon organisation / Direction générale / GRH', u'id': self.pgo['direction-generale']['grh'].UID() }) self.assertEqual( ret.pop(0), { "text": u"Monsieur Fred Agent, Agent GRH (Mon organisation / Direction générale / GRH)", "id": self.pf['agent']['agent-grh'].UID() }) self.assertEqual( ret.pop(0), { "text": u"Monsieur Michel Chef, Responsable GRH (Mon organisation / Direction générale " u"/ GRH)", "id": self.pf['chef']['responsable-grh'].UID() }) self.assertEqual( ret.pop(0), { 'text': u'Monsieur Maxime DG, Directeur du personnel (Mon organisation / Direction générale ' u'/ GRH)', 'id': self.pf['dirg']['directeur-du-personnel'].UID() }) self.assertEqual( ret.pop(0), { 'text': u'Mon organisation / Direction générale / GRH [TOUT]', u'id': 'l:%s' % self.pgo['direction-generale']['grh'].UID() })
def test_updateFields(self): imail1 = get_object(oid='courrier1', ptype='dmsincomingmail') view = imail1.unrestrictedTraverse('@@reply') view.updateFields() form = self.portal.REQUEST.form expected_linked_mails = ('/'.join(imail1.getPhysicalPath()), ) self.assertEqual(form['form.widgets.reply_to'], expected_linked_mails) self.assertEqual(translate(view.label), u'Reply to E0001 - Courrier 1') expected_recipients = ('/plone/contacts/electrabel', ) self.assertEqual(form['form.widgets.recipients'], expected_recipients)
def test_OM_get_sender_email(self): om = get_object(oid='reponse1', ptype='dmsoutgoingmail') # default option is getting agent email self.assertEqual(om.get_sender_email(), u'"Michel Chef" <*****@*****.**>') # get service email replyto_key = 'imio.dms.mail.browser.settings.IImioDmsMailConfig.omail_sender_email_default' api.portal.set_registry_record(replyto_key, u'service_email') self.assertEqual(om.get_sender_email(), u'*****@*****.**') # get higher email org = om.get_sender_info()['org'] org.email = u'*****@*****.**' self.assertEqual(om.get_sender_email(), u'*****@*****.**') # get nearest email
def test_OMMLPDGenerationView(self): """ Test all methods of OMMLPDGenerationView view """ rep1 = get_object(oid='reponse1', ptype='dmsoutgoingmail') view = rep1.restrictedTraverse('mailing-loop-persistent-document-generation') view.pod_template = self.portal['templates']['om']['mailing'] view.document = rep1['1'] view.document.title = u'Modèle de base' # Test title self.assertEqual(view._get_title('', ''), u'Publipostage, Modèle de base')
def test_call(self): imail1 = get_object(oid='courrier1', ptype='dmsincomingmail') self.assertIsNone(imail1.assigned_user) view = imail1.unrestrictedTraverse('@@update_item') # called without form value view() self.assertIsNone(imail1.assigned_user) # called with form value form = self.portal.REQUEST.form form['assigned_user'] = '******' view() self.assertEqual(imail1.assigned_user, 'chef')
def test_reply_to(self): catalog = getUtility(ICatalog) imail1 = get_object(oid='courrier1', ptype='dmsincomingmail') imail2 = get_object(oid='courrier2', ptype='dmsincomingmail') omail1 = get_object(oid='reponse1', ptype='dmsoutgoingmail') omail2 = get_object(oid='reponse2', ptype='dmsoutgoingmail') omail1.reply_to = [ RelationValue(self.intids.getId(imail1)), RelationValue(self.intids.getId(imail2)), RelationValue(self.intids.getId(omail2)), ] modified(omail1) self.assertEqual(len(omail1.reply_to), 3) omail_intid = self.intids.queryId(omail1) query = { 'from_id': omail_intid, 'from_attribute': 'reply_to' } linked = set([rel.to_object for rel in catalog.findRelations(query)]) self.assertSetEqual(set([imail1, imail2, omail2]), linked)
def test_add(self): setRoles(self.portal, TEST_USER_ID, ['Member', 'Manager']) imail1 = get_object(oid='courrier1', ptype='dmsincomingmail') omail1 = api.content.create(container=self.portal, type='dmsoutgoingmail', id='newo1', title='TEST') view = imail1.unrestrictedTraverse('@@reply') view.add(omail1) self.assertIn( 'newo1', self.portal['outgoing-mail'][datetime.now().strftime( PERIODS['week'])])
def test_backrefs(self): viewlet = ContactContentBackrefsViewlet(self.elec, self.elec.REQUEST, None) # configure to see all refs api.portal.set_registry_record( 'imio.dms.mail.browser.settings.IImioDmsMailConfig.all_backrefs_view', True) self.assertListEqual([ self.portal.unrestrictedTraverse(b.getPath()) for b in viewlet.backrefs() ], [ get_object(oid='reponse7', ptype='dmsoutgoingmail'), get_object(oid='reponse1', ptype='dmsoutgoingmail'), get_object(oid='courrier7', ptype='dmsincomingmail'), get_object(oid='courrier1', ptype='dmsincomingmail') ]) # configure to see only permitted refs api.portal.set_registry_record( 'imio.dms.mail.browser.settings.IImioDmsMailConfig.all_backrefs_view', False) self.assertListEqual(viewlet.backrefs(), []) # login to get view permission login(self.portal, 'encodeur') self.assertListEqual([b.getObject() for b in viewlet.backrefs()], [ get_object(oid='courrier7', ptype='dmsincomingmail'), get_object(oid='courrier1', ptype='dmsincomingmail') ])
def test_AssignedUserValidator(self): # im obj = get_object(oid='courrier1', ptype='dmsincomingmail') view = IMEdit(obj, obj.REQUEST) auv = AssignedUserValidator(obj, view.request, view, 'fld', 'widget') self.assertEqual(obj.treating_groups, self.pgof['direction-generale'].UID()) obj.assigned_user = '******' # we change group: user is in view.request.form['form.widgets.treating_groups'] = [self.pgof['evenements'].UID()] self.assertIsNone(auv.validate('agent1')) # we change group but user is not in view.request.form['form.widgets.treating_groups'] = [self.pgof['direction-financiere'].UID()] self.assertRaises(Invalid, auv.validate, 'agent1') # om obj = get_object(oid='reponse1', ptype='dmsoutgoingmail') view = OMEdit(obj, obj.REQUEST) auv = AssignedUserValidator(obj, view.request, view, 'fld', 'widget') self.assertEqual(obj.treating_groups, self.pgof['direction-generale'].UID()) obj.assigned_user = '******' # we change group: user is in view.request.form['form.widgets.treating_groups'] = [self.pgof['evenements'].UID()] self.assertIsNone(auv.validate('agent1')) # we change group but user is not in view.request.form['form.widgets.treating_groups'] = [self.pgof['direction-financiere'].UID()] self.assertRaises(Invalid, auv.validate, 'agent1') # task obj = get_object(oid='courrier1', ptype='dmsincomingmail')['tache1'] view = TaskEdit(obj, obj.REQUEST) auv = AssignedUserValidator(obj, view.request, view, 'fld', 'widget') self.assertEqual(obj.assigned_group, self.pgof['direction-generale'].UID()) obj.assigned_user = '******' # we change group: user is in view.request.form['form.widgets.ITask.assigned_group'] = [self.pgof['evenements'].UID()] self.assertIsNone(auv.validate('agent1')) # we change group but user is not in view.request.form['form.widgets.ITask.assigned_group'] = [self.pgof['direction-financiere'].UID()] self.assertRaises(Invalid, auv.validate, 'agent1')
def test_im_actionspanel_cache(self): # TODO update this irrelevant test ret0 = self.view() # we have 3 actions: edit, propose manager, propose agent self.assertEqual(ret0.count(u'<td '), 3) api.content.transition(self.im2, 'propose_to_agent') ret1 = self.view() # we have the same transitions because there is a cache on getTransitions self.assertEqual(ret1.count(u'<td '), 5) # we add a reply om2 = get_object(oid='reponse2', ptype='dmsoutgoingmail') om2.reply_to = [RelationValue(self.intids.getId(self.im2))] modified(om2) ret2 = self.view() self.assertEqual(ret2.count(u'<td '), 5)
def test_call(self): omail1 = get_object(oid='reponse1', ptype='dmsoutgoingmail') omf = omail1['1'] sse_vw = omail1.restrictedTraverse('server_sent_events') eee_vw = omf.restrictedTraverse('@@externalEditorEnabled') # a dmsommainfile has been added manually and we go back on the dmsoutgoingmail self.assertEqual(omf.conversion_finished, True) self.assertFalse(hasattr(omf, 'generated')) self.assertEqual(sse_vw(), u'') # no refresh # a dmsommainfile has been generated omf.generated = 1 omf.conversion_finished = True self.assertEqual(sse_vw(), u'') # no refresh self.assertEqual(omf.generated, 2) # waiting external edition # we lock like zopeedit omf.restrictedTraverse('lock-unlock')() self.assertTrue(eee_vw.isObjectLocked()) self.assertEqual(sse_vw(), u'') # no refresh self.assertEqual(omf.generated, 3) # was always waiting but will end self.assertEqual(sse_vw(), u'') # no refresh self.assertEqual(omf.generated, 3) # no more waiting but locked # we unlock omf.restrictedTraverse('lock-unlock')(unlock=1) self.assertFalse(eee_vw.isObjectLocked()) res = sse_vw() # u'data: {"path": "/plone/outgoing-mail/reponse1/1", "id": "1", "refresh": true}\n\n' self.assertIn('"id": "1", "refresh": true', res) # we refresh # a dmsommainfile is edited with zopeedit self.assertFalse(hasattr(omf, 'generated')) self.assertFalse(hasattr(omf, 'conversion_finished')) self.assertEqual(sse_vw(), u'') # no refresh # we lock like zopeedit omf.restrictedTraverse('lock-unlock')() self.assertTrue(eee_vw.isObjectLocked()) self.assertEqual(sse_vw(), u'') # no refresh # we save the file in the editor but dont close it omf.conversion_finished = True self.assertEqual(sse_vw(), u'') # no refresh self.assertEqual(omf.generated, 3) # set as no more waiting # we unlock omf.restrictedTraverse('lock-unlock')(unlock=1) self.assertFalse(eee_vw.isObjectLocked()) res = sse_vw() # u'data: {"path": "/plone/outgoing-mail/reponse1/1", "id": "1", "refresh": true}\n\n' self.assertIn('"id": "1", "refresh": true', res) # we refresh
def test_TaskParentColumn(self): column = TaskParentColumn(self.portal, self.portal.REQUEST, self.task_table) brain = self.portal.portal_catalog(UID=self.ta1.UID())[0] mail = get_object(oid='courrier1', ptype='dmsincomingmail') self.assertEqual(column.renderCell(brain), u"<a class='pretty_link' title='E0001 - Courrier 1' " u"href='{}' target='_blank'><span class='pretty_link_icons'><img title='Incoming Mail' " u"src='http://nohost/plone/++resource++imio.dms.mail/dmsincomingmail_icon.png' style=" u"\"width: 16px; height: 16px;\" /></span><span class='pretty_link_content state-created'>" u"E0001 - Courrier 1</span></a>".format(mail.absolute_url())) brain = self.portal.portal_catalog(UID=self.ta31.UID())[0] self.assertEqual(column.renderCell(brain), u"<a class='pretty_link' title='E0001 - Courrier 1' " u"href='{}' target='_blank'><span class='pretty_link_icons'><img title='Incoming Mail' " u"src='http://nohost/plone/++resource++imio.dms.mail/dmsincomingmail_icon.png' style=" u"\"width: 16px; height: 16px;\" /></span><span class='pretty_link_content state-created'>" u"E0001 - Courrier 1</span></a>".format(mail.absolute_url()))
def test_OM_get_recipient_emails(self): om = get_object(oid='reponse1', ptype='dmsoutgoingmail') self.assertIsNone(om.orig_sender_email) recip1 = self.portal.unrestrictedTraverse(om.recipients[0].to_path) # recip1 is electrabel org self.assertEqual(recip1.email, u'*****@*****.**') self.assertEqual(om.get_recipient_emails(), u'*****@*****.**') # we add an orig_email_sender om.orig_sender_email = u'"Dexter Morgan" <*****@*****.**>' self.assertEqual(om.get_recipient_emails(), u'"Dexter Morgan" <*****@*****.**>, [email protected]') # we use the same email om.orig_sender_email = u'"Dexter Morgan" <*****@*****.**>' self.assertEqual(om.get_recipient_emails(), u'"Dexter Morgan" <*****@*****.**>') # we add a recipient hp = self.portal['contacts']['jeancourant']['agent-electrabel'] om.recipients.append(RelationValue(self.intids.getId(hp))) self.assertEqual(om.get_recipient_emails(), u'"Dexter Morgan" <*****@*****.**>, ' u'"Jean Courant" <*****@*****.**>')
def test_call(self): omail1 = get_object(oid='reponse1', ptype='dmsoutgoingmail') omail1.send_modes = [u'email'] omail1.email_subject = u'Email subject' omail1.email_sender = u'*****@*****.**' omail1.email_recipient = u'*****@*****.**' omail1.email_body = richtextval(u'My email content.') view = omail1.unrestrictedTraverse('@@send_email') # Status before call self.assertEqual(api.content.get_state(omail1), 'created') self.assertIsNone(omail1.email_status) MockMailHost.secureSend = MockMailHost.send mail_host = get_mail_host() mail_host.reset() # view call view() self.assertIn('Subject: =?utf-8?q?Email_subject?=\n', mail_host.messages[0]) self.assertIn('My email content.', mail_host.messages[0]) self.assertEqual(api.content.get_state(omail1), 'sent') self.assertIsNotNone(omail1.email_status)
def test_call(self): model = api.portal.get_registry_record( 'imio.dms.mail.browser.settings.IImioDmsMailConfig.' 'omail_email_signature') self.assertIn('http://*****:*****@@render_email_signature') self.assertIn('sender', view.namespace) self.assertEqual(view.namespace['sender']['org_full_title'], u'Direction générale - GRH') self.assertEqual(view.namespace['sender']['person'].title, u'Monsieur Michel Chef') # ctct_det = view.namespace['dghv'].get_ctct_det(view.namespace['sender']['hp']) rendered = view().output self.assertIn(u'>Michel Chef<', rendered) self.assertIn(u'>Responsable GRH<', rendered) self.assertIn(u'>Direction générale<', rendered) self.assertIn(u'>GRH<', rendered) self.assertIn(u'>[email protected]<', rendered) self.assertIn(u'>012/34.56.79<', rendered) self.assertIn(u'>Rue Léon Morel, 1<', rendered) self.assertIn(u'>5032 Isnes<', rendered)
def test_IM_Title(self): imail1 = get_object(oid='courrier1', ptype='dmsincomingmail') self.assertEquals(imail1.Title(), 'E0001 - Courrier 1') imail = sub_create(self.portal['incoming-mail'], 'dmsincomingmail', datetime.now(), 'my-id', **{'title': u'Test with auto ref'}) self.assertEquals(imail.Title(), 'E0010 - Test with auto ref')
def test_get_object(self): obj = api.content.create(container=self.portal.folder, id='mydoc', title='My document', type='Document') # Give parent information self.assertEqual(obj, get_object(parent=self.portal.folder)) self.assertEqual(obj, get_object(parent='/folder')) self.assertEqual(obj, get_object(parent='/folder/')) self.assertEqual(obj, get_object(parent='folder/')) self.assertEqual(obj, get_object(parent='folder')) # Give obj path information self.assertEqual(obj, get_object(obj_path='/folder/mydoc')) self.assertEqual(obj, get_object(obj_path='/folder/mydoc/')) self.assertEqual(obj, get_object(obj_path='folder/mydoc')) self.assertEqual(obj, get_object(obj_path='/folder/mydoc', parent='folder')) self.assertEqual(self.portal, get_object(obj_path='/')) # Give id self.assertEqual(obj, get_object(id='mydoc')) # Give title self.assertEqual(obj, get_object(title='My document')) # Give type self.assertEqual(obj, get_object(type='Document', id='mydoc')) # All parameters self.assertEqual(obj, get_object(type='Document', id='mydoc', title='My document', parent='folder')) self.assertEqual(obj, get_object(type='Document', id='mydoc', title='My document', obj_path='folder/mydoc'))
def test_OMDGHelper(self): """ Test all methods of OMDGHelper view """ view1 = get_object(oid='reponse1', ptype='dmsoutgoingmail').unrestrictedTraverse('@@document_generation_helper_view') # Test fmt method self.assertEqual(view1.fmt(None), '') self.assertEqual(view1.fmt('Test'), 'Test ') self.assertEqual(view1.fmt('Test', fmt='(%s)'), '(Test)') # Test get_ctct_det method self.assertDictEqual(view1.get_ctct_det(''), {}) det = {'address': {}, 'website': '', 'fax': '', 'phone': '', 'im_handle': '', 'cell_phone': '', 'email': ''} self.assertDictEqual(view1.get_ctct_det(self.jc), det) # get address from linked organization det = {'address': {'city': u'E-ville', 'country': '', 'region': '', 'additional_address_details': '', 'number': u'1', 'street': u"Rue de l'électron", 'zip_code': u'0020'}, 'im_handle': '', 'cell_phone': '', 'email': u'*****@*****.**', 'website': '', 'fax': '', 'phone': u'012345678'} self.assertDictEqual(view1.get_ctct_det(self.jc['agent-electrabel']), det) # Test get_sender method sender = {'person': self.chef, 'hp': self.resp_grh, 'org_full_title': u'Direction générale - GRH', 'org': self.grh} self.assertDictEqual(view1.get_sender(), sender) backup = view1.real_context.sender view1.real_context.sender = '' self.assertDictEqual(view1.get_sender(), {}) view1.real_context.sender = backup # Test mailing_list method self.assertListEqual(view1.mailing_list(), [self.ctct['electrabel']]) view1.real_context.recipients.append(RelationValue(self.intids.getId(self.electrabel))) self.assertListEqual(view1.mailing_list(), [self.ctct['electrabel'], self.electrabel]) backup = view1.real_context.recipients[0] view1.real_context.recipients = None self.assertListEqual(view1.mailing_list(), []) view1.real_context.recipients = [backup] # Test get_full_title method self.assertEqual(view1.get_full_title(None), '') self.assertEqual(view1.get_full_title(self.electrabel), u'Electrabel') self.assertEqual(view1.get_full_title(self.grh), u'Mon organisation / Direction générale / GRH') self.assertEqual(view1.get_full_title(self.grh, separator=' - ', first_index=1), u'Direction générale - GRH') self.assertEqual(view1.get_full_title(self.jc), u'Monsieur Jean Courant') self.assertEqual(view1.get_full_title(self.agent), u'Monsieur Jean Courant, Agent (Electrabel)') # Test get_separate_titles method self.assertListEqual(view1.get_separate_titles(None), [u'', u'']) self.assertListEqual(view1.get_separate_titles(self.electrabel), [u'Electrabel', u'']) self.assertListEqual(view1.get_separate_titles(self.grh), [u'Mon organisation / Direction générale / GRH', '']) self.assertListEqual(view1.get_separate_titles(self.grh, separator=' - ', first_index=1), [u'Direction générale - GRH', '']) self.assertListEqual(view1.get_separate_titles(self.jc), ['', u'Monsieur Jean Courant']) self.assertListEqual(view1.get_separate_titles(self.agent), [u'Electrabel', u'Monsieur Jean Courant']) self.assertListEqual(view1.get_separate_titles(self.resp_grh), [u'Mon organisation / Direction générale / GRH', u'Monsieur Michel Chef']) # Test person_title self.assertEqual(view1.person_title(None), '') self.assertEqual(view1.person_title(self.jc), u'Monsieur') self.assertEqual(view1.person_title(self.jc, with_name=True), u'Monsieur Courant') self.assertEqual(view1.person_title(self.jc, with_name=True, upper_name=True), u'Monsieur COURANT') self.jc.person_title = None self.assertEqual(view1.person_title(self.jc), u'Monsieur') self.assertEqual(view1.person_title(self.jc, pers_dft=u'Madame'), u'Madame') self.assertEqual(view1.person_title(self.jc, pers_dft=u'Madame', with_name=True), u'Madame Courant') self.assertEqual(view1.person_title(self.jc, pers_dft=u'Madame', with_name=True, upper_name=True), u'Madame COURANT') self.assertEqual(view1.person_title(self.electrabel), u'Madame, Monsieur') self.assertEqual(view1.person_title(self.electrabel, org_dft=u'Messieurs'), u'Messieurs') self.assertEqual(view1.person_title(self.agent), u'Monsieur') self.assertEqual(view1.person_title(self.agent, with_name=True), u'Monsieur Courant') self.assertEqual(view1.person_title(self.agent, with_name=True, upper_name=True), u'Monsieur COURANT') # Test is_first_doc mock = mocker.Mocker() res = {} view1.appy_renderer = mock.mock() mocker.expect(view1.appy_renderer.contentParser.env.context).result(res).replay() self.assertTrue(view1.is_first_doc()) mock2 = mocker.Mocker() res['loop'] = mock2.mock() mocker.expect(res['loop'].mailed_data.first).result(False).replay() mock.replay() self.assertFalse(view1.is_first_doc()) # Test separate_full_title self.assertListEqual(view1.separate_full_title(None), [u'', u'']) self.assertListEqual(view1.separate_full_title(u''), [u'', u'']) self.assertListEqual(view1.separate_full_title(u'Direction générale'), [u'Direction générale', u'']) self.assertListEqual(view1.separate_full_title(u'Direction générale - Secrétariat'), [u'Direction générale', u'Secrétariat']) self.assertListEqual(view1.separate_full_title(u'Direction générale - Secrétariat - Michèle'), [u'Direction générale', u'Secrétariat - Michèle']) self.assertListEqual(view1.separate_full_title(u'Direction générale - Secrétariat - Michèle', nb=3), [u'Direction générale', u'Secrétariat', u'Michèle']) self.assertRaises(IndexError, view1.separate_full_title, u'Direction', nb=0)
def test_get_object(self): obj = api.content.create(container=self.portal.folder, id='mydoc', title='My document', type='Document') # Give parent information self.assertEqual(obj, get_object(parent=self.portal.folder)) self.assertEqual(obj, get_object(parent='/folder')) self.assertEqual(obj, get_object(parent='/folder/')) self.assertEqual(obj, get_object(parent='folder/')) self.assertEqual(obj, get_object(parent='folder')) # Give obj path information self.assertEqual(obj, get_object(obj_path='/folder/mydoc')) self.assertEqual(obj, get_object(obj_path='/folder/mydoc/')) self.assertEqual(obj, get_object(obj_path='folder/mydoc')) self.assertEqual(obj, get_object(obj_path='/folder/mydoc', parent='folder')) self.assertEqual(self.portal, get_object(obj_path='/')) # Give id self.assertEqual(obj, get_object(id='mydoc')) # Give title self.assertEqual(obj, get_object(title='My document')) # Give type self.assertEqual(obj, get_object(type='Document', id='mydoc')) # All parameters self.assertEqual( obj, get_object(type='Document', id='mydoc', title='My document', parent='folder')) self.assertEqual( obj, get_object(type='Document', id='mydoc', title='My document', obj_path='folder/mydoc'))