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

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Sep 18 02:28:46 CEST 2009


Author: lucas
Date: Fri Sep 18 02:28:46 2009
New Revision: 29106

URL: http://svn.erp5.org?rev=29106&view=rev
Log:
Added new tests for Anonymous. Fixed all broken tests related with r29103. Updated TODO list.

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=29106&r1=29105&r2=29106&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5Commerce.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Commerce.py [utf8] Fri Sep 18 02:28:46 2009
@@ -26,13 +26,16 @@
 #
 ##############################################################################
 
-from Testing import ZopeTestCase
-from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
-from AccessControl.SecurityManagement import newSecurityManager
-from zLOG import LOG
+import os
+import string
 import transaction
 import urllib
-import string
+
+from AccessControl.SecurityManagement import newSecurityManager
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+from Products.ERP5Type.tests.utils import FileUpload
+from Testing import ZopeTestCase
+from zLOG import LOG
 
 SESSION_ID = "12345678"
 LANGUAGE_LIST = ('en', 'fr', 'de', 'bg',)
@@ -69,8 +72,6 @@
   > SaleOrder_finalizeShopping doesnt check if the payment is successful or not
   > Fix proxy for SaleOrder_finalizeShopping anonym and normal user cant use it
   > SaleOrder_getAvailableShippingResourceList have hardcoded
-  > SaleOrder_getShoppingCartCustomer need to be refactor for fit clustering
-  > SaleOrder_getShoppingCartDefaultCurrency should depend of site configuration
   > SaleOrder_isConsistent the usage must be more generic or rename it
   > SaleOrder_isShippingRequired this script just return 1 ...
 
@@ -91,7 +92,6 @@
   WebSite_setupECommerceWebSite
   Product_getRelatedDescription
   Person_editPersonalInformation
-  Resource_getShopUrl
   """
 
   run_all_test = 1
@@ -112,10 +112,19 @@
   
   def afterSetUp(self):
     self.login()
-    portal = self.getPortal()
+    product_module = self.portal.product_module
+    currency_module = self.portal.currency_module
+    sale_order_module = self.portal.sale_order_module
+    currency_module.manage_permission('Access contents information', 
+                                     roles=['Anonymous'], acquire=0)
+    product_module.manage_permission('Access contents information', 
+                                     roles=['Anonymous'], acquire=0)
+    sale_order_module.manage_permission('Access contents information', 
+                                     roles=['Anonymous'], acquire=0)
+
     # create default currency (EUR)
-    currency = portal.currency_module.newContent(portal_type='Currency', 
-                                                 id='EUR')
+    currency = currency_module.newContent(portal_type='Currency', 
+                                          id='EUR')
     currency.setTitle('EUR')
     currency.setReference('EUR')
     currency.setShortTitle('€')
@@ -124,22 +133,22 @@
     currency.publish()
 
     # create product, set price & currency
-    product = portal.product_module.newContent(portal_type='Product', id='1')
+    product = product_module.newContent(portal_type='Product', id='1')
     product.setSupplyLinePriceCurrency(currency.getRelativeUrl())
     product.setBasePrice(10.0)
     product.validate()
     product.publish()
 
     # create second product, set price & currency
-    product = portal.product_module.newContent(portal_type='Product', id='2')
+    product = product_module.newContent(portal_type='Product', id='2')
     product.setSupplyLinePriceCurrency(currency.getRelativeUrl())
     product.setBasePrice(20.0)
     product.validate()
     product.publish()
 
     # create shipping which is actually a product
-    shipping = portal.product_module.newContent(portal_type='Product', 
-                                                id='3')
+    shipping = product_module.newContent(portal_type='Product', 
+                                         id='3')
     shipping.setSupplyLinePriceCurrency(currency.getRelativeUrl())
     shipping.setBasePrice(10.0)
     shipping.setProductLine('shipping')
@@ -147,11 +156,14 @@
     shipping.publish()
     
     # validate default order rule
-    default_order_rule = portal.portal_rules.default_order_rule
+    default_order_rule = self.portal.portal_rules.default_order_rule
     if default_order_rule.getValidationState() != 'validated':
-      portal.portal_rules.default_order_rule.validate()
+      self.portal.portal_rules.default_order_rule.validate()
 
     self.web_site = self.setupWebSite()
+    self.web_site.setProperty('ecommerce_base_currency', 
+                                            currency.getRelativeUrl())
+
     self.app.REQUEST.set('session_id', SESSION_ID)
     self.changeUser('ivan')
     transaction.commit()
@@ -422,15 +434,15 @@
 
     shopping_cart = self.portal.SaleOrder_getShoppingCart()
     self.assertEquals(40.0, \
-         float(shopping_cart.SaleOrder_getShoppingCartTotalPrice()))
+         float(self.web_site.SaleOrder_getShoppingCartTotalPrice()))
     # include taxes (by default it's 20%)
     self.assertEquals(40.0*1.20, \
-                float(shopping_cart.SaleOrder_getShoppingCartTotalPrice(
+         float(self.web_site.SaleOrder_getShoppingCartTotalPrice(
                                                         include_shipping=True,
                                                         include_taxes=True)))
     # no shipping selected yet so price should be the same
     self.assertEquals(40.0, \
-                float(shopping_cart.SaleOrder_getShoppingCartTotalPrice(
+         float(self.web_site.SaleOrder_getShoppingCartTotalPrice(
                                          include_shipping=True)))
 
     # add shipping
@@ -440,12 +452,12 @@
 
     # test price calculation only with shipping
     self.assertEquals(40.0 + 10.0, \
-                float(shopping_cart.SaleOrder_getShoppingCartTotalPrice(
+                float(self.web_site.SaleOrder_getShoppingCartTotalPrice(
                                                       include_shipping=True)))
 
     # test price calculation shipping and taxes
     self.assertEquals((40.0 + 10.0)*1.20, \
-                float(shopping_cart.SaleOrder_getShoppingCartTotalPrice(
+                float(self.web_site.SaleOrder_getShoppingCartTotalPrice(
                                                       include_shipping=True,
                                                       include_taxes=True)))
                                                                  
@@ -469,27 +481,31 @@
     
     # test price calculation without shipping and without taxes
     self.assertEquals((10.0*2 + 20.0*1)*1.0, \
-       float(shopping_cart.SaleOrder_getShoppingCartTotalPrice(include_shipping=False,
-                                                               include_taxes=False)))
+       float(self.web_site.SaleOrder_getShoppingCartTotalPrice(
+                                                    include_shipping=False,
+                                                    include_taxes=False)))
+
     # test price calculation with shipping and without taxes
     self.assertEquals((10.0*2  + 20.0*1 + 10.0)*1.0, \
-         float(shopping_cart.SaleOrder_getShoppingCartTotalPrice(include_shipping=True,
-                                                                 include_taxes=False)))
+         float(self.web_site.SaleOrder_getShoppingCartTotalPrice(
+                                                    include_shipping=True,
+                                                    include_taxes=False)))
     # test price calculation with shipping and with taxes
     self.assertEquals((10.0*2 + 20.0*1 + 10.0)*1.20, \
-         float(shopping_cart.SaleOrder_getShoppingCartTotalPrice(include_shipping=True,
-                                                                 include_taxes=True)))
+         float(self.web_site.SaleOrder_getShoppingCartTotalPrice(
+                                                    include_shipping=True,
+                                                    include_taxes=True)))
     
     # delete shopping item
     self.portal.SaleOrder_deleteShoppingCartItem('1')
     self.assertEquals(1, \
-                      len(self.portal.SaleOrder_getShoppingCartItemList()))
+                      len(self.web_site.SaleOrder_getShoppingCartItemList()))
                        
     self.portal.SaleOrder_deleteShoppingCartItem('2')
     self.assertEquals(0, \
-                      len(self.portal.SaleOrder_getShoppingCartItemList()))
+                      len(self.web_site.SaleOrder_getShoppingCartItemList()))
     self.assertEquals(0.0, \
-                      float(shopping_cart.SaleOrder_getShoppingCartTotalPrice()))
+                   float(self.web_site.SaleOrder_getShoppingCartTotalPrice()))
 
   def test_06_TestClearShoppingCart(self):
     """ 
@@ -520,14 +536,14 @@
     id_string = self.getPortal().Base_generateSessionID(max_long=0)
     self.assertEquals(0, len(id_string))
 
-  def test_09_getApplicableTaxList(self):
+  def test_08_getApplicableTaxList(self):
     """
       Test the Person_getApplicableTaxList script
     """
     # 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_paymentRedirect(self):
+  def test_09_paymentRedirect(self):
     """
       Test the SaleOrder_paymentRedirect script
     """
@@ -550,7 +566,7 @@
     self.assertTrue(urllib.quote("SaleOrder_viewConfirmAsWeb") in
                     self.app.REQUEST.RESPONSE.getHeader('location'))
 
-  def test_11_deleteShoppingCartItem(self):
+  def test_10_deleteShoppingCartItem(self):
     """
       Test the SaleOrder_deleteShoppingCartItem script
     """
@@ -579,7 +595,7 @@
     # Check if the Shopping Cart is empty
     self.assertEquals(0, len(self.portal.SaleOrder_getShoppingCartItemList()))
 
-  def test_13_finalizeShopping(self):
+  def test_11_finalizeShopping(self):
     """
       Test the SaleOrder_finalizeShopping script
     """
@@ -594,7 +610,7 @@
     self.assertEquals(2, len(self.portal.SaleOrder_getShoppingCartItemList()))
     self.assertEquals(0, len(self.portal.sale_order_module.contentValues()))
 
-    self.portal.SaleOrder_finalizeShopping()
+    self.web_site.SaleOrder_finalizeShopping()
     transaction.commit()
     self.tic()
 
@@ -603,7 +619,7 @@
     self.assertEquals(2, len(sale_order_object_list[0].contentValues()))
     self.assertEquals(0, len(self.portal.SaleOrder_getShoppingCartItemList()))
     
-  def test_14_getAvailableShippingResourceList(self):
+  def test_12_getAvailableShippingResourceList(self):
     """
       Test the SaleOrder_getAvailableShippingResourceList script
     """
@@ -618,7 +634,7 @@
     self.assertEquals(2,
                len(self.portal.SaleOrder_getAvailableShippingResourceList()))
                                      
-  def test_15_getFormatedData(self):
+  def test_13_getFormatedData(self):
     """
       Test the datas formating scripts
     """
@@ -634,7 +650,7 @@
     self.assertEqual('%s %s' %('20.0', sale_order.getPriceCurrencyTitle()),
                            sale_order.SaleOrder_getFormattedTotalPrice())
 
-  def test_16_getSelectedShippingResource(self):
+  def test_14_getSelectedShippingResource(self):
     """
       Test the SaleOrder_getSelectedShippingResource script
     """
@@ -653,24 +669,24 @@
     self.assertEquals(shipping_list[0].getRelativeUrl(),
                       self.portal.SaleOrder_getSelectedShippingResource())
 
-  def test_17_getShoppingCartDefaultCurrency(self):
+  def test_15_getShoppingCartDefaultCurrency(self):
     """
       Testing the scripts:
-      - SaleOrder_getShoppingCartDefaultCurrency
-      - SaleOrder_getShoppingCartDefaultCurrencyCode
-      - SaleOrder_getShoppingCartDefaultCurrencySymbol
+      - WebSite_getShoppingCartDefaultCurrency
+      - WebSite_getShoppingCartDefaultCurrencyCode
+      - WebSite_getShoppingCartDefaultCurrencySymbol
     """
     currency = self.portal.restrictedTraverse('currency_module/EUR')
     self.assertEquals(currency, 
-                      self.portal.SaleOrder_getShoppingCartDefaultCurrency())
+                      self.web_site.WebSite_getShoppingCartDefaultCurrency())
     
     self.assertEquals(currency.getReference(), 
-                   self.portal.SaleOrder_getShoppingCartDefaultCurrencyCode())
+                   self.web_site.WebSite_getShoppingCartDefaultCurrencyCode())
 
     self.assertEquals(currency.getShortTitle(),
-                 self.portal.SaleOrder_getShoppingCartDefaultCurrencySymbol())
-
-  def test_19_simulatePaypalPayment(self):
+                 self.web_site.WebSite_getShoppingCartDefaultCurrencySymbol())
+
+  def test_16_simulatePaypalPayment(self):
     """
       Test all the scripts related to paypal
     """
@@ -725,7 +741,7 @@
 
     custom_skin.manage_delObjects([method_id])
     
-  def test_20_getProductListFromWebSection(self):
+  def test_17_getProductListFromWebSection(self):
     """
       Test the  WebSection_getProductList script.
     """
@@ -736,14 +752,20 @@
 
     self.web_site.WebSection_generateSectionFromCategory(
                                               category='product_line/ldlc',
-                                              section_id='products',
+                                              section_id='product_section',
                                               depth=2)
     transaction.commit()
     self.tic()
 
-    self.assertEquals(14, len(self.web_site.products.WebSection_getProductList()))
-
-  def test_21_editShoppingCardWithABlankShippingMethod(self):
+    self.assertEquals(14, 
+             len(self.web_site.product_section.WebSection_getProductList()))
+    self.assertEquals(8, 
+             len(self.web_site.product_section.laptop.WebSection_getProductList()))
+
+    netbook_section = self.web_site.product_section.laptop.netbook
+    self.assertEquals(3, len(netbook_section.WebSection_getProductList()))
+
+  def test_18_editShoppingCardWithABlankShippingMethod(self):
     """
       This test must make sure that you can edit the shopping cart selecting a
       blank shipping method and it will not break.
@@ -751,7 +773,7 @@
     default_product = self.getDefaultProduct()
     self.portal.Resource_addToShoppingCart(default_product, 1)
 
-    shopping_cart = self.portal.SaleOrder_getShoppingCart()
+    shopping_cart = self.web_site.SaleOrder_getShoppingCart()
     self.assertFalse(hasattr(shopping_cart, 'shipping_method'))
 
     self.portal.SaleOrder_editShoppingCart(field_my_shipping_method='')
@@ -764,26 +786,27 @@
 
     self.assertTrue(hasattr(shopping_cart, 'shipping_method'))
 
-  def test_22_editShoppingCardWithShippingMethodWithoutPrice(self):
+  def test_19_editShoppingCardWithShippingMethodWithoutPrice(self):
     """
       This test must make sure that you can not edit the shopping cart 
       selecting a shipping method without price.
     """
-    default_product = self.getDefaultProduct()
-    self.portal.Resource_addToShoppingCart(default_product, 1)
-    shopping_cart = self.portal.SaleOrder_getShoppingCart()
+    default_product = self.getDefaultProduct(id='1')
+    product = getattr(self.portal.product_module, default_product.getId())
+    product.Resource_addToShoppingCart(default_product, 1)
+    shopping_cart = self.web_site.SaleOrder_getShoppingCart()
 
     # add shipping
     shipping = self.getDefaultProduct('3')
     shipping.setBasePrice(None) 
-    self.portal.SaleOrder_editShoppingCart(
+    self.web_site.SaleOrder_editShoppingCart(
                      field_my_shipping_method=shipping.getRelativeUrl())
 
     self.assertEquals(10.0, \
-            float(shopping_cart.SaleOrder_getShoppingCartTotalPrice(
+            float(self.web_site.SaleOrder_getShoppingCartTotalPrice(
                                                     include_shipping=True)))
 
-  def test_23_getProductListFromWebSite(self):
+  def test_20_getProductListFromWebSite(self):
     """
       Test the  WebSite_getProductList script.
     """
@@ -791,8 +814,7 @@
     self.assertEquals(16, 
                len(self.web_site.WebSite_getProductList(limit=1000)))
 
-
-  def test_24_AddResourceToShoppingCartWithAnonymousUser(self):
+  def test_21_AddResourceToShoppingCartWithAnonymousUser(self):
     """
       Test adding an arbitrary resources to shopping cart with Anonymous user.
     """
@@ -802,7 +824,7 @@
     shoppping_cart_item_list = self.portal.SaleOrder_getShoppingCartItemList()
     self.assertEquals(1, len(shoppping_cart_item_list))
 
-  def test_25_createShoppingCartWithAnonymousAndLogin(self):
+  def test_22_createShoppingCartWithAnonymousAndLogin(self):
     """
       Test adding an arbitrary resources to shopping cart with Anonymous user
       then create a new user, login and check if the Shopping Cart still the
@@ -811,9 +833,6 @@
     # anonymous user
     self.logout()
     self.createShoppingCartWithProductListAndShipping()
-    shoppping_cart_item_list = self.portal.SaleOrder_getShoppingCartItemList()
-    self.assertEquals(1, len(shoppping_cart_item_list))
-
     kw = dict(reference='toto',
               first_name='Toto',
               last_name='Test',
@@ -831,6 +850,74 @@
     self.assertTrue(urllib.quote("SaleOrder_viewConfirmAsWeb") in
                     self.app.REQUEST.RESPONSE.getHeader('location'))
 
+  def test_23_getShoppingCartCustomer(self):
+    """
+      It must test SaleOrder_getShoppingCartCustomer script
+      for a given Authenticated Member it should return the person value.
+    """
+    self.logout()
+    person_object = self.web_site.SaleOrder_getShoppingCartCustomer()
+    self.assertEquals(person_object, None)
+
+    self.changeUser('webmaster')
+    person_object = self.web_site.SaleOrder_getShoppingCartCustomer()
+    self.assertNotEquals(person_object, None)
+    self.assertEquals(person_object.getReference(), 'webmaster')
+
+  def test_24_getImageDataWithAnonymousUser(self):
+    """
+      Anonymous user must be able to get product image.
+    """
+    product = self.getDefaultProduct()
+    file_upload = FileUpload(os.path.join(os.path.dirname(__file__),
+                          'test_data', 'images', 'erp5_logo_small.png'), 'rb')
+    product.edit(default_image_file=file_upload)
+    transaction.get()
+    self.tic()
+
+    self.logout()
+    product = self.getDefaultProduct()
+    self.assertTrue(product.getDefaultImageValue().getData() 
+                                                 not in ('', None))
+
+  def test_25_getSaleOrderModuleAbsoluteUrlWithAnonymousUser(self):
+    """
+      Anonymous User must have permission access Sale Order Module contents
+      information. 
+    """
+    self.logout()
+    self.assertNotEquals(self.web_site.sale_order_module.absolute_url(), None)
+ 
+  def test_26_getShoppingCartDefaultCurrencyWithAnonymousUser(self):
+    """
+      Anonymous User must have persmission to access Currency Module contents
+      information and Published Currency objects.
+      Testing the scripts:
+      - WebSite_getShoppingCartDefaultCurrency
+      - WebSite_getShoppingCartDefaultCurrencyCode
+      - WebSite_getShoppingCartDefaultCurrencySymbol
+    """
+    self.logout()
+    currency_url = self.web_site.getLayoutProperty('ecommerce_base_currency')
+    currency_object = self.portal.restrictedTraverse(currency_url)
+    self.assertEquals(currency_object, 
+                      self.web_site.WebSite_getShoppingCartDefaultCurrency())
+    
+    self.assertEquals(currency_object.getReference(), 
+                   self.web_site.WebSite_getShoppingCartDefaultCurrencyCode())
+
+    self.assertEquals(currency_object.getShortTitle(),
+                 self.web_site.WebSite_getShoppingCartDefaultCurrencySymbol())
+
+  def test_27_ResourceGetShopUrl(self):
+    """
+      For a given Resource the Python Script (Resource_getShopUrl)
+      should return the Shopping Url.
+    """
+    product = self.getDefaultProduct()
+    self.assertEquals(product.Resource_getShopUrl(),
+                 '%s/%s' % (product.getRelativeUrl(), 'Resource_viewAsShop'))
+
 import unittest
 def test_suite():
   suite = unittest.TestSuite()




More information about the Erp5-report mailing list