[Erp5-report] r26531 - /erp5/trunk/products/ERP5/tests/testERP5Commerce.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Apr 20 18:28:28 CEST 2009


Author: vincentd
Date: Mon Apr 20 18:28:28 2009
New Revision: 26531

URL: http://svn.erp5.org?rev=26531&view=rev
Log:
start to verify every test and test every script of ERP5Commerce

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

Modified: erp5/trunk/products/ERP5/tests/testERP5Commerce.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5Commerce.py?rev=26531&r1=26530&r2=26531&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5Commerce.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Commerce.py [utf8] Mon Apr 20 18:28:28 2009
@@ -33,10 +33,52 @@
 from AccessControl.SecurityManagement import newSecurityManager
 from zLOG import LOG
 import transaction
+import urllib
 
 SESSION_ID = "12345678"
 
 class TestCommerce(ERP5TypeTestCase):
+  """
+  Script available in ERP5Commerce :
+  Already tested :
+  Resource_addToShoppingCart (Add resource to shopping cart)
+  SaleOrder_getShoppingCartItemList (Get shopping cart items)
+  SaleOrder_getShoppingCartTotalPrice (Calculate total price for items in shopping cart)
+  SaleOrder_getShoppingCart (Get shopping cart for customer)
+  Base_generateSessionID (Generate session ID)
+  Person_getApplicableDiscountList (Get applicable discount information)
+  Person_getApplicableTaxList (Get applicable tax information)
+  SaleOrder_confirmShopping (Redirect to appropriate form)
+  SaleOrder_deleteShoppingCartItem (Delete a shopping cart item)
+  SaleOrder_editShoppingCart (Update shopping cart)
+  SaleOrder_externalPaymentHandler (External online payment system handler)
+    
+  Not tested :
+    
+  
+  SaleOrder_finalizeShopping (Finalize order)
+  SaleOrder_getAvailableShippingResourceList (Get list of available shipping methods)
+  SaleOrder_getFormattedCreationDate (Format creation date)
+  SaleOrder_getFormattedTotalPrice (Format total price)
+  SaleOrder_getSelectedShippingResource (Get selected shipping method from shopping cart)
+  SaleOrder_getShoppingCartCustomer (Get shopping cart customer object)
+  SaleOrder_getShoppingCartDefaultCurrency (Get default currency for shop)
+  SaleOrder_getShoppingCartId (Get shopping cart id)
+  SaleOrder_isConsistent (Check shopping cart details for consistency)
+  SaleOrder_isShippingRequired (Is shipping required for current shopping cart?)
+  SaleOrder_isShoppingCartEmpty (Is shopping cart empty ?)
+
+  Todo : 
+  Change name of all script, they are most of them never called on a SaleOrder
+  Test SaleOrder_getShoppingCartItemList With include_shipping=True
+  implement Person_getApplicableDiscountList (actually just return None)
+  implement Person_getApplicableTaxList (actually always return a tax of 20%)
+  Fix proxy for SaleOrder_confirmShopping, and anonym user cant call it !
+  SaleOrder_deleteShoppingCartItem doesnt use translation
+  SaleOrder_externalPaymentHandler is totally empty
+  SaleOrder_finalizeShopping doesnt check if the payment is successful or not
+  Fix proxy for SaleOrder_finalizeShopping anonym and normal user cant use it
+  """
 
   run_all_test = 1
   
@@ -78,9 +120,15 @@
     self.clearModule(self.portal.currency_module)
     self.portal.portal_caches.clearAllCache()
 
-  def login(self, quiet=0, run=run_all_test):
+  def changeUser(self, name):
+    user_folder = self.getPortal().acl_users
+    user = user_folder.getUserById(name).__of__(user_folder)
+    newSecurityManager(None, user)
+
+  def login(self):
     uf = self.getPortal().acl_users
     uf._doAddUser('ivan', '', ['Manager'], [])
+    uf._doAddUser('customer', '', ['Auditor', 'Author'], [])
     uf._doAddUser('ERP5TypeTestCase', '', ['Manager'], [])
     user = uf.getUserById('ivan').__of__(uf)
     newSecurityManager(None, user)
@@ -270,7 +318,7 @@
 
   def test_06_TestClearShoppingCart(self, quiet=0, run=run_all_test):
     """ 
-       Test update of shopping cart.
+       Test clear of shopping cart.
     """
     if not run:
       return
@@ -282,11 +330,174 @@
     request = self.app.REQUEST
     default_product = self.getDefaultProduct()
     request.set('session_id', SESSION_ID)
+
+    default_product = self.getDefaultProduct()
+    another_product = self.getDefaultProduct(id = '2')
+    portal.Resource_addToShoppingCart(default_product, quantity=1)
+    portal.Resource_addToShoppingCart(another_product, quantity=1)
+    self.tic()
+    transaction.commit()
+    
     shopping_cart = portal.SaleOrder_getShoppingCart(action='reset')
-    self.assertEquals(0, \
-                      len(portal.SaleOrder_getShoppingCartItemList()))
-    
-
+    self.assertEquals(0, len(portal.SaleOrder_getShoppingCartItemList()))
+
+
+  def test_07_SessionIDGeneration(self, quiet=0, run=run_all_test):
+    """
+      Test the generation of session id
+    """
+    if not run:
+      return
+    if not quiet:
+      message = '\nTest session id generation'
+      ZopeTestCase._print(message)
+      LOG('Testing... ', 0, message)
+    import string
+
+    id_string = self.getPortal().Base_generateSessionID()
+    self.assertEquals(10, len(id_string))
+    for caracter in id_string:
+      self.assertTrue(caracter in string.letters)
+
+    id_string = self.getPortal().Base_generateSessionID(max_long=20)
+    self.assertEquals(20, len(id_string))
+
+    # XXX : maybe it can be good to forbid this case
+    id_string = self.getPortal().Base_generateSessionID(max_long=0)
+    self.assertEquals(0, len(id_string))
+
+  def test_08_getApplicableDiscountList(self, quiet=0, run=run_all_test):
+    """
+      Test the Person_getApplicableDiscountList script
+    """
+    if not run:
+      return
+    if not quiet:
+      message = '\nTest the discount list'
+      ZopeTestCase._print(message)
+      LOG('Testing... ', 0, message)
+
+    # XXX : actually the script is only in squeleton mode, only return None
+    self.assertEquals(None, self.getPortal().Person_getApplicableDiscountList())
+
+  def test_09_getApplicableTaxList(self, quiet=0, run=run_all_test):
+    """
+      Test the Person_getApplicableTaxList script
+    """
+    if not run:
+      return
+    if not quiet:
+      message = '\nTest the applicable tax list'
+      ZopeTestCase._print(message)
+      LOG('Testing... ', 0, message)
+
+    # XXX : actually the script is only in squeleton mode, only return a tax of 20%
+    self.assertEquals({'VAT':20.0}, self.getPortal().Person_getApplicableTaxList())
+
+  def test_10_confirmShopping(self, quiet=0, run=run_all_test):
+    """
+      Test the SaleOrder_confirmShopping script
+    """
+    if not run:
+      return
+    if not quiet:
+      message = '\nTest the confirmation of shopping'
+      ZopeTestCase._print(message)
+      LOG('Testing... ', 0, message)
+    portal = self.getPortal()
+    request = self.app.REQUEST
+    default_product = self.getDefaultProduct()
+    request.set('session_id', SESSION_ID)
+
+    default_product = self.getDefaultProduct()
+    portal.Resource_addToShoppingCart(default_product, quantity=1)
+    self.tic()
+    transaction.commit()
+
+    # the confirmation should not be possible if the user is not logged
+    self.logout()
+    self.assertEquals(1, len(portal.SaleOrder_getShoppingCartItemList()))
+    self.portal.SaleOrder_confirmShopping()
+    self.assertTrue(urllib.quote("You need to create an account to " \
+                                 "continue If you already have please login.") in 
+                    request.RESPONSE.getHeader('location'))
+
+    # but it should work if the user is authenticated
+    self.changeUser('customer')
+    self.portal.SaleOrder_confirmShopping()
+    self.assertTrue(urllib.quote("SaleOrder_viewAsWebConfirm") in
+                    request.RESPONSE.getHeader('location'))
+
+  def test_11_deleteShoppingCartItem(self, quiet=0, run=run_all_test):
+    """
+      Test the SaleOrder_deleteShoppingCartItem script
+    """
+    if not run:
+      return
+    if not quiet:
+      message = '\nTest the deletion of cart item'
+      ZopeTestCase._print(message)
+      LOG('Testing... ', 0, message)
+    portal = self.getPortal()
+    request = self.app.REQUEST
+    default_product = self.getDefaultProduct()
+    request.set('session_id', SESSION_ID)
+
+    default_product = self.getDefaultProduct()
+    portal.Resource_addToShoppingCart(default_product, quantity=1)
+    self.tic()
+    transaction.commit()
+    self.assertEquals(1, len(portal.SaleOrder_getShoppingCartItemList()))
+    self.portal.SaleOrder_deleteShoppingCartItem()
+    self.assertTrue(urllib.quote("Please select an item.") in 
+                    request.RESPONSE.getHeader('location'))
+    self.assertEquals(1, len(portal.SaleOrder_getShoppingCartItemList()))
+    self.portal.SaleOrder_deleteShoppingCartItem(field_my_order_line_id=default_product.getId())
+    self.assertTrue(urllib.quote("Successfully removed from shopping cart.") in
+                    request.RESPONSE.getHeader('location'))
+    self.assertEquals(0, len(portal.SaleOrder_getShoppingCartItemList()))
+
+  def test_12_externalPaymentHandlet(self, quiet=0, run=run_all_test):
+    """
+      Test the SaleOrder_externalPaymentHandler script
+    """
+    if not run:
+      return
+    if not quiet:
+      message = '\nTest the External online payment system handler'
+      ZopeTestCase._print(message)
+      LOG('Testing... ', 0, message)
+    portal = self.getPortal()
+    request = self.app.REQUEST
+    default_product = self.getDefaultProduct()
+    request.set('session_id', SESSION_ID)
+
+    # XXX : no test possible, script empty
+
+  def test_13_finalizeShopping(self, quiet=0, run=run_all_test):
+    """
+      Test the SaleOrder_finalizeShopping script
+    """
+    if not run:
+      return
+    if not quiet:
+      message = '\nTest the finalisation of the shopping procedure'
+      ZopeTestCase._print(message)
+      LOG('Testing... ', 0, message)
+    portal = self.getPortal()
+    request = self.app.REQUEST
+    default_product = self.getDefaultProduct()
+    request.set('session_id', SESSION_ID)
+
+    default_product = self.getDefaultProduct()
+    portal.Resource_addToShoppingCart(default_product, quantity=1)
+    self.tic()
+    transaction.commit()
+    self.assertEquals(1, len(portal.SaleOrder_getShoppingCartItemList()))
+    self.assertEquals(0, len(portal.sale_order_module.contentValues()))
+
+    # in works ...
+    
 import unittest
 def test_suite():
   suite = unittest.TestSuite()




More information about the Erp5-report mailing list