Commit 0676bf4f authored by Vincent Desmares's avatar Vincent Desmares

start to verify every test and test every script of ERP5Commerce

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@26531 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 487642af
...@@ -33,10 +33,52 @@ from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase ...@@ -33,10 +33,52 @@ from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from AccessControl.SecurityManagement import newSecurityManager from AccessControl.SecurityManagement import newSecurityManager
from zLOG import LOG from zLOG import LOG
import transaction import transaction
import urllib
SESSION_ID = "12345678" SESSION_ID = "12345678"
class TestCommerce(ERP5TypeTestCase): 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 run_all_test = 1
...@@ -78,9 +120,15 @@ class TestCommerce(ERP5TypeTestCase): ...@@ -78,9 +120,15 @@ class TestCommerce(ERP5TypeTestCase):
self.clearModule(self.portal.currency_module) self.clearModule(self.portal.currency_module)
self.portal.portal_caches.clearAllCache() 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 = self.getPortal().acl_users
uf._doAddUser('ivan', '', ['Manager'], []) uf._doAddUser('ivan', '', ['Manager'], [])
uf._doAddUser('customer', '', ['Auditor', 'Author'], [])
uf._doAddUser('ERP5TypeTestCase', '', ['Manager'], []) uf._doAddUser('ERP5TypeTestCase', '', ['Manager'], [])
user = uf.getUserById('ivan').__of__(uf) user = uf.getUserById('ivan').__of__(uf)
newSecurityManager(None, user) newSecurityManager(None, user)
...@@ -270,7 +318,7 @@ class TestCommerce(ERP5TypeTestCase): ...@@ -270,7 +318,7 @@ class TestCommerce(ERP5TypeTestCase):
def test_06_TestClearShoppingCart(self, quiet=0, run=run_all_test): def test_06_TestClearShoppingCart(self, quiet=0, run=run_all_test):
""" """
Test update of shopping cart. Test clear of shopping cart.
""" """
if not run: if not run:
return return
...@@ -282,11 +330,174 @@ class TestCommerce(ERP5TypeTestCase): ...@@ -282,11 +330,174 @@ class TestCommerce(ERP5TypeTestCase):
request = self.app.REQUEST request = self.app.REQUEST
default_product = self.getDefaultProduct() default_product = self.getDefaultProduct()
request.set('session_id', SESSION_ID) request.set('session_id', SESSION_ID)
shopping_cart = portal.SaleOrder_getShoppingCart(action='reset')
self.assertEquals(0, \ default_product = self.getDefaultProduct()
len(portal.SaleOrder_getShoppingCartItemList())) 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()))
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 import unittest
def test_suite(): def test_suite():
suite = unittest.TestSuite() suite = unittest.TestSuite()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment