[Erp5-dev] [Erp5-report] r27852 - /erp5/trunk/products/ERP5/tests/

Robin Sébastien seb at nexedi.com
Wed Jul 1 15:58:55 CEST 2009


nobody at svn.erp5.org wrote:
> Author: seb
> Date: Wed Jul  1 15:55:40 2009
> New Revision: 27852
> 
> URL: http://svn.erp5.org?rev=27852&view=rev
> Log:
> v

Sorry, I didn't set properly the commit message (I was expecting svn telling me 
such mistakes)

> 
> Added:
>     erp5/trunk/products/ERP5/tests/testApparelTransformation.py
>       - copied unchanged from r27850, erp5/trunk/products/ERP5/tests/testTransformation.py
> Removed:
>     erp5/trunk/products/ERP5/tests/testTransformation.py
> 
> Removed: erp5/trunk/products/ERP5/tests/testTransformation.py
> URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testTransformation.py?rev=27851&view=auto
> ==============================================================================
> --- erp5/trunk/products/ERP5/tests/testTransformation.py [utf8] (original)
> +++ erp5/trunk/products/ERP5/tests/testTransformation.py (removed)
> @@ -1,721 +1,0 @@
> -##############################################################################
> -#
> -# Copyright (c) 2004, 2005 Nexedi SARL and Contributors. All Rights Reserved.
> -#          Sebastien Robin <seb at nexedi.com>
> -#          Guillaume Michon <guillaume.michon at e-asc.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.
> -#
> -##############################################################################
> -
> -#
> -# Skeleton ZopeTestCase
> -#
> -
> -from random import randint
> -
> -import transaction
> -import os, sys
> -if __name__ == '__main__':
> -    execfile(os.path.join(sys.path[0], 'framework.py'))
> -
> -# Needed in order to have a log file inside the current folder
> -os.environ['EVENT_LOG_FILE'] = os.path.join(os.getcwd(), 'zLOG.log')
> -os.environ['EVENT_LOG_SEVERITY'] = '-300'
> -
> -from Testing import ZopeTestCase
> -from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
> -from AccessControl.SecurityManagement import newSecurityManager, \
> -                                             noSecurityManager
> -from DateTime import DateTime
> -from Acquisition import aq_base, aq_inner
> -from zLOG import LOG
> -from Products.ERP5Type.DateUtils import addToDate
> -from Products.ERP5Type.tests.Sequence import Sequence, SequenceList
> -import time
> -import os
> -from Products.ERP5Type import product_path
> -from Products.CMFCore.utils import getToolByName
> -from testOrder import TestOrderMixin
> -
> -class TestTransformation(TestOrderMixin, ERP5TypeTestCase):
> -  """
> -    Test Transformations
> -  """
> -  run_all_test = 1
> -  transformation_portal_type = 'Apparel Transformation'
> -  component_portal_type = 'Apparel Component'
> -  component_variation_portal_type = 'Apparel Component Variation'
> -  transformed_resource_portal_type = 'Apparel Transformation Transformed Resource'
> -  operation_portal_type = 'Apparel Transformation Operation'
> -
> -  def getTitle(self):
> -    return "Transformation"
> -
> -  def enableLightInstall(self):
> -    """
> -    You can override this. 
> -    Return if we should do a light install (1) or not (0)
> -    """
> -    return 1
> -
> -  def enableActivityTool(self):
> -    """
> -    You can override this.
> -    Return if we should create (1) or not (0) an activity tool.
> -    """
> -    return 1
> -  
> -  def stepCreateComponentDict(self, sequence=None, sequence_list=None, \
> -                                 **kw):
> -    """
> -      Create a number of variated component
> -    """
> -    portal = self.getPortal()
> -    component_module = portal.getDefaultModule(self.component_portal_type)
> -
> -    components = [
> -      { 'name':'zip', 'quantity': 100., 'prices':[10.] },
> -      { 'name':'tissu', 'quantity': 50., 'prices':[4.5, 7.] },
> -      { 'name':'bouton', 'quantity': 1000., 'prices':[150.] }, ]
> -    
> -    component_dict = {} 
> -    for component_info in components:
> -      component_name = component_info['name']
> -      component = component_module.newContent(title=component_name)
> -      component_dict[component_name] = component
> -      variation1 = component.newContent(
> -                          portal_type=self.component_variation_portal_type,
> -                          id='1')
> -      variation2 = component.newContent(
> -                          portal_type=self.component_variation_portal_type,
> -                          id='2')
> -      variations = [variation1, variation2]
> -
> -      # Commit and catalog
> -      transaction.commit()
> -      self.tic()
> -      
> -      component.setVariationBaseCategoryList(['variation'])
> -      component.setPVariationBaseCategoryList(['variation'])
> -      # Variation are automatically acquired if they are individual variation.
> -#       component.setCategoryList( 
> -#                     ['variation/' + x.getRelativeUrl() for x in variations] )
> -      # Set the price
> -      supply_line = component.newContent(portal_type='Supply Line')
> -      supply_line.edit(mapped_value_property_list=['base_price'],
> -          priced_quantity=component_info['quantity'])
> -      component_prices = component_info['prices']
> -      if len(component_prices) == 1:
> -        supply_line.edit(
> -            membership_criterion_base_category = ['variation'],
> -            membership_criterion_category = ['variation/' + x.getRelativeUrl() for x in variations],
> -            base_price = component_prices[0])
> -      else:
> -#         supply_line.setVariationBaseCategoryList(['variation'])
> -        supply_line.updateCellRange(base_id = 'path')
> -        for i in range(2):
> -          supply_cell = supply_line.newCell(
> -                   'variation/apparel_component_module/%s/%d' % \
> -                                      (component.getId(),(i+1)), 
> -                   portal_type='Supply Cell',
> -                   base_id='path')
> -          supply_cell.edit(
> -            membership_criterion_base_category = ['variation'],
> -            membership_criterion_category = ['variation/' + variations[i].getRelativeUrl()],
> -            base_price = component_prices[i],
> -            mapped_value_property_list = ['base_price'],
> -            resource = supply_line.getResource() )
> -    sequence.edit(component_dict=component_dict)
> -  
> -      
> -  def stepCreateOperationDict(self, sequence=None, sequence_list=None, **kw):
> -    """
> -      Create a number of operations
> -    """
> -    portal = self.getPortal()
> -    operation_dict = {}
> -    for operation_name in ('piquage', 'taillage'):
> -      operation = portal.portal_categories.operation.newContent(id=operation_name)
> -      operation_dict[operation_name] = operation
> -    sequence.edit(operation_dict=operation_dict)
> -    
> -    
> -  def stepCreateTransformation(self, sequence=None, sequence_list=None, \
> -                                 **kw):
> -    """
> -      Create a transformation
> -    """
> -    portal = self.getPortal()
> -    resource = sequence.get('resource')
> -    
> -    transformation_module = portal.getDefaultModule(self.transformation_portal_type)
> -    transformation = transformation_module.newContent(portal_type=self.transformation_portal_type)
> -    sequence.edit(transformation=transformation)
> -    transformation.setResourceValue(resource)
> -    transformation.setVariationBaseCategoryList(('size','colour', 'morphology'))
> -
> -    
> -  def stepCreateIncludedTransformation(self, sequence=None, sequence_list=None, **kw):
> -    """
> -      Create a transformation to be included into the other
> -    """
> -    portal = self.getPortal()
> -    resource = sequence.get('resource')
> -    transformation_module = portal.getDefaultModule(self.transformation_portal_type)
> -    transformation = transformation_module.newContent(portal_type = self.transformation_portal_type)
> -    sequence.edit(included_transformation = transformation)
> -    transformation.setResourceValue(resource)
> -    transformation.setVariationBaseCategoryList(('size',))
> -
> -    
> -  def stepCreateTransformationLine(self, sequence=None, sequence_list=None, **kw):
> -    """
> -      Create transformed resources and operations for transformation
> -    """
> -    transformation = sequence.get('transformation')
> -    component_dict = sequence.get('component_dict')
> -
> -    # Transformed Resource 1 : permanent consumption
> -    tr_resource_name = 'bouton'
> -    transformed_resource = transformation.newContent(portal_type=self.transformed_resource_portal_type)
> -    transformed_resource.edit(
> -        title = tr_resource_name,
> -        quantity = 2.,
> -        resource_value = component_dict[tr_resource_name],
> -        )
> -    transformed_resource.edit(
> -       categories = transformed_resource.getCategoryList() + ['variation/' + component_dict[tr_resource_name]['1'].getRelativeUrl()])
> -
> -    # Transformed Resource 2 : 1 variation axis
> -    line_list =  [ ('size/Baby',     '1'),
> -                   ('size/Child/32', '2'),
> -                   ('size/Child/34', '1'),
> -                   ('size/Man',      '2'),
> -                   ('size/Woman',    '1') ]
> -    tr_resource_name = 'zip'
> -    transformed_resource = transformation.newContent(portal_type=self.transformed_resource_portal_type)
> -    transformed_resource.edit(
> -        title = tr_resource_name,
> -        quantity = 1.,
> -        resource_value = component_dict[tr_resource_name]
> -        )
> -    base_category_list = ['size']
> -    transformed_resource.setVariationBaseCategoryList(base_category_list)
> -    range_list = [x[0] for x in line_list]
> -    transformed_resource.setCellRange(range_list, base_id='variation')
> -    for line in line_list:
> -      size, variation = line
> -      variation = component_dict[tr_resource_name][variation]
> -      cell = transformed_resource.newCell(size, base_id='variation')
> -      cell.edit(
> -        membership_criterion_base_category = base_category_list,
> -        membership_criterion_category = [size],
> -        categories = ('variation/' + variation.getRelativeUrl() ) )
> -    self.stepTic()
> -
> -    # Transformed Resource 3 : 3 variation axis
> -    line_list = [ ('size/Baby', 'ColourVariation1', 'MorphologyVariation1', '2', 3.),
> -                  ('size/Baby', 'ColourVariation1', 'MorphologyVariation2', '1', 3.5),
> -                  ('size/Baby', 'ColourVariation2', 'MorphologyVariation1', '1', 3.),                 
> -                  ('size/Baby', 'ColourVariation2', 'MorphologyVariation2', '2', 3.5),
> -                  ('size/Baby', 'ColourVariation3', 'MorphologyVariation1', '1', 3.5),
> -                  ('size/Baby', 'ColourVariation3', 'MorphologyVariation2', '1', 3.5),
> -                  
> -                  ('size/Child/32', 'ColourVariation1', 'MorphologyVariation1', '1', 6.),
> -                  ('size/Child/32', 'ColourVariation1', 'MorphologyVariation2', '1', 6.5),
> -                  ('size/Child/32', 'ColourVariation2', 'MorphologyVariation1', '1', 6.),
> -                  ('size/Child/32', 'ColourVariation2', 'MorphologyVariation2', '2', 6.5),
> -                  ('size/Child/32', 'ColourVariation3', 'MorphologyVariation1', '2', 6.),
> -                  ('size/Child/32', 'ColourVariation3', 'MorphologyVariation2', '1', 6.5),
> -                  
> -                  ('size/Child/34', 'ColourVariation1', 'MorphologyVariation1', '1', 9.),
> -                  ('size/Child/34', 'ColourVariation1', 'MorphologyVariation2', '2', 9.5),
> -                  ('size/Child/34', 'ColourVariation2', 'MorphologyVariation1', '2', 9.),
> -                  ('size/Child/34', 'ColourVariation2', 'MorphologyVariation2', '1', 9.5),
> -                  ('size/Child/34', 'ColourVariation3', 'MorphologyVariation1', '2', 9.),
> -                  ('size/Child/34', 'ColourVariation3', 'MorphologyVariation2', '2', 9.5),
> -                  
> -                  ('size/Man', 'ColourVariation1', 'MorphologyVariation1', '2', 12.),
> -                  ('size/Man', 'ColourVariation1', 'MorphologyVariation2', '2', 12.5),
> -                  ('size/Man', 'ColourVariation2', 'MorphologyVariation1', '2', 12.),
> -                  ('size/Man', 'ColourVariation2', 'MorphologyVariation2', '1', 12.5),
> -                  ('size/Man', 'ColourVariation3', 'MorphologyVariation1', '1', 12.),
> -                  ('size/Man', 'ColourVariation3', 'MorphologyVariation2', '2', 12.5),
> -                  
> -                  ('size/Woman', 'ColourVariation1', 'MorphologyVariation1', '2', 15.),
> -                  ('size/Woman', 'ColourVariation1', 'MorphologyVariation2', '1', 15.5),
> -                  ('size/Woman', 'ColourVariation2', 'MorphologyVariation1', '1', 15.),
> -                  ('size/Woman', 'ColourVariation2', 'MorphologyVariation2', '2', 15.5),
> -                  ('size/Woman', 'ColourVariation3', 'MorphologyVariation1', '2', 15.),
> -                  ('size/Woman', 'ColourVariation3', 'MorphologyVariation2', '2', 15.5),
> -               ]
> -    mapping_dict = {'ColourVariation1': 'colour/apparel_model_module/1/1',
> -                    'ColourVariation2': 'colour/apparel_model_module/1/2',
> -                    'ColourVariation3': 'colour/apparel_model_module/1/3',
> -                    'MorphologyVariation1': 'morphology/apparel_model_module/1/4',
> -                    'MorphologyVariation2': 'morphology/apparel_model_module/1/5',
> -                    '1': 'apparel_component_module/2/1',
> -                    '2': 'apparel_component_module/2/2' }
> -                    
> -               
> -    tr_resource_name = 'tissu'
> -    transformed_resource = transformation.newContent(portal_type=self.transformed_resource_portal_type)
> -    transformed_resource.edit(
> -        title = tr_resource_name,
> -        resource_value = component_dict[tr_resource_name]
> -        )
> -    base_category_list = ['size', 'colour', 'morphology']
> -    transformed_resource.setVariationBaseCategoryList(base_category_list)
> -    variation_range_list_list = []
> -    for base_category in base_category_list:
> -      variation_range_category_list = transformation.getVariationRangeCategoryList(base_category_list=[base_category]) 
> -      variation_range_list_list.append(variation_range_category_list)
> -
> -    transformed_resource.setCellRange(base_id='variation', *variation_range_list_list)
> -    transformed_resource.setCellRange(base_id='quantity', *variation_range_list_list)
> -    
> -    # Define the cells
> -    for line in line_list:
> -      size, colour, morphology, variation, quantity = line
> -      colour = mapping_dict[colour]
> -      morphology = mapping_dict[morphology]
> -      variation = component_dict[tr_resource_name][variation]
> -      cell_variation = transformed_resource.newCell(size, colour, morphology, base_id='variation')
> -      cell_quantity = transformed_resource.newCell(size, colour, morphology, base_id='quantity')
> -      cell_variation.edit(
> -        membership_criterion_base_category = base_category_list,
> -        membership_criterion_category = [size, colour, morphology],
> -        categories = ('variation/' + variation.getRelativeUrl()) )
> -      cell_quantity.edit(
> -        membership_criterion_base_category = base_category_list,
> -        membership_criterion_category = [size, colour, morphology],
> -        quantity = quantity,
> -        mapped_value_property_list = ['quantity'] ) 
> -    self.stepTic()
> -
> -    
> -  def stepCreateIncludedTransformationLine(self, sequence=None, sequence_list=None, **kw):
> -    """
> -      Create transformed resources and operations for transformation
> -    """
> -    transformation = sequence.get('included_transformation')
> -    operation_dict = sequence.get('operation_dict')
> -    component_dict = sequence.get('component_dict')
> -
> -    # Operation 1 : permanent consumption
> -    op_name = 'taillage'
> -    operation = transformation.newContent(portal_type=self.operation_portal_type)
> -    operation.edit(
> -        title = op_name,
> -        quantity = 10.,
> -        categories = operation.getCategoryList() + [ 'resource/' + operation_dict[op_name].getRelativeUrl(),
> -                                                     'quantity_unit/time/min' ]
> -        )
> -
> -    # Operation 2 : 1 variation axis
> -    line_list =  [ ('size/Baby',     2.),
> -                   ('size/Child/32', 2.5),
> -                   ('size/Child/34', 3.),
> -                   ('size/Man',      3.5),
> -                   ('size/Woman',    4.) ]
> -    op_name = 'piquage'
> -    operation = transformation.newContent(portal_type=self.operation_portal_type)
> -    operation.edit(
> -        title = op_name,
> -        categories = operation.getCategoryList() + [ 'resource/' + operation_dict[op_name].getRelativeUrl(),
> -                                                     'quantity_unit/time/min' ]
> -        )
> -    base_category_list = ['size']
> -    operation.setVariationBaseCategoryList(base_category_list)
> -    range_list = [x[0] for x in line_list]
> -    operation.setCellRange(range_list, base_id='quantity')
> -    for line in line_list:
> -      size, quantity = line
> -      cell = operation.newCell(size, base_id='quantity')
> -      cell.edit(
> -        membership_criterion_base_category = base_category_list,
> -        membership_criterion_category = [size],
> -        quantity = quantity,
> -        mapped_value_property_list = ['quantity'])
> -    self.stepTic()
> -    
> -  # Transformed Resource : 1 variation axis
> -    line_list =  [ ('size/Baby',     1.),
> -                   ('size/Child/32', 1.5),
> -                   ('size/Child/34', 2.),
> -                   ('size/Man',      3.),
> -                   ('size/Woman',    2.5) ]
> -    tr_resource_name = 'tissu'
> -    transformed_resource = transformation.newContent(portal_type=self.transformed_resource_portal_type)
> -    transformed_resource.edit(
> -        title = tr_resource_name,
> -        resource_value = component_dict[tr_resource_name],
> -        )
> -    transformed_resource.edit(
> -       categories = transformed_resource.getCategoryList() + ['variation/' + component_dict[tr_resource_name]['1'].getRelativeUrl()])
> -    base_category_list = ['size']
> -    transformed_resource.setVariationBaseCategoryList(base_category_list)
> -    range_list = [x[0] for x in line_list]
> -    transformed_resource.setCellRange(range_list, base_id='quantity')
> -    for line in line_list:
> -      size, quantity = line
> -      cell = transformed_resource.newCell(size, base_id='quantity')
> -      cell.edit(
> -        membership_criterion_base_category = base_category_list,
> -        membership_criterion_category = [size],
> -        quantity = quantity,
> -        mapped_value_property_list = ['quantity'])
> -    self.stepTic()
> -    
> -    
> -  def stepIncludeTransformation(self, sequence=None, sequence_list=None, **kw):
> -    transformation = sequence.get('transformation')
> -    included_transformation = sequence.get('included_transformation')
> -    transformation.edit(specialise_value = included_transformation)
> -    
> -    
> -  def stepVerifyTransformationAggregatedAmountList(self, sequence=None, sequence_list=None, **kw):
> -    """
> -      Verify the return of getAggregatedAmountList
> -    """
> -    expected_list = [
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.42], 'total':.82, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.315], 'total':.715, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.27], 'total':.67, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.49], 'total':.89, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.315], 'total':.715, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.315], 'total':.715, 'duration':[None,None,None], 'total_duration':None},
> -      
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.54], 'total':.94, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.585], 'total':.985, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.54], 'total':.94, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.91], 'total':1.31, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.84], 'total':1.24, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.585], 'total':.985, 'duration':[None,None,None], 'total_duration':None},
> -      
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.81], 'total':1.21, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.33], 'total':1.73, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.26], 'total':1.66, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.855], 'total':1.255, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.26], 'total':1.66, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.33], 'total':1.73, 'duration':[None,None,None], 'total_duration':None},
> -         
> -      {'id':('size/Man', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.68], 'total':2.08, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.75], 'total':2.15, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.68], 'total':2.08, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.125], 'total':1.525, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.08], 'total':1.48, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.75], 'total':2.15, 'duration':[None,None,None], 'total_duration':None},
> -         
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,2.1], 'total':2.5, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.395], 'total':1.795, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.35], 'total':1.75, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,2.17], 'total':2.57, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,2.1], 'total':2.5, 'duration':[None,None,None], 'total_duration':None},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,2.17], 'total':2.57, 'duration':[None,None,None], 'total_duration':None},
> -       ]
> -    transformation = sequence.get('transformation')
> -    self.verifyAggregatedAmountList(transformation, expected_list)
> -        
> -          
> -  def stepVerifyIncludedTransformationAggregatedAmountList(self, sequence=None, sequence_list=None, **kw):
> -    """
> -      Verify the return of getAggregatedAmountList
> -    """
> -    expected_list = [
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.09], 'total':.09, 'duration':[10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.09], 'total':.09, 'duration':[10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.09], 'total':.09, 'duration':[10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.09], 'total':.09, 'duration':[10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.09], 'total':.09, 'duration':[10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.09], 'total':.09, 'duration':[10.,2.,None], 'total_duration':12.},
> -      
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.135], 'total':.135, 'duration':[10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.135], 'total':.135, 'duration':[10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.135], 'total':.135, 'duration':[10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.135], 'total':.135, 'duration':[10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.135], 'total':.135, 'duration':[10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.135], 'total':.135, 'duration':[10.,2.5,None], 'total_duration':12.5},
> -      
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.18], 'total':.18, 'duration':[10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.18], 'total':.18, 'duration':[10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.18], 'total':.18, 'duration':[10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.18], 'total':.18, 'duration':[10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.18], 'total':.18, 'duration':[10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.18], 'total':.18, 'duration':[10.,3.,None], 'total_duration':13.},
> -         
> -      {'id':('size/Man', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.27], 'total':.27, 'duration':[10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.27], 'total':.27, 'duration':[10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.27], 'total':.27, 'duration':[10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.27], 'total':.27, 'duration':[10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.27], 'total':.27, 'duration':[10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.27], 'total':.27, 'duration':[10.,3.5,None], 'total_duration':13.5},
> -         
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.225], 'total':.225, 'duration':[10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.225], 'total':.225, 'duration':[10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.225], 'total':.225, 'duration':[10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.225], 'total':.225, 'duration':[10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[None,None,.225], 'total':.225, 'duration':[10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[None,None,.225], 'total':.225, 'duration':[10.,4.,None], 'total_duration':14.},
> -       ]     
> -    transformation = sequence.get('included_transformation')
> -    self.verifyAggregatedAmountList(transformation, expected_list)
> -    
> -  
> -  def stepVerifySpecialisedTransformationAggregatedAmountList(self, sequence=None, sequence_list=None, **kw):
> -    """
> -      Verify the return of AggregatedAmountList for a transformation which includes another one
> -    """
> -    expected_list = [
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.42,None,None,.09], 'total':.91, 'duration':[None,None,None,10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.315,None,None,.09], 'total':.805, 'duration':[None,None,None,10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.27,None,None,.09], 'total':.76, 'duration':[None,None,None,10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.49,None,None,.09], 'total':.98, 'duration':[None,None,None,10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.315,None,None,.09], 'total':.805, 'duration':[None,None,None,10.,2.,None], 'total_duration':12.},
> -      {'id':('size/Baby', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.315,None,None,.09], 'total':.805, 'duration':[None,None,None,10.,2.,None], 'total_duration':12.},
> -         
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.54,None,None,.135], 'total':1.075, 'duration':[None,None,None,10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.585,None,None,.135], 'total':1.12, 'duration':[None,None,None,10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.54,None,None,.135], 'total':1.075, 'duration':[None,None,None,10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.91,None,None,.135], 'total':1.445, 'duration':[None,None,None,10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.84,None,None,.135], 'total':1.375, 'duration':[None,None,None,10.,2.5,None], 'total_duration':12.5},
> -      {'id':('size/Child/32', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.585,None,None,.135], 'total':1.12, 'duration':[None,None,None,10.,2.5,None], 'total_duration':12.5},
> -          
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,.81,None,None,.18], 'total':1.39, 'duration':[None,None,None,10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.33,None,None,.18], 'total':1.91, 'duration':[None,None,None,10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.26,None,None,.18], 'total':1.84, 'duration':[None,None,None,10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,.855,None,None,.18], 'total':1.435, 'duration':[None,None,None,10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.26,None,None,.18], 'total':1.84, 'duration':[None,None,None,10.,3.,None], 'total_duration':13.},
> -      {'id':('size/Child/34', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.33,None,None,.18], 'total':1.91, 'duration':[None,None,None,10.,3.,None], 'total_duration':13.},
> -         
> -      {'id':('size/Man', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.68,None,None,.27], 'total':2.35, 'duration':[None,None,None,10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.75,None,None,.27], 'total':2.42, 'duration':[None,None,None,10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.68,None,None,.27], 'total':2.35, 'duration':[None,None,None,10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.125,None,None,.27], 'total':1.795, 'duration':[None,None,None,10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.08,None,None,.27], 'total':1.75, 'duration':[None,None,None,10.,3.5,None], 'total_duration':13.5},
> -      {'id':('size/Man', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.75,None,None,.27], 'total':2.42, 'duration':[None,None,None,10.,3.5,None], 'total_duration':13.5},
> -         
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,2.1,None,None,.225], 'total':2.725, 'duration':[None,None,None,10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/1', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,1.395,None,None,.225], 'total':2.02, 'duration':[None,None,None,10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,1.35,None,None,.225], 'total':1.975, 'duration':[None,None,None,10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/2', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,2.17,None,None,.225], 'total':2.795, 'duration':[None,None,None,10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/4'),
> -         'amount':[.3,.1,2.1,None,None,.225], 'total':2.725, 'duration':[None,None,None,10.,4.,None], 'total_duration':14.},
> -      {'id':('size/Woman', 'colour/apparel_model_module/1/3', 'morphology/apparel_model_module/1/5'),
> -         'amount':[.3,.1,2.17,None,None,.225], 'total':2.795, 'duration':[None,None,None,10.,4.,None], 'total_duration':14.},
> -       ]
> -    transformation = sequence.get('transformation')
> -    self.verifyAggregatedAmountList(transformation, expected_list)
> -    
> -    
> -  def verifyAggregatedAmountList(self, transformation, expected_list):
> -    """
> -      Verify aggregated data according to an expected structure
> -    """
> -    for expected in expected_list:
> -      aggregated_amount_list = transformation.getAggregatedAmountList(
> -        context=transformation.asContext(categories = expected['id']) )
> -      expected_amount_list = expected['amount']
> -      
> -      # Check the number of aggregated components
> -      if len(aggregated_amount_list) != len(expected_amount_list):
> -        LOG('TEST ERROR :', 0, 'number of Amount differs between expected (%d) and aggregated (%d) for categories %s' %
> -             (len(expected_amount_list), len(aggregated_amount_list), expected['id']))
> -        self.failUnless(0)
> -        
> -      # Check quantity for each component
> -      for i in range(len(aggregated_amount_list)):
> -        a_amount = aggregated_amount_list[i]
> -        a_price = a_amount.getTotalPrice()
> -        e_price = expected_amount_list[i]
> -        error = 0
> -        if e_price is None and a_price is not None:
> -          error = 1
> -        if a_price is None and e_price is not None:
> -          error = 1
> -        if e_price is not None and a_price is not None:
> -          if round(a_price,10) != round(e_price,10):
> -            error = 1
> -        if error == 1:
> -          LOG('TEST ERROR :', 0, 'Total price differs between expected (%s) and aggregated (%s) Amounts (resource : %s, id_categories : %s, amount.categories : %s)' %
> -            (repr(e_price), repr(a_price), repr(a_amount.getResource()), expected['id'], a_amount.getCategoryList()))
> -          self.failUnless(0)
> -          
> -      # Check duration for each component
> -        a_duration = a_amount.getDuration()
> -        e_duration = expected['duration'][i]
> -        error = 0
> -        if e_duration is None and a_duration is not None:
> -          error = 1
> -        if a_duration is None and e_duration is not None:
> -          error = 1
> -        if e_duration is not None and a_duration is not None:
> -          if round(a_duration,10) != round(e_duration,10):
> -            error = 1
> -        if error == 1:
> -          LOG('TEST ERROR :', 0, 'Duration differs between expected (%s) and aggregated (%s) Amounts (resource : %s, id_categories : %s, amount.categories : %s)' %
> -            (repr(e_duration), repr(a_duration), repr(a_amount.getResource()), expected['id'], a_amount.getCategoryList()))
> -          self.failUnless(0)
> -            
> -      # Check global quantity
> -      total_price = aggregated_amount_list.getTotalPrice()
> -      if round(total_price, 10) != round(expected['total'], 10):
> -        LOG('TEST ERROR :', 0, 'Total price for AggregatedAmountList differs between expected (%s) and aggregated (%s) (%s)' %
> -          (repr(total_price), repr(expected['total']), expected['id']))
> -        self.failUnless(0)
> -        
> -      # Check global duration
> -      total_duration = aggregated_amount_list.getTotalDuration()
> -      expected_duration = expected['total_duration']
> -      error = 0
> -      if total_duration is None and expected_duration is not None:
> -        error = 1
> -      if expected_duration is None and total_duration is not None:
> -        error = 1
> -      if total_duration is not None and expected_duration is not None:
> -        if round(total_duration, 10) != round(expected_duration, 10):
> -          error = 1
> -      if error == 1:
> -        LOG('TEST ERROR :', 0, 'Total duration differs between expected (%s) and aggregated (%s) (%s)' %
> -          (repr(expected_duration), repr(total_duration), expected['id']))
> -       
> -               
> -  def test_01_getAggregatedAmountList(self, quiet=0, run=run_all_test):
> -    """
> -      Test the method getAggregatedAmountList
> -    """
> -    if not run: return
> -    sequence_list = SequenceList()
> -
> -    # Test with a simply order without cell
> -    sequence_string = '\
> -                      CreateComponentDict \
> -                      CreateOperationDict \
> -                      Tic \
> -                      CreateVariatedResource \
> -                      Tic \
> -                      CreateTransformation \
> -                      Tic \
> -                      CreateTransformationLine \
> -                      Tic \
> -                      CreateIncludedTransformation \
> -                      Tic \
> -                      CreateIncludedTransformationLine \
> -                      Tic \
> -                      VerifyTransformationAggregatedAmountList \
> -                      VerifyIncludedTransformationAggregatedAmountList \
> -                      IncludeTransformation \
> -                      Tic \
> -                      VerifySpecialisedTransformationAggregatedAmountList \
> -                      '
> -    sequence_list.addSequenceString(sequence_string)
> -
> -    sequence_list.play(self)
> 
> _______________________________________________
> Erp5-report mailing list
> Erp5-report at erp5.org
> http://mail.nexedi.com/mailman/listinfo/erp5-report




More information about the Erp5-dev mailing list