[Erp5-report] r28306 - /erp5/trunk/products/ERP5/tests/testTradeCondition.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Aug 6 18:14:40 CEST 2009


Author: jerome
Date: Thu Aug  6 18:14:36 2009
New Revision: 28306

URL: http://svn.erp5.org?rev=28306&view=rev
Log:
add tests for getEffectiveModel on trade condition

Modified:
    erp5/trunk/products/ERP5/tests/testTradeCondition.py

Modified: erp5/trunk/products/ERP5/tests/testTradeCondition.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testTradeCondition.py?rev=28306&r1=28305&r2=28306&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testTradeCondition.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testTradeCondition.py [utf8] Thu Aug  6 18:14:36 2009
@@ -1768,6 +1768,71 @@
     self.assertEquals(2, line.getPrice())
 
 
+class TestEffectiveTradeCondition(TradeConditionTestCase):
+  """Tests for getEffectiveModel
+  
+  XXX open questions:
+   - should getEffectiveModel take validation state into account ? if yes, how
+     to do it in generic/customizable way ?
+   - would getEffectiveModel(at_date) be enough ?
+   - should effective model respect security (currently you need to view the
+     effective TC to find it through catalog)
+  """
+  def test_getEffectiveModel(self):
+    # getEffectiveModel returns the model with highest version
+    reference = self.id()
+    self.trade_condition.setReference(reference)
+    self.trade_condition.setVersion('001')
+    self.trade_condition.setEffectiveDate('2009/01/01')
+    self.trade_condition.setExpirationDate('2009/12/31')
+    other_trade_condition = self.trade_condition_module.newContent(
+                            portal_type=self.trade_condition.getPortalType(),
+                            title='Other Trade Condition',
+                            reference=reference,
+                            effective_date='2009/01/01',
+                            expiration_date='2009/12/31',
+                            version='002')
+    transaction.commit()
+    self.tic()
+    
+    self.assertEquals(other_trade_condition,
+        self.trade_condition.getEffectiveModel(
+                    start_date=DateTime('2009/06/01'),
+                    stop_date=DateTime('2009/06/01')))
+
+    # outside date range, nothing
+    self.assertEquals(None,
+        self.trade_condition.getEffectiveModel(
+                    start_date=DateTime('2008/06/01'),
+                    stop_date=DateTime('2008/06/01')))
+    self.assertEquals(None,
+        self.trade_condition.getEffectiveModel(
+                    start_date=DateTime('2010/06/01'),
+                    stop_date=DateTime('2010/06/01')))
+
+  def test_getEffectiveModel_return_self(self):
+    # getEffectiveModel returns the trade condition if it's effective
+    self.trade_condition.setReference(self.id())
+    self.trade_condition.setEffectiveDate('2009/01/01')
+    self.trade_condition.setExpirationDate('2009/12/31')
+    transaction.commit()
+    self.tic()
+    self.assertEquals(self.trade_condition,
+        self.trade_condition.getEffectiveModel(
+                    start_date=DateTime('2009/06/01'),
+                    stop_date=DateTime('2009/06/01')))
+
+  def test_getEffectiveModel_return_self_when_no_reference(self):
+    # when no reference defined, getEffectiveModel returns the trade condition.
+    self.trade_condition.setReference(None)
+    self.assertEquals(self.trade_condition,
+        self.trade_condition.getEffectiveModel())
+    self.assertEquals(self.trade_condition,
+        self.trade_condition.getEffectiveModel(start_date=DateTime(),
+                                               stop_date=DateTime()))
+
+
+
 class TestWithSaleOrder:
   order_type = 'Sale Order'
   order_line_type = 'Sale Order Line'
@@ -1854,7 +1919,14 @@
       TestTradeConditionSupplyLine, TestWithPurchaseInvoice):
   pass
 
-
+class TestEffectiveSaleTradeCondition(
+            TestEffectiveTradeCondition,
+            TestWithSaleOrder):
+  pass
+class TestEffectivePurchaseTradeCondition(
+            TestEffectiveTradeCondition,
+            TestWithPurchaseOrder):
+  pass
 
 def test_suite():
   suite = unittest.TestSuite()
@@ -1872,5 +1944,7 @@
   suite.addTest(unittest.makeSuite(TestTradeConditionSupplyLinePurchaseOrder))
   suite.addTest(unittest.makeSuite(TestTradeConditionSupplyLineSaleInvoice))
   suite.addTest(unittest.makeSuite(TestTradeConditionSupplyLinePurchaseInvoice))
+  suite.addTest(unittest.makeSuite(TestEffectiveSaleTradeCondition))
+  suite.addTest(unittest.makeSuite(TestEffectivePurchaseTradeCondition))
   return suite
 




More information about the Erp5-report mailing list