From 5591d71a5fd0de004dcac3d88c9dcc529134728e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Wed, 16 Dec 2009 16:16:46 +0000
Subject: [PATCH] a few more tests, and some TODO notes

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@31346 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/tests/testBudget.py | 60 +++++++++++++++++++++++++++++---
 1 file changed, 56 insertions(+), 4 deletions(-)

diff --git a/product/ERP5/tests/testBudget.py b/product/ERP5/tests/testBudget.py
index 119bf78381..e6d452fc89 100644
--- a/product/ERP5/tests/testBudget.py
+++ b/product/ERP5/tests/testBudget.py
@@ -33,11 +33,12 @@ from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
 class TestBudget(ERP5TypeTestCase):
 
   def getBusinessTemplateList(self):
-    """
-      Return the list of required business templates.
+    """Return the list of required business templates.
+    We'll use erp5_accounting_ui_test to have some content
     """
     return ('erp5_base', 'erp5_pdm', 'erp5_trade', 'erp5_accounting',
-            'erp5_invoicing', 'erp5_simplified_invoicing', 'erp5_budget')
+            'erp5_invoicing', 'erp5_simplified_invoicing',
+            'erp5_accounting_ui_test', 'erp5_budget')
 
   def test_simple_create_budget_model(self):
     budget_model = self.portal.budget_model_module.newContent(
@@ -47,7 +48,7 @@ class TestBudget(ERP5TypeTestCase):
                     int_index=1,
                     budget_variation='budget_cell',
                     inventory_axis='node_category',
-                    variation_category='site',
+                    variation_base_category='site',
                     )
     self.assertEquals([], budget_model.checkConsistency())
 
@@ -55,8 +56,59 @@ class TestBudget(ERP5TypeTestCase):
     budget = self.portal.budget_module.newContent(
                             portal_type='Budget')
     budget_line = budget.newContent(portal_type='Budget Line')
+    budget_cell = budget_line.newContent(portal_type='Budget Cell')
     self.assertEquals([], budget.checkConsistency())
 
+  def test_budget_cell_node_variation_with_aggregate(self):
+    budget_model = self.portal.budget_model_module.newContent(
+                            portal_type='Budget Model')
+    budget_model.newContent(
+                    portal_type='Node Budget Variation',
+                    int_index=1,
+                    budget_variation='budget_cell',
+                    inventory_axis='node',
+                    variation_base_category='source',
+                    aggregate_value_list=(
+                      self.portal.account_module.goods_purchase,
+                      self.portal.account_module.fixed_assets,
+                    ))
+    budget = self.portal.budget_module.newContent(
+                    portal_type='Budget',
+                    specialise_value=budget_model)
+    budget_line = budget.newContent(portal_type='Budget Line')
+    self.assertEquals(['source'],
+                      budget_line.getVariationBaseCategoryList())
+    self.assertEquals(
+        [('Goods Purchase', 'source/account_module/goods_purchase'),
+         ('Fixed Assets', 'source/account_module/fixed_assets')],
+        budget_line.BudgetLine_getVariationRangeCategoryList())
+
+    budget_line.setVariationCategoryList(
+         ('source/account_module/goods_purchase',))
+    self.assertEquals(
+        ['source/account_module/goods_purchase'],
+        budget_line.getVariationCategoryList())
+  
+    # This was a budget cell variation, so no criterion is set on budget line
+    self.assertEquals(budget_line.getMembershipCriterionCategoryList(), [])
+    self.assertEquals(
+        budget_line.getMembershipCriterionBaseCategoryList(), [])
+
+    # TODO: create cells and test variation on cell
+  
+  # Other TODOs
+  # test simple category variation in getInventory
+   
+  # test that using a category variation on budget level sets membership
+  # criterion on budget
+
+  # test that using a variation on budget line level sets membership
+  # criterion on budget line (and budget cell or not ?)
+
+
+  # test that using a category variation on budget level is used in inventory
+  # calculation 
+
 
 def test_suite():
   suite = unittest.TestSuite()
-- 
2.30.9