From ea7b82f9ee3f867fe41776a7b451be36f38e4c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Tue, 19 Feb 2008 17:04:28 +0000 Subject: [PATCH] Test for new CRM reports originally made by daniel with the help of thierry. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@19411 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/testCrmReports.py | 2197 ++++++++++++++++++++++++++ 1 file changed, 2197 insertions(+) create mode 100644 product/ERP5/tests/testCrmReports.py diff --git a/product/ERP5/tests/testCrmReports.py b/product/ERP5/tests/testCrmReports.py new file mode 100644 index 0000000000..6c10cc540b --- /dev/null +++ b/product/ERP5/tests/testCrmReports.py @@ -0,0 +1,2197 @@ +############################################################################# +# +# Copyright 2007 Nexedi SA Contributors. All Rights Reserved. +# Thierry Brettnacher <tb@nexedi.com> +# Daniel Feliubadalo <daniel@sip2000.com> +# Jerome Perrin <jerome@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +"""Tests Standards ERP5 Crm Reports +""" +import unittest +from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase +from Products.ERP5Type.tests.utils import reindex +from AccessControl.SecurityManagement import newSecurityManager +from DateTime import DateTime + +class CrmTestCase(ERP5TypeTestCase): + """Tests starts with a preference activated for self.my_organisation, logged in + as a user with Assignee, Assignor and Author role. + + All documents created appart from this configuration will be deleted in + teardown. So users of this test case are encouraged to create new documents + rather than modifying default documents. + """ + + username = 'username' + + + def _doWorkflowAction(self, ob, action,**kw): + self.portal.portal_workflow.doActionFor(ob, action, + comment = 'for unit test',**kw) + + @reindex + def _makeOneTicket(self, portal_type='Campaign', + start_date=None, + stop_date=None, + simulation_state='draft', **kw): + """Creates an ticket, and edit it with kw. + + The default settings is for self.section. + You can pass a list of mapping as lines, then lines will be created + using this information. + """ + kw.setdefault('start_date', start_date) + kw.setdefault('stop_date', stop_date) + kw.setdefault('resource', 'service_module/1') + tk=None + if portal_type == ('Campaign'): + tk = self.campaign_module.newContent(portal_type=portal_type,**kw) + elif portal_type == ('Meeting'): + tk = self.meeting_module.newContent(portal_type=portal_type,**kw) + elif portal_type == ('Sale Opportunity'): + tk = self.sale_opportunity_module.newContent(portal_type=portal_type,**kw) + elif portal_type == ('Support Request'): + tk = self.support_request_module.newContent(portal_type=portal_type,**kw) + + if simulation_state == 'validated': + tk.validate() + elif simulation_state == 'offered': #for Sale Opportunity workflow + tk.offer() + return tk + + def _makeOneEvent(self, portal_type='Fax Message', + start_date=DateTime(), + simulation_state='draft', + follow_up_ticket_title = "", + follow_up_ticket_type = "Campaign", + **kw): + """Creates an event, and edit it with kw. + + The default settings is for self.section. + You can pass a list of mapping as lines, then lines will be created + using this information. + """ + kw.setdefault('start_date', start_date) + kw.setdefault('resource', 'service_module/2') + ev = self.event_module.newContent(portal_type=portal_type,**kw) + + if simulation_state == 'assigned': + ticket=self.portal.restrictedTraverse(ev.getFollowUp()) + self._doWorkflowAction(ev,'assign_action', + follow_up_ticket_type = ticket.getPortalType(), + follow_up_ticket_title = ticket.getTitle()) + elif simulation_state == 'planned': + ev.plan() + elif simulation_state == 'posted': + ev.start() + elif simulation_state == 'delivered': + ev.start() + ev.deliver() + elif simulation_state == 'new': + ev.receive() + elif simulation_state == 'acknowledged': + ticket=self.portal.restrictedTraverse(ev.getFollowUp()) + self._doWorkflowAction(ev,'assign_action', + follow_up_ticket_type = ticket.getPortalType(), + follow_up_ticket_title = ticket.getTitle()) + ev.acknowledge() + elif simulation_state == 'cancelled': + ev.receive() + ev.cancel() + elif simulation_state == 'deleted': + ev.delete() + elif simulation_state == 'expired': + ev.receive() + ev.expire() + elif simulation_state == 'responded': + ev.receive() + ev.respond() + elif simulation_state == 'started': + ev.start() + elif simulation_state == 'ordered': + ev.plan() + ev.order() + return ev + + def login(self): + """login with Manager roles.""" + uf = self.getPortal().acl_users + uf._doAddUser('manager', 'manager', ['Manager', 'Assignee', 'Assignor', + 'Associate', 'Auditor', 'Author'], []) + user = uf.getUserById('manager').__of__(uf) + newSecurityManager(None, user) + + def setUp(self): + """Setup the fixture. + """ + ERP5TypeTestCase.setUp(self) + self.portal = self.getPortal() + self.event_module = self.portal.event_module + self.campaign_module = self.portal.campaign_module + self.meeting_module = self.portal.meeting_module + self.sale_opportunity_module = self.portal.sale_opportunity_module + self.support_request_module = self.portal.support_request_module + self.organisation_module = self.portal.organisation_module + self.person_module = self.portal.person_module + self.portal_categories = self.portal.portal_categories + + + # create group category + if not self.portal_categories['group'].has_key('demo_group'): + group=self.portal_categories.group + subgroup = group.newContent(portal_type='Category', + title='demo_group', + reference='demo_group', + id='demo_group') + # create users and organisations + if not self.person_module.has_key('Person_1'): + user = self.portal.person_module.newContent( + portal_type='Person', + reference='Person_1', + title='Person_1', + id='Person_1') + user.validate() + if not self.person_module.has_key('Person_2'): + user = self.portal.person_module.newContent( + portal_type='Person', + reference='Person_2', + title='Person_2', + id='Person_2') + user.validate() + if not self.person_module.has_key('Person_3'): + user = self.portal.person_module.newContent( + portal_type='Person', + reference='Person_3', + title='Person_3', + id='Person_3') + user.validate() + if not self.organisation_module.has_key('Organisation_1'): + org = self.portal.organisation_module.newContent( + portal_type='Organisation', + reference='Organisation_1', + title='Organisation_1', + id='Organisation_1') + org.validate() + if not self.organisation_module.has_key('Organisation_2'): + org = self.portal.organisation_module.newContent( + portal_type='Organisation', + reference='Organisation_2', + title='Organisation_2', + id='Organisation_2') + org.validate() + if not self.organisation_module.has_key('My_organisation'): + org = self.portal.organisation_module.newContent( + portal_type='Organisation', + reference='My_organisation', + title='My_organisation', + group_value=self.portal_categories['group'].demo_group, + id='My_organisation') + org.validate() + + # make sure documents are validated + for module in (self.organisation_module, + self.person_module): + for doc in module.objectValues(): + doc.validate() + + # and all this available to catalog + get_transaction().commit() + self.tic() + + + def tearDown(self): + """Remove all documents. + """ + get_transaction().abort() + self.campaign_module.manage_delObjects( + list(self.campaign_module.objectIds())) + self.meeting_module.manage_delObjects( + list(self.meeting_module.objectIds())) + self.sale_opportunity_module.manage_delObjects( + list(self.sale_opportunity_module.objectIds())) + self.support_request_module.manage_delObjects( + list(self.support_request_module.objectIds())) + self.organisation_module.manage_delObjects( + list(self.campaign_module.objectIds())) + self.person_module.manage_delObjects( + list(self.person_module.objectIds())) + self.portal_categories['group'].manage_delObjects((['demo_group',])) + self.event_module.manage_delObjects( + list(self.event_module.objectIds())) + + get_transaction().commit() + self.tic() + ERP5TypeTestCase.tearDown(self) + + def getBusinessTemplateList(self): + """Returns list of BT to be installed.""" + return ('erp5_base', 'erp5_crm', ) + + +class TestCrmReports(CrmTestCase): + """Test Crm reports + + Test basic cases of gathering data to render reports, the purpose of those + tests is to exercise basic reporting features to make sure no regression + happen. Input data used for tests usually contain edge cases, for example: + * movements at the boundaries of the period. + * movements with other simulation states. + * movements with node in the section_category we want to exclude (Persons). + * movements with source & destination for other sections. + """ + def getTitle(self): + return "Crm Reports" + + # utility methods for ERP5 Report -> TODO move in framework ! + def getReportSectionList(self, report_name): + """Get the list of report sections in a report.""" + report = getattr(self.portal, report_name) + report_method = getattr(self.portal, report.report_method) + return report_method() + + def getListBoxLineList(self, report_section): + """Render the listbox in a report section, return None if no listbox exists + in the report_section. + """ + result = None + here = report_section.getObject(self.portal) + report_section.pushReport(self.portal) + form = getattr(here, report_section.getFormId()) + if form.has_field('listbox'): + result = form.listbox.get_value('default', + render_format='list', + REQUEST=self.portal.REQUEST) + report_section.popReport(self.portal) + return result + + def checkLineProperties(self, line, **kw): + """Check properties of a report line. + """ + for k, v in kw.items(): + self.assertEquals(v, line.getColumnProperty(k), + '`%s`: expected: %r actual: %r' % (k, v, line.getColumnProperty(k))) + # /utility methods for ERP5 Report + + def testCampaignStatus(self): + # Campaign Status report. + + # First campaign + first = self._makeOneTicket( + portal_type='Campaign', + title='First One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + destination_decision_value = self.person_module.Person_1, + source_value = self.person_module.Person_2, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + # Second campaign + second = self._makeOneTicket( + portal_type='Campaign', + title='Second One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events of first campaign + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=first.getRelativeUrl()) + eventOut2=self._makeOneEvent( + portal_type='Letter', + title='Out 2 of First', + simulation_state='planned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=first.getRelativeUrl()) + eventOut3=self._makeOneEvent( + portal_type='Phone Call', + title='Out 3 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=first.getRelativeUrl()) + eventIn1=self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + causality=eventOut1.getRelativeUrl()) + # creating one free event for test + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events of second campaign + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=second.getRelativeUrl()) + eventOut2=self._makeOneEvent( + portal_type='Fax Message', + title='Out 2 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 2, 2, 1), + follow_up=second.getRelativeUrl()) + eventInt1=self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + #create a follow-up and causality ralationship to test that + #only count one time by follow-up + causality=eventOut1.getRelativeUrl(), + follow_up=second.getRelativeUrl()) + + get_transaction().commit() + self.tic() + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + request_form['section_category'] = 'group/demo_group' + request_form['validation_state'] = ['validated',] + + report_section_list = self.getReportSectionList( + 'CampaignModule_viewCampaignStatusReport') + self.assertEquals(1, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[0]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 2 campaigns + self.assertEquals(2, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['title', 'ticket_type', 'destination_section', 'destination_decision', + 'source', 'start_date', 'stop_date','validation_state','outgoing', + 'incoming','progression','efficiency']) + + # First campaign + self.checkLineProperties(data_line_list[0], + title='First One', + ticket_type = first.getResourceTranslatedTitle(), + stop_date = DateTime(2007, 11, 30), + start_date = DateTime(2007, 2, 2), + destination_section = first.getDestinationSectionTitle(), + destination_decision = self.person_module.Person_1.getTitle(), + source = self.person_module.Person_2.getTitle(), + validation_state = 'Open', + outgoing = 3, + incoming = 1, + progression = 66.00/100, + efficiency = 33.00/100) + # Second campaign + self.checkLineProperties(data_line_list[1], + title='Second One', + ticket_type = second.getResourceTranslatedTitle(), + stop_date = DateTime(2007, 12, 31), + start_date = DateTime(2007, 1, 2), + destination_section = second.getDestinationSectionTitle(), + destination_decision = second.getDestinationDecisionTitle(), + source = second.getSourceTitle(), + validation_state = 'Open', + outgoing = 2, + incoming = 1, + progression = 100.00/100, + efficiency = 50.00/100) + + def testCampaignDetailedReport(self): + # Campaign Detailed report. + + # First campaign + first = self._makeOneTicket( + portal_type='Campaign', + title='First One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + destination_decision_value = self.person_module.Person_1, + source_value = self.person_module.Person_2, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + # Second campaign + second = self._makeOneTicket( + portal_type='Campaign', + title='Second One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events of first campaign + first_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_out2 = self._makeOneEvent( + portal_type='Letter', + title='Out 2 of First', + simulation_state='planned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_out3 = self._makeOneEvent( + portal_type='Phone Call', + title='Out 3 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_inc1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + causality=first_event_out1.getRelativeUrl()) + # creating one free event for test + free_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events of second campaign + second_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=second.getRelativeUrl()) + second_event_out2 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 2 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 2, 2, 1), + follow_up=second.getRelativeUrl()) + second_event_inc1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + #create a follow-up and causality ralationship to test that + #only count one time by follow-up + causality=second_event_out1.getRelativeUrl(), + follow_up=second.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + request_form['section_category'] = 'group/demo_group' + request_form['validation_state'] = ['validated',] + + report_section_list = self.getReportSectionList( + 'CampaignModule_viewCampaignDetailedReport') + self.assertEquals(2, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[1]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 7 events + self.assertEquals(7, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['campaign', 'direction', 'title', 'type','destination_title_list', + 'source', 'start_date','stop_date','validation_state']) + for i in range(len(data_line_list)): + if i==0: + ticket=first + event=first_event_out1 + direction='Outgoing' + campaign=ticket.getTitle() + elif i==1: + ticket=first + event=first_event_inc1 + direction='Incoming' + campaign='' + elif i==2: + ticket=first + event=first_event_out2 + direction='Outgoing' + campaign=ticket.getTitle() + elif i==3: + ticket=first + event=first_event_out3 + direction='Outgoing' + campaign=ticket.getTitle() + elif i==4: + ticket=second + event=second_event_out1 + direction='Outgoing' + campaign=ticket.getTitle() + elif i==5: + ticket=second + event=second_event_out2 + direction='Outgoing' + campaign=ticket.getTitle() + elif i==6: + ticket=second + event=second_event_inc1 + direction='Incoming' + campaign=ticket.getTitle() + self.checkLineProperties(data_line_list[i], + campaign = campaign, + direction = direction, + type = event.getTranslatedPortalType(), + destination_title_list = event.getDestinationTitleList(), + title = event.getTitle(), + stop_date = event.getStopDate(), + start_date = event.getStartDate(), + source = event.getSourceTitle(), + validation_state = event.getTranslatedSimulationStateTitle()) + + def testMeetingStatus(self): + # Meeting Status report. + + # First Meeting + first = self._makeOneTicket( + portal_type='Meeting', + title='First One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + destination_decision_value = self.person_module.Person_1, + source_value = self.person_module.Person_2, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + # Second Meeting + second = self._makeOneTicket( + portal_type='Meeting', + title='Second One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events of first meeting + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=first.getRelativeUrl()) + eventOut2=self._makeOneEvent( + portal_type='Letter', + title='Out 2 of First', + simulation_state='planned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=first.getRelativeUrl()) + eventOut3=self._makeOneEvent( + portal_type='Phone Call', + title='Out 3 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=first.getRelativeUrl()) + eventIn1=self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + causality=eventOut1.getRelativeUrl()) + # creating one free event for test + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events of second meeting + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=second.getRelativeUrl()) + eventOut2=self._makeOneEvent( + portal_type='Fax Message', + title='Out 2 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 2, 2, 1), + follow_up=second.getRelativeUrl()) + eventInt1=self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + #create a follow-up and causality ralationship to test that + #only count one time by follow-up + causality=eventOut1.getRelativeUrl(), + follow_up=second.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + request_form['section_category'] = 'group/demo_group' + request_form['validation_state'] = ['validated',] + + report_section_list = self.getReportSectionList( + 'MeetingModule_viewMeetingStatusReport') + self.assertEquals(1, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[0]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 2 meetings + self.assertEquals(2, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['title', 'ticket_type', 'destination_section', 'destination_decision', + 'destination_title','source', 'start_date', 'stop_date', + 'validation_state','outgoing','incoming']) + + # First meeting + self.checkLineProperties(data_line_list[0], + title='First One', + ticket_type = first.getResourceTranslatedTitle(), + stop_date = DateTime(2007, 11, 30), + start_date = DateTime(2007, 2, 2), + destination_section = first.getDestinationSectionTitle(), + destination_decision = self.person_module.Person_1.getTitle(), + destination_title = first.getDestinationTitle(), + source = self.person_module.Person_2.getTitle(), + validation_state = 'Open', + outgoing = 3, + incoming = 1) + # Second meeting + self.checkLineProperties(data_line_list[1], + title='Second One', + ticket_type = second.getResourceTranslatedTitle(), + stop_date = DateTime(2007, 12, 31), + start_date = DateTime(2007, 1, 2), + destination_section = second.getDestinationSectionTitle(), + destination_decision = second.getDestinationDecisionTitle(), + destination_title = second.getDestinationTitle(), + source = second.getSourceTitle(), + validation_state = 'Open', + outgoing = 2, + incoming = 1) + + def testMeetingDetailedReport(self): + # Meeting Detailed report. + + # First Meeting + first = self._makeOneTicket( + portal_type='Meeting', + title='First One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + destination_decision_value = self.person_module.Person_1, + source_value = self.person_module.Person_2, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + # Second Meeting + second = self._makeOneTicket( + portal_type='Meeting', + title='Second One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events of first Meeting + first_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_out2 = self._makeOneEvent( + portal_type='Letter', + title='Out 2 of First', + simulation_state='planned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_out3 = self._makeOneEvent( + portal_type='Phone Call', + title='Out 3 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_inc1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + causality=first_event_out1.getRelativeUrl()) + # creating one free event for test + free_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events of second Meeting + second_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=second.getRelativeUrl()) + second_event_out2 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 2 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 2, 2, 1), + follow_up=second.getRelativeUrl()) + second_event_inc1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + #create a follow-up and causality ralationship to test that + #only count one time by follow-up + causality=second_event_out1.getRelativeUrl(), + follow_up=second.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + request_form['section_category'] = 'group/demo_group' + request_form['validation_state'] = ['validated',] + + report_section_list = self.getReportSectionList( + 'MeetingModule_viewMeetingDetailedReport') + self.assertEquals(2, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[1]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 7 events + self.assertEquals(7, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['meeting', 'direction', 'title', 'type','destination_title_list', + 'source', 'start_date','stop_date','validation_state']) + for i in range(len(data_line_list)): + if i==0: + ticket=first + event=first_event_out1 + direction='Outgoing' + meeting=ticket.getTitle() + elif i==1: + ticket=first + event=first_event_inc1 + direction='Incoming' + meeting='' + elif i==2: + ticket=first + event=first_event_out2 + direction='Outgoing' + meeting=ticket.getTitle() + elif i==3: + ticket=first + event=first_event_out3 + direction='Outgoing' + meeting=ticket.getTitle() + elif i==4: + ticket=second + event=second_event_out1 + direction='Outgoing' + meeting=ticket.getTitle() + elif i==5: + ticket=second + event=second_event_out2 + direction='Outgoing' + meeting=ticket.getTitle() + elif i==6: + ticket=second + event=second_event_inc1 + direction='Incoming' + meeting=ticket.getTitle() + self.checkLineProperties(data_line_list[i], + meeting = meeting, + direction = direction, + type = event.getTranslatedPortalType(), + destination_title_list = event.getDestinationTitleList(), + title = event.getTitle(), + stop_date = event.getStopDate(), + start_date = event.getStartDate(), + source = event.getSourceTitle(), + validation_state = event.getTranslatedSimulationStateTitle()) + + def testSupportRequestStatus(self): + # Support Request Status report. + + # First Support Request + first = self._makeOneTicket( + portal_type='Support Request', + title='First One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + destination_decision_value = self.person_module.Person_1, + source_value = self.person_module.Person_2, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + # Second Support Request + second = self._makeOneTicket( + portal_type='Support Request', + title='Second One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events of first Support Request + first_event_inc1 = self._makeOneEvent( + portal_type='Fax Message', + title='Inc 1 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_inc2 = self._makeOneEvent( + portal_type='Letter', + title='Inc 2 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_inc3=self._makeOneEvent( + portal_type='Phone Call', + title='Inc 3 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_out1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Inc 1 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + causality=first_event_inc1.getRelativeUrl()) + # creating one free event for test + feEvInc1=self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events of second Support Request + second_event_inc1 = self._makeOneEvent( + portal_type='Fax Message', + title='Inc 1 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=second.getRelativeUrl()) + second_event_inc2 = self._makeOneEvent( + portal_type='Fax Message', + title='Inc 2 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 2, 2, 1), + follow_up=second.getRelativeUrl()) + second_event_out1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Inc 1 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + #create a follow-up and causality ralationship to test that + #only count one time by follow-up + causality=second_event_inc1.getRelativeUrl(), + follow_up=second.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + request_form['section_category'] = 'group/demo_group' + request_form['validation_state'] = ['validated',] + + report_section_list = self.getReportSectionList( + 'SupportRequestModule_viewSupportRequestStatusReport') + self.assertEquals(1, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[0]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 2 Support Request + self.assertEquals(2, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['title', 'ticket_type', 'destination_section', 'destination_decision', + 'source', 'source_decision', 'start_date', 'stop_date', + 'validation_state','incoming','outgoing']) + + # First Support Request + self.checkLineProperties(data_line_list[0], + title='First One', + ticket_type = first.getResourceTranslatedTitle(), + stop_date = DateTime(2007, 11, 30), + start_date = DateTime(2007, 2, 2), + destination_section = first.getDestinationSectionTitle(), + destination_decision = self.person_module.Person_1.getTitle(), + source_decision = first.getSourceDecisionTitle(), + source = self.person_module.Person_2.getTitle(), + validation_state = 'Open', + outgoing = 1, + incoming = 3) + # Second Support Request + self.checkLineProperties(data_line_list[1], + title='Second One', + ticket_type = second.getResourceTranslatedTitle(), + stop_date = DateTime(2007, 12, 31), + start_date = DateTime(2007, 1, 2), + destination_section = second.getDestinationSectionTitle(), + destination_decision = second.getDestinationDecisionTitle(), + source_decision = second.getSourceDecisionTitle(), + source = second.getSourceTitle(), + validation_state = 'Open', + outgoing = 1, + incoming = 2) + + def testSupportRequestDetailedReport(self): + # Support Request Detailed report. + + # First Support Request + first = self._makeOneTicket( + portal_type='Support Request', + title='First One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + destination_decision_value = self.person_module.Person_1, + source_value = self.person_module.Person_2, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + # Second Support Request + second = self._makeOneTicket( + portal_type='Support Request', + title='Second One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events of first Support Request + first_event_inc1 = self._makeOneEvent( + portal_type='Fax Message', + title='Inc 1 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_inc2 = self._makeOneEvent( + portal_type='Letter', + title='Inc 2 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_inc3=self._makeOneEvent( + portal_type='Phone Call', + title='Inc 3 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_out1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Inc 1 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + causality=first_event_inc1.getRelativeUrl()) + # creating one free event for test + feEvInc1=self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events of second Support Request + second_event_inc1 = self._makeOneEvent( + portal_type='Fax Message', + title='Inc 1 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=second.getRelativeUrl()) + second_event_inc2 = self._makeOneEvent( + portal_type='Fax Message', + title='Inc 2 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 2, 2, 1), + follow_up=second.getRelativeUrl()) + second_event_out1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Inc 1 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + #create a follow-up and causality ralationship to test that + #only count one time by follow-up + causality=second_event_inc1.getRelativeUrl(), + follow_up=second.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + request_form['section_category'] = 'group/demo_group' + request_form['validation_state'] = ['validated',] + + report_section_list = self.getReportSectionList( + 'SupportRequestModule_viewSupportRequestDetailedReport') + self.assertEquals(2, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[1]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 7 events + self.assertEquals(7, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['support_request', 'direction', 'title', 'type','destination_title_list', + 'source', 'start_date','stop_date','validation_state']) + for i in range(len(data_line_list)): + if i==0: + ticket=first + event=first_event_inc1 + direction='Incoming' + support_request=ticket.getTitle() + elif i==1: + ticket=first + event=first_event_out1 + direction='Outgoing' + support_request='' + elif i==2: + ticket=first + event=first_event_inc2 + direction='Incoming' + support_request=ticket.getTitle() + elif i==3: + ticket=first + event=first_event_inc3 + direction='Incoming' + support_request=ticket.getTitle() + elif i==4: + ticket=second + event=second_event_inc1 + direction='Incoming' + support_request=ticket.getTitle() + elif i==5: + ticket=second + event=second_event_inc2 + direction='Incoming' + support_request=ticket.getTitle() + elif i==6: + ticket=second + event=second_event_out1 + direction='Outgoing' + support_request=ticket.getTitle() + self.checkLineProperties(data_line_list[i], + support_request = support_request, + direction = direction, + type = event.getTranslatedPortalType(), + destination_title_list = event.getDestinationTitleList(), + title = event.getTitle(), + stop_date = event.getStopDate(), + start_date = event.getStartDate(), + source = event.getSourceTitle(), + validation_state = event.getTranslatedSimulationStateTitle()) + + def testSaleOpportunityStatus(self): + # Sale Opportunity Status report. + + # First Sale Opportunity + first = self._makeOneTicket( + portal_type='Sale Opportunity', + title='First One', + simulation_state='contacted', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + destination_decision_value = self.person_module.Person_1, + source_value = self.person_module.Person_2, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + # Second Sale Opportunity + second = self._makeOneTicket( + portal_type='Sale Opportunity', + title='Second One', + simulation_state='offered', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events of first Sale Opportunity + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=first.getRelativeUrl()) + eventOut2=self._makeOneEvent( + portal_type='Letter', + title='Out 2 of First', + simulation_state='planned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=first.getRelativeUrl()) + eventOut3=self._makeOneEvent( + portal_type='Phone Call', + title='Out 3 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=first.getRelativeUrl()) + eventIn1=self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + causality=eventOut1.getRelativeUrl()) + # creating one free event for test + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events of second Sale Opportunity + eventOut1=self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=second.getRelativeUrl()) + eventOut2=self._makeOneEvent( + portal_type='Fax Message', + title='Out 2 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 2, 2, 1), + follow_up=second.getRelativeUrl()) + eventInt1=self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + #create a follow-up and causality ralationship to test that + #only count one time by follow-up + causality=eventOut1.getRelativeUrl(), + follow_up=second.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + request_form['section_category'] = 'group/demo_group' + request_form['sale_opportunity_state'] = ['contacted','offered'] + + report_section_list = self.getReportSectionList( + 'SaleOpportunityModule_viewSaleOpportunityStatusReport') + self.assertEquals(1, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[0]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 2 Sale Opportunity + self.assertEquals(2, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['title', 'ticket_type', 'destination_section', 'destination_decision', + 'source','source_decision','start_date', 'stop_date', + 'validation_state','outgoing','incoming']) + + # First Sale Opportunity + self.checkLineProperties(data_line_list[0], + title='First One', + ticket_type = first.getResourceTranslatedTitle(), + stop_date = DateTime(2007, 11, 30), + start_date = DateTime(2007, 2, 2), + destination_section = first.getDestinationSectionTitle(), + destination_decision = self.person_module.Person_1.getTitle(), + source_decision = first.getSourceDecisionTitle(), + source = self.person_module.Person_2.getTitle(), + validation_state = 'Contacted', + outgoing = 3, + incoming = 1) + # Second Sale Opportunity + self.checkLineProperties(data_line_list[1], + title='Second One', + ticket_type = second.getResourceTranslatedTitle(), + stop_date = DateTime(2007, 12, 31), + start_date = DateTime(2007, 1, 2), + destination_section = second.getDestinationSectionTitle(), + destination_decision = second.getDestinationDecisionTitle(), + source_decision = second.getSourceDecisionTitle(), + source = second.getSourceTitle(), + validation_state = 'Offered', + outgoing = 2, + incoming = 1) + + def testSaleOpportunityDetailedReport(self): + # Sale Opportunity Detailed report. + + # First Sale Opportunity + first = self._makeOneTicket( + portal_type='Sale Opportunity', + title='First One', + simulation_state='contacted', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + destination_decision_value = self.person_module.Person_1, + source_value = self.person_module.Person_2, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + # Second Sale Opportunity + second = self._makeOneTicket( + portal_type='Sale Opportunity', + title='Second One', + simulation_state='offered', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events of Sale Opportunity + first_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_out2 = self._makeOneEvent( + portal_type='Letter', + title='Out 2 of First', + simulation_state='planned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_out3 = self._makeOneEvent( + portal_type='Phone Call', + title='Out 3 of First', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=first.getRelativeUrl()) + first_event_inc1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of First', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + causality=first_event_out1.getRelativeUrl()) + # creating one free event for test + free_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events of second Sale Opportunity + second_event_out1 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 1 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=second.getRelativeUrl()) + second_event_out2 = self._makeOneEvent( + portal_type='Fax Message', + title='Out 2 of Second', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 2, 2, 1), + follow_up=second.getRelativeUrl()) + second_event_inc1 = self._makeOneEvent( + portal_type='Mail Message', + title='Response to Out 1 of Second', + simulation_state='new', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + #create a follow-up and causality ralationship to test that + #only count one time by follow-up + causality=second_event_out1.getRelativeUrl(), + follow_up=second.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + request_form['section_category'] = 'group/demo_group' + request_form['sale_opportunity_state'] = ['contacted','offered'] + + report_section_list = self.getReportSectionList( + 'SaleOpportunityModule_viewSaleOpportunityDetailedReport') + self.assertEquals(2, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[1]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 7 events + self.assertEquals(7, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['sale_opportunity', 'direction', 'title', 'type','destination_title_list', + 'source', 'start_date','stop_date','validation_state']) + for i in range(len(data_line_list)): + if i==0: + ticket=first + event=first_event_out1 + direction='Outgoing' + sale_opportunity=ticket.getTitle() + elif i==1: + ticket=first + event=first_event_inc1 + direction='Incoming' + sale_opportunity='' + elif i==2: + ticket=first + event=first_event_out2 + direction='Outgoing' + sale_opportunity=ticket.getTitle() + elif i==3: + ticket=first + event=first_event_out3 + direction='Outgoing' + sale_opportunity=ticket.getTitle() + elif i==4: + ticket=second + event=second_event_out1 + direction='Outgoing' + sale_opportunity=ticket.getTitle() + elif i==5: + ticket=second + event=second_event_out2 + direction='Outgoing' + sale_opportunity=ticket.getTitle() + elif i==6: + ticket=second + event=second_event_inc1 + direction='Incoming' + sale_opportunity=ticket.getTitle() + self.checkLineProperties(data_line_list[i], + sale_opportunity = sale_opportunity, + direction = direction, + type = event.getTranslatedPortalType(), + destination_title_list = event.getDestinationTitleList(), + title = event.getTitle(), + stop_date = event.getStopDate(), + start_date = event.getStartDate(), + source = event.getSourceTitle(), + validation_state = event.getTranslatedSimulationStateTitle()) + + def testEventActivity(self): + # Event Activity report. + + # creating one ticket of every type + sale_opportunity = self._makeOneTicket( + portal_type='Sale Opportunity', + title='Sale Opportunity One', + simulation_state='contacted', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + campaign = self._makeOneTicket( + portal_type='Campaign', + title='Campaign One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + meeting = self._makeOneTicket( + portal_type='Meeting', + title='Meeting One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + support_request = self._makeOneTicket( + portal_type='Support Request', + title='Support Request One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events in every incoming-outgoing state related with tickets + event1 = self._makeOneEvent( + portal_type='Fax Message', + title='Event 1', + simulation_state='acknowledged', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=sale_opportunity.getRelativeUrl()) + event2 = self._makeOneEvent( + portal_type='Letter', + title='Event 2', + simulation_state='assigned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=campaign.getRelativeUrl()) + event3 = self._makeOneEvent( + portal_type='Phone Call', + title='Event 3', + simulation_state='cancelled', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=meeting.getRelativeUrl()) + event4 = self._makeOneEvent( + portal_type='Mail Message', + title='Event 4', + simulation_state='expired', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + follow_up=support_request.getRelativeUrl()) + event5 = self._makeOneEvent( + portal_type='Fax Message', + title='Event 5', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=sale_opportunity.getRelativeUrl()) + event6 = self._makeOneEvent( + portal_type='Letter', + title='Event 6', + simulation_state='responded', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=campaign.getRelativeUrl()) + event7 = self._makeOneEvent( + portal_type='Mail Message', + title='Event 7', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=meeting.getRelativeUrl()) + event8 = self._makeOneEvent( + portal_type='Phone Call', + title='Event 8', + simulation_state='planned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=support_request.getRelativeUrl()) + event9 = self._makeOneEvent( + portal_type='Fax Message', + title='Event 9', + simulation_state='ordered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=sale_opportunity.getRelativeUrl()) + event10 = self._makeOneEvent( + portal_type='Letter', + title='Event 10', + simulation_state='started', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=campaign.getRelativeUrl()) + # creating free event for unassigned + free_event = self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + free_event = self._makeOneEvent( + portal_type='Fax Message', + title='Free 2', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events in every non incoming-outgoing state related with tickets + event = self._makeOneEvent( + portal_type='Fax Message', + title='Event deleted 1', + simulation_state='draft', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=sale_opportunity.getRelativeUrl()) + event = self._makeOneEvent( + portal_type='Letter', + title='Event deleted 2', + simulation_state='deleted', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=campaign.getRelativeUrl()) + # creating events in incoming-outgoing state related with tickets + # by causality with one related event + event = self._makeOneEvent( + portal_type='Fax Message', + title='Event causality 1', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + causality=event9.getRelativeUrl()) + event = self._makeOneEvent( + portal_type='Letter', + title='Event causality 2', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + causality=event10.getRelativeUrl()) + # creating events related with same ticket by follow-up and causality + # Only must count one time (follow-up) + event = self._makeOneEvent( + portal_type='Fax Message', + title='Event both 1', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + causality=event5.getRelativeUrl(), + follow_up=sale_opportunity.getRelativeUrl()) + event = self._makeOneEvent( + portal_type='Letter', + title='Event both 2', + simulation_state='responded', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + causality=event6.getRelativeUrl(), + follow_up=campaign.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + + report_section_list = self.getReportSectionList( + 'EventModule_viewEventActivityReport') + #Obtain 2 listbox with outgoing and incoming events + self.assertEquals(2, len(report_section_list)) + + #Outgoing + line_list = self.getListBoxLineList(report_section_list[0]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 6 states + self.assertEquals(6, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['validation_state','Campaign', 'Meeting', + 'SaleOpportunity','SupportRequest', 'unassigned','total']) + for i in range(len(data_line_list)): + if i==0: + pvalidation_state = 'Acknowledged' + pCampaign = 0 + pMeeting = 0 + pSaleOpportunity = 1 + pSupportRequest = 0 + punassigned = 0 + ptotal = 1 + elif i==1: + pvalidation_state = 'Assigned' + pCampaign = 1 + pMeeting = 0 + pSaleOpportunity = 0 + pSupportRequest = 0 + punassigned = 0 + ptotal = 1 + elif i==2: + pvalidation_state = 'Cancelled' + pCampaign = 0 + pMeeting = 1 + pSaleOpportunity = 0 + pSupportRequest = 0 + punassigned = 0 + ptotal = 1 + elif i==3: + pvalidation_state = 'Expired' + pCampaign = 0 + pMeeting = 0 + pSaleOpportunity = 0 + pSupportRequest = 1 + punassigned = 0 + ptotal = 1 + elif i==4: + pvalidation_state = 'New' + pCampaign = 1 + pMeeting = 0 + pSaleOpportunity = 3 + pSupportRequest = 0 + punassigned = 1 + ptotal = 5 + elif i==5: + pvalidation_state = 'Responded' + pCampaign = 2 + pMeeting = 0 + pSaleOpportunity = 0 + pSupportRequest = 0 + punassigned = 0 + ptotal = 2 + self.checkLineProperties(data_line_list[i], + validation_state = pvalidation_state, + Campaign = pCampaign, + Meeting = pMeeting, + SaleOpportunity = pSaleOpportunity, + SupportRequest = pSupportRequest, + unassigned = punassigned, + total = ptotal) + # Stat Line + stat_line = line_list[-1] + self.failUnless(stat_line.isStatLine()) + self.assertEquals('Total', stat_line.getColumnProperty('validation_state')) + self.assertEquals(4, stat_line.getColumnProperty('Campaign')) + self.assertEquals(1, stat_line.getColumnProperty('Meeting')) + self.assertEquals(4, stat_line.getColumnProperty('SaleOpportunity')) + self.assertEquals(1, stat_line.getColumnProperty('SupportRequest')) + self.assertEquals(1, stat_line.getColumnProperty('unassigned')) + self.assertEquals(11, stat_line.getColumnProperty('total')) + + #Incoming + line_list = self.getListBoxLineList(report_section_list[1]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 4 states + self.assertEquals(4, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['validation_state','Campaign', 'Meeting', + 'SaleOpportunity','SupportRequest', 'unassigned','total']) + for i in range(len(data_line_list)): + if i==0: + pvalidation_state = 'Delivered' + pCampaign = 0 + pMeeting = 1 + pSaleOpportunity = 0 + pSupportRequest = 0 + punassigned = 1 + ptotal = 2 + elif i==1: + pvalidation_state = 'Outgoing' + pCampaign = 0 + pMeeting = 0 + pSaleOpportunity = 0 + pSupportRequest = 1 + punassigned = 0 + ptotal = 1 + elif i==2: + pvalidation_state = 'Pending' + pCampaign = 0 + pMeeting = 0 + pSaleOpportunity = 1 + pSupportRequest = 0 + punassigned = 0 + ptotal = 1 + elif i==3: + pvalidation_state = 'Posted' + pCampaign = 1 + pMeeting = 0 + pSaleOpportunity = 0 + pSupportRequest = 0 + punassigned = 0 + ptotal = 1 + self.checkLineProperties(data_line_list[i], + validation_state = pvalidation_state, + Campaign = pCampaign, + Meeting = pMeeting, + SaleOpportunity = pSaleOpportunity, + SupportRequest = pSupportRequest, + unassigned = punassigned, + total = ptotal) + # Stat Line + stat_line = line_list[-1] + self.failUnless(stat_line.isStatLine()) + self.assertEquals('Total', stat_line.getColumnProperty('validation_state')) + self.assertEquals(1, stat_line.getColumnProperty('Campaign')) + self.assertEquals(1, stat_line.getColumnProperty('Meeting')) + self.assertEquals(1, stat_line.getColumnProperty('SaleOpportunity')) + self.assertEquals(1, stat_line.getColumnProperty('SupportRequest')) + self.assertEquals(1, stat_line.getColumnProperty('unassigned')) + self.assertEquals(5, stat_line.getColumnProperty('total')) + + def testEventDetailedReport(self): + # Event Detailed Report report. + + # creating one ticket of every type + sale_opportunity = self._makeOneTicket( + portal_type='Sale Opportunity', + title='Sale Opportunity One', + simulation_state='contacted', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + start_date=DateTime(2007, 2, 2), + stop_date=DateTime(2007, 11, 30)) + campaign = self._makeOneTicket( + portal_type='Campaign', + title='Campaign One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + meeting = self._makeOneTicket( + portal_type='Meeting', + title='Meeting One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_1, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + support_request = self._makeOneTicket( + portal_type='Support Request', + title='Support Request One', + simulation_state='validated', + source_section_value=self.organisation_module.My_organisation, + destination_section_value=self.organisation_module.Organisation_2, + start_date=DateTime(2007, 1, 2), + stop_date=DateTime(2007, 12, 31)) + + # creating events in every incoming-outgoing state related with tickets + event1 = self._makeOneEvent( + portal_type='Fax Message', + title='Event 1', + simulation_state='acknowledged', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=sale_opportunity.getRelativeUrl()) + event2 = self._makeOneEvent( + portal_type='Letter', + title='Event 2', + simulation_state='assigned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=campaign.getRelativeUrl()) + event3 = self._makeOneEvent( + portal_type='Phone Call', + title='Event 3', + simulation_state='cancelled', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=meeting.getRelativeUrl()) + event4 = self._makeOneEvent( + portal_type='Mail Message', + title='Event 4', + simulation_state='expired', + destination_value=self.organisation_module.My_organisation, + source_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 7, 1, 1), + follow_up=support_request.getRelativeUrl()) + event5 = self._makeOneEvent( + portal_type='Fax Message', + title='Event 5', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=sale_opportunity.getRelativeUrl()) + event6 = self._makeOneEvent( + portal_type='Letter', + title='Event 6', + simulation_state='responded', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=campaign.getRelativeUrl()) + event7 = self._makeOneEvent( + portal_type='Mail Message', + title='Event 7', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=meeting.getRelativeUrl()) + event8 = self._makeOneEvent( + portal_type='Phone Call', + title='Event 8', + simulation_state='planned', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=support_request.getRelativeUrl()) + event9 = self._makeOneEvent( + portal_type='Fax Message', + title='Event 9', + simulation_state='ordered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=sale_opportunity.getRelativeUrl()) + event10 = self._makeOneEvent( + portal_type='Letter', + title='Event 10', + simulation_state='started', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + follow_up=campaign.getRelativeUrl()) + # creating free event for unassigned + free_event = self._makeOneEvent( + portal_type='Fax Message', + title='Free 1', + simulation_state='delivered', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + free_event = self._makeOneEvent( + portal_type='Fax Message', + title='Free 2', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 2, 1, 1)) + # creating events in every non incoming-outgoing state related with tickets + event = self._makeOneEvent( + portal_type='Fax Message', + title='Event deleted 1', + simulation_state='draft', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + follow_up=sale_opportunity.getRelativeUrl()) + event = self._makeOneEvent( + portal_type='Letter', + title='Event deleted 2', + simulation_state='deleted', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + follow_up=campaign.getRelativeUrl()) + # creating events in incoming-outgoing state related with tickets + # by causality with one related event + event = self._makeOneEvent( + portal_type='Fax Message', + title='Event causality 1', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_1, + start_date=DateTime(2007, 2, 2, 1, 1), + causality=event9.getRelativeUrl()) + event = self._makeOneEvent( + portal_type='Letter', + title='Event causality 2', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_2, + start_date=DateTime(2007, 2, 1, 1, 1), + causality=event10.getRelativeUrl()) + # creating events related with same ticket by follow-up and causality + # Only must count one time (follow-up) + event = self._makeOneEvent( + portal_type='Fax Message', + title='Event both 1', + simulation_state='new', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + causality=event5.getRelativeUrl(), + follow_up=sale_opportunity.getRelativeUrl()) + event = self._makeOneEvent( + portal_type='Letter', + title='Event both 2', + simulation_state='responded', + source_value=self.organisation_module.My_organisation, + destination_value=self.person_module.Person_3, + start_date=DateTime(2007, 2, 3, 1, 1), + causality=event6.getRelativeUrl(), + follow_up=campaign.getRelativeUrl()) + + get_transaction().commit() + self.tic() + # set request variables and render + request_form = self.portal.REQUEST.other + request_form['from_date'] = DateTime(2007, 1, 1) + + report_section_list = self.getReportSectionList( + 'EventModule_viewEventDetailedReport') + #Obtain 1 listbox with outgoing and incoming events + self.assertEquals(1, len(report_section_list)) + + line_list = self.getListBoxLineList(report_section_list[0]) + data_line_list = [l for l in line_list if l.isDataLine()] + # we have 5 lines + self.assertEquals(5, len(data_line_list)) + + # test columns values + line = data_line_list[0] + self.assertEquals(line.column_id_list, + ['ticket_title','ticket_type', 'resource', + 'delivered', 'ordered', 'acknowledged', 'assigned', + 'started', 'draft', 'planned', 'cancelled', 'new', + 'expired', 'responded','total']) + for i in range(len(data_line_list)): + if i==0: + pticket_title = 'Campaign One' + pticket_type = 'Campaign' + pdelivered = 0 + pordered = 0 + packnowledged = 0 + passigned = 1 + pstarted = 1 + pdraft = 0 + pplanned = 0 + pcancelled = 0 + pnew = 1 + pexpired = 0 + presponded = 2 + ptotal = 5 + elif i==1: + pticket_title = 'Meeting One' + pticket_type = 'Meeting' + pdelivered = 1 + pordered = 0 + packnowledged = 0 + passigned = 0 + pstarted = 0 + pdraft = 0 + pplanned = 0 + pcancelled = 1 + pnew = 0 + pexpired = 0 + presponded = 0 + ptotal = 2 + elif i==2: + pticket_title = 'Sale Opportunity One' + pticket_type = 'Sale Opportunity' + pdelivered = 0 + pordered = 1 + packnowledged = 1 + passigned = 0 + pstarted = 0 + pdraft = 1 + pplanned = 0 + pcancelled = 0 + pnew = 3 + pexpired = 0 + presponded = 0 + ptotal = 6 + elif i==3: + pticket_title = 'Support Request One' + pticket_type = 'Support Request' + pdelivered = 0 + pordered = 0 + packnowledged = 0 + passigned = 0 + pstarted = 0 + pdraft = 0 + pplanned = 1 + pcancelled = 0 + pnew = 0 + pexpired = 1 + presponded = 0 + ptotal = 2 + elif i==4: + pticket_title = '' + pticket_type = 'Unassigned' + pdelivered = 1 + pordered = 0 + packnowledged = 0 + passigned = 0 + pstarted = 0 + pdraft = 0 + pplanned = 0 + pcancelled = 0 + pnew = 1 + pexpired = 0 + presponded = 0 + ptotal = 2 + self.checkLineProperties(data_line_list[i], + ticket_title = pticket_title, + ticket_type = pticket_type, + delivered = pdelivered, + ordered = pordered, + acknowledged = packnowledged, + assigned = passigned, + started = pstarted, + draft = pdraft, + planned = pplanned, + cancelled = pcancelled, + new = pnew, + expired = pexpired, + responded = presponded, + total = ptotal) + # Stat Line + stat_line = line_list[-1] + self.failUnless(stat_line.isStatLine()) + self.assertEquals('Total', stat_line.getColumnProperty('ticket_title')) + self.assertEquals(2, stat_line.getColumnProperty('delivered')) + self.assertEquals(1, stat_line.getColumnProperty('ordered')) + self.assertEquals(1, stat_line.getColumnProperty('acknowledged')) + self.assertEquals(1, stat_line.getColumnProperty('assigned')) + self.assertEquals(1, stat_line.getColumnProperty('started')) + self.assertEquals(1, stat_line.getColumnProperty('draft')) + self.assertEquals(1, stat_line.getColumnProperty('planned')) + self.assertEquals(1, stat_line.getColumnProperty('cancelled')) + self.assertEquals(5, stat_line.getColumnProperty('new')) + self.assertEquals(1, stat_line.getColumnProperty('expired')) + self.assertEquals(2, stat_line.getColumnProperty('responded')) + self.assertEquals(17, stat_line.getColumnProperty('total')) + +def test_suite(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(TestCrmReports)) + return suite + -- 2.30.9