Commit 307c2176 authored by Lucas Carvalho's avatar Lucas Carvalho

Start the write the TestLiveConsultingConfiguratorWorkflow (work in progress)

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@42095 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent afef3306
...@@ -28,64 +28,25 @@ ...@@ -28,64 +28,25 @@
############################################################################## ##############################################################################
import os
from DateTime import DateTime from DateTime import DateTime
from Products.ERP5Type.tests.Sequence import SequenceList from Products.ERP5Type.tests.Sequence import SequenceList
from Products.ERP5Type.tests.ERP5TypeLiveTestCase import ERP5TypeLiveTestCase from Products.ERP5Type.tests.ERP5TypeLiveTestCase import ERP5TypeLiveTestCase
from Products.ERP5Type.tests.SecurityTestCase import SecurityTestCase from Products.ERP5Type.tests.SecurityTestCase import SecurityTestCase
from Products.ERP5Type.tests.backportUnittest import expectedFailure from Products.ERP5Type.tests.backportUnittest import expectedFailure
from Products.ERP5Type.tests.utils import FileUpload
from AccessControl import Unauthorized from AccessControl import Unauthorized
from zLOG import LOG from zLOG import LOG
class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCase):
class TestLiveConfiguratorWorkflowMixin(ERP5TypeLiveTestCase, SecurityTestCase):
""" """
Test Live Standard Configuration Workflow. Configurator Mixin Class
""" """
# The list of standard business templates that the configurator should force # The list of standard business templates that the configurator should force
# to install # to install
standard_bt5_list = ('erp5_configurator_standard_categories',) standard_bt5_list = ('erp5_configurator_standard_categories',)
DEFAULT_SEQUENCE_LIST = """
stepCreateBusinessConfiguration
stepTic
stepSetStandardWorkflow
stepTic
stepConfiguratorNext
stepTic
stepCheckBT5ConfiguratorItem
stepCheckConfigureOrganisationForm
stepSetupOrganisationConfiguratorItem%(country)s
stepConfiguratorNext
stepTic
stepCheckConfigureUserAccountNumberForm
stepCheckOrganisationConfiguratorItem%(country)s
stepSetupUserAccounNumberSix
stepConfiguratorNext
stepTic
stepCheckConfigureMultipleUserAccountForm
stepSetupMultipleUserAccountSix
stepConfiguratorNext
stepTic
stepCheckMultiplePersonConfigurationItem
stepCheckConfigureAccountingForm
stepSetupAccountingConfiguration%(country)s
stepConfiguratorNext
stepTic
stepCheckAccountingConfigurationItemList%(country)s
stepCheckConfigurePreferenceForm
stepSetupPreferenceConfiguration%(country)s
stepConfiguratorNext
stepTic
stepCheckPreferenceConfigurationItemList%(country)s
stepCheckConfigureInstallationForm
stepSetupInstallConfiguration
stepConfiguratorNext
stepCheckInstallConfiguration
stepTic
stepStartConfigurationInstallation
stepTic
stepCheckInstanceIsConfigured%(country)s
"""
def afterSetUp(self): def afterSetUp(self):
newId = self.portal.portal_ids.generateNewId newId = self.portal.portal_ids.generateNewId
id_group ='testConfiguratorStandardWorkflow' id_group ='testConfiguratorStandardWorkflow'
...@@ -130,28 +91,10 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas ...@@ -130,28 +91,10 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas
# it is required by SecurityTestCase # it is required by SecurityTestCase
self.workflow_tool = self.portal.portal_workflow self.workflow_tool = self.portal.portal_workflow
def stepCleanUpRequest(self, sequence=None, sequence_list=None, **kw): def setBusinessConfigurationWorkflow(self, business_configuration, workflow):
""" Restore clean up the request """ """ Set configurator workflow """
self.app.REQUEST.other = self.app.REQUEST.default_other.copy() business_configuration.setResource(workflow)
def stepCreateBusinessConfiguration(self, sequence=None, sequence_list=None, **kw):
""" Create one Business Configuration """
module = self.portal.business_configuration_module
business_configuration = module.newContent(
portal_type="Business Configuration",
title='Test Configurator Standard Workflow',
user_interface_description_file_id='basic_configuration_ui_description.ods',
configuration_after_script_id='BusinessConfiguration_afterConfiguration')
next_dict = {}
sequence.edit(business_configuration=business_configuration,
next_dict=next_dict)
def stepSetStandardWorkflow(self, sequence=None, sequence_list=None, **kw):
""" Set Standard Workflow into Business Configuration """
business_configuration = sequence.get("business_configuration")
business_configuration.setResource("workflow_module/erp5_standard_workflow")
# utility methods for things that are likely to change in the future
def assertCurrentStep(self, step_title, server_response): def assertCurrentStep(self, step_title, server_response):
""" Checks the current step title. """ """ Checks the current step title. """
self.assertTrue( self.assertTrue(
...@@ -159,6 +102,12 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas ...@@ -159,6 +102,12 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas
'Unable to guess current step title (expected:%s) in: \n%s' % 'Unable to guess current step title (expected:%s) in: \n%s' %
(step_title, server_response)) (step_title, server_response))
### STEPS
def stepCleanUpRequest(self, sequence=None, sequence_list=None, **kw):
""" Restore clean up the request """
self.app.REQUEST.other = self.app.REQUEST.default_other.copy()
def stepConfiguratorNext(self, sequence=None, sequence_list=None, **kw): def stepConfiguratorNext(self, sequence=None, sequence_list=None, **kw):
""" Go Next into Configuration """ """ Go Next into Configuration """
business_configuration = sequence.get("business_configuration") business_configuration = sequence.get("business_configuration")
...@@ -175,6 +124,181 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas ...@@ -175,6 +124,181 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas
business_configuration, next_dict) business_configuration, next_dict)
sequence.edit(response_dict=response_dict) sequence.edit(response_dict=response_dict)
def stepCheckBT5ConfiguratorItem(self, sequence=None, sequence_list=None, **kw):
""" Check if the Configuration Item list is correct """
business_configuration = sequence.get("business_configuration")
# second one: install some standard business templates
standard_bt5_config_save = business_configuration['1']
self.assertEquals(len(self.standard_bt5_list),
len(standard_bt5_config_save.contentValues(
portal_type='Standard BT5 Configurator Item')))
self.assertEquals(
set(self.standard_bt5_list),
set([x.bt5_id for x in standard_bt5_config_save.contentValues()]))
# third one: we create a business template to store customer configuration
custom_bt5_config_save = business_configuration['2']
custom_bt5_config_item = custom_bt5_config_save['1']
self.assertEquals(custom_bt5_config_item.getPortalType(),
'Customer BT5 Configurator Item')
self.assertEquals(custom_bt5_config_item.bt5_title,
'_'.join(business_configuration.getTitle().strip().lower().split()))
class TestLiveConsultingConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
"""
Test Live Consulting Configuration Workflow
"""
DEFAULT_SEQUENCE_LIST = """
stepCreateBusinessConfiguration
stepTic
stepSetConsultingWorkflow
stepTic
stepConfiguratorNext
stepTic
stepCheckBT5ConfiguratorItem
stepCheckConfigureCategoriesForm
stepSetupCategoriesConfiguratorItem
stepConfiguratorNext
stepTic
stepCheckXXXForm
"""
def afterSetUp(self):
TestLiveConfiguratorWorkflowMixin.afterSetUp(self)
categories_file_id = 'consulting_configurator_sample_categories.ods'
categories_file_obj = getattr(self.portal, categories_file_id)
self.categories_file_path = '/tmp/%s' % categories_file_id
temp_file = open(self.categories_file_path, 'w+b')
try:
temp_file.write(str(categories_file_obj))
finally:
temp_file.close()
self.categories_file_upload = FileUpload(self.categories_file_path,
categories_file_id)
def beforeTearDown(self):
os.remove(self.categories_file_path)
def stepCreateBusinessConfiguration(self, sequence=None, sequence_list=None, **kw):
""" Create one Business Configuration """
module = self.portal.business_configuration_module
business_configuration = module.newContent(
portal_type="Business Configuration",
title='Test Configurator Consulting Workflow',
user_interface_description_file_id='consulting_configuration_ui_description.ods',
configuration_after_script_id='')
next_dict = {}
sequence.edit(business_configuration=business_configuration,
next_dict=next_dict)
def stepSetConsultingWorkflow(self, sequence=None, sequence_list=None, **kw):
""" Set Standard Workflow into Business Configuration """
business_configuration = sequence.get("business_configuration")
self.setBusinessConfigurationWorkflow(business_configuration,
"workflow_module/erp5_consulting_workflow")
def stepCheckConfigureCategoriesForm(self, sequence=None, sequence_list=None, **kw):
""" Check if Confire Organisation step was showed """
response_dict = sequence.get("response_dict")
if 'command' in response_dict:
self.assertEquals('show', response_dict['command'])
self.assertEquals(None, response_dict['previous'])
self.assertEquals('Configure Categories', response_dict['next'])
self.assertCurrentStep('Your categories', response_dict)
def stepSetupCategoriesConfiguratorItem(self, sequence=None, sequence_list=None, **kw):
""" Load the categories """
next_dict = dict(field_your_categories_spreadsheet=self.categories_file_upload)
next_dict.update(**kw)
sequence.edit(next_dict=next_dict)
# XXX: To be written
def stepCheckXXXForm(self, sequence=None, sequence_list=None, **kw):
response_dict = sequence.get("response_dict")
if 'command' in response_dict:
self.assertEquals('show', response_dict['command'])
self.assertEquals('Configure user accounts number', response_dict['next'])
self.assertEquals('Previous', response_dict['previous'])
self.assertCurrentStep('Number of user accounts', response_dict)
def test_consulting_workflow(self):
""" Test the consulting workflow configuration"""
sequence_list = SequenceList()
sequence_string = self.DEFAULT_SEQUENCE_LIST
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
class TestLiveStandardConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
"""
Test Live Standard Configuration Workflow.
"""
DEFAULT_SEQUENCE_LIST = """
stepCreateBusinessConfiguration
stepTic
stepSetStandardWorkflow
stepTic
stepConfiguratorNext
stepTic
stepCheckBT5ConfiguratorItem
stepCheckConfigureOrganisationForm
stepSetupOrganisationConfiguratorItem%(country)s
stepConfiguratorNext
stepTic
stepCheckConfigureUserAccountNumberForm
stepCheckOrganisationConfiguratorItem%(country)s
stepSetupUserAccounNumberSix
stepConfiguratorNext
stepTic
stepCheckConfigureMultipleUserAccountForm
stepSetupMultipleUserAccountSix
stepConfiguratorNext
stepTic
stepCheckMultiplePersonConfigurationItem
stepCheckConfigureAccountingForm
stepSetupAccountingConfiguration%(country)s
stepConfiguratorNext
stepTic
stepCheckAccountingConfigurationItemList%(country)s
stepCheckConfigurePreferenceForm
stepSetupPreferenceConfiguration%(country)s
stepConfiguratorNext
stepTic
stepCheckPreferenceConfigurationItemList%(country)s
stepCheckConfigureInstallationForm
stepSetupInstallConfiguration
stepConfiguratorNext
stepCheckInstallConfiguration
stepTic
stepStartConfigurationInstallation
stepTic
stepCheckInstanceIsConfigured%(country)s
"""
def stepCreateBusinessConfiguration(self, sequence=None, sequence_list=None, **kw):
""" Create one Business Configuration """
module = self.portal.business_configuration_module
business_configuration = module.newContent(
portal_type="Business Configuration",
title='Test Configurator Standard Workflow',
user_interface_description_file_id='basic_configuration_ui_description.ods',
configuration_after_script_id='BusinessConfiguration_afterConfiguration')
next_dict = {}
sequence.edit(business_configuration=business_configuration,
next_dict=next_dict)
def stepSetStandardWorkflow(self, sequence=None, sequence_list=None, **kw):
""" Set Standard Workflow into Business Configuration """
business_configuration = sequence.get("business_configuration")
self.setBusinessConfigurationWorkflow(business_configuration,
"workflow_module/erp5_standard_workflow")
def stepCheckConfigureOrganisationForm(self, sequence=None, sequence_list=None, **kw): def stepCheckConfigureOrganisationForm(self, sequence=None, sequence_list=None, **kw):
""" Check if Confire Organisation step was showed """ """ Check if Confire Organisation step was showed """
response_dict = sequence.get("response_dict") response_dict = sequence.get("response_dict")
...@@ -216,31 +340,11 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas ...@@ -216,31 +340,11 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas
response_dict = sequence.get("response_dict") response_dict = sequence.get("response_dict")
if 'command' in response_dict: if 'command' in response_dict:
self.assertEquals('show', response_dict['command']) self.assertEquals('show', response_dict['command'])
#import pdb; pdb.set_trace()
self.assertEquals('Configure user accounts number', response_dict['next']) self.assertEquals('Configure user accounts number', response_dict['next'])
self.assertEquals('Previous', response_dict['previous']) self.assertEquals('Previous', response_dict['previous'])
self.assertCurrentStep('Number of user accounts', response_dict) self.assertCurrentStep('Number of user accounts', response_dict)
def stepCheckBT5ConfiguratorItem(self, sequence=None, sequence_list=None, **kw):
""" Check if the Configuration Item list is correct """
business_configuration = sequence.get("business_configuration")
# second one: install some standard business templates
standard_bt5_config_save = business_configuration['1']
self.assertEquals(len(self.standard_bt5_list),
len(standard_bt5_config_save.contentValues(
portal_type='Standard BT5 Configurator Item')))
self.assertEquals(
set(self.standard_bt5_list),
set([x.bt5_id for x in standard_bt5_config_save.contentValues()]))
# third one: we create a business template to store customer configuration
custom_bt5_config_save = business_configuration['2']
custom_bt5_config_item = custom_bt5_config_save['1']
self.assertEquals(custom_bt5_config_item.getPortalType(),
'Customer BT5 Configurator Item')
self.assertEquals(custom_bt5_config_item.bt5_title,
'_'.join(business_configuration.getTitle().strip().lower().split()))
def _stepCheckOrganisationConfiguratorItem(self, business_configuration, def _stepCheckOrganisationConfiguratorItem(self, business_configuration,
default_address_city, default_address_city,
default_address_region): default_address_region):
...@@ -2615,5 +2719,6 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas ...@@ -2615,5 +2719,6 @@ class TestLiveStandardConfiguratorWorkflow(ERP5TypeLiveTestCase, SecurityTestCas
import unittest import unittest
def test_suite(): def test_suite():
suite = unittest.TestSuite() suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestLiveConsultingConfiguratorWorkflow))
suite.addTest(unittest.makeSuite(TestLiveStandardConfiguratorWorkflow)) suite.addTest(unittest.makeSuite(TestLiveStandardConfiguratorWorkflow))
return suite return suite
550 551
\ No newline at end of file \ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment