[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