From 0676bf4f113343e0471287515b8636a363002fdc Mon Sep 17 00:00:00 2001 From: Vincent Desmares <vincentd@nexedi.com> Date: Mon, 20 Apr 2009 16:28:28 +0000 Subject: [PATCH] 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 --- product/ERP5/tests/testERP5Commerce.py | 221 ++++++++++++++++++++++++- 1 file changed, 216 insertions(+), 5 deletions(-) diff --git a/product/ERP5/tests/testERP5Commerce.py b/product/ERP5/tests/testERP5Commerce.py index ff3cc3f140..394557d131 100644 --- a/product/ERP5/tests/testERP5Commerce.py +++ b/product/ERP5/tests/testERP5Commerce.py @@ -33,10 +33,52 @@ from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase 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 @@ class TestCommerce(ERP5TypeTestCase): 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 @@ class TestCommerce(ERP5TypeTestCase): 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 @@ class TestCommerce(ERP5TypeTestCase): request = self.app.REQUEST default_product = self.getDefaultProduct() request.set('session_id', SESSION_ID) - shopping_cart = portal.SaleOrder_getShoppingCart(action='reset') - self.assertEquals(0, \ - len(portal.SaleOrder_getShoppingCartItemList())) + + 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())) + + + 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() -- 2.30.9