[POS-commit] r6325 - in stoqlib/trunk/stoqlib/domain: . test

Johan Dahlin jdahlin at async.com.br
Thu Apr 5 10:49:06 BRT 2007


Author: jdahlin
Date: Thu Apr  5 10:49:06 2007
New Revision: 6325

Modified:
   stoqlib/trunk/stoqlib/domain/exampledata.py
   stoqlib/trunk/stoqlib/domain/test/test_sale.py

Log:
Redo the sale tests to use the example database

Modified: stoqlib/trunk/stoqlib/domain/exampledata.py
==============================================================================
--- stoqlib/trunk/stoqlib/domain/exampledata.py	(original)
+++ stoqlib/trunk/stoqlib/domain/exampledata.py	Thu Apr  5 10:49:06 2007
@@ -268,14 +268,19 @@
         product = Product(connection=self.trans)
         tax_constant = sysparam(self.trans).DEFAULT_PRODUCT_TAX_CONSTANT
         base_sellable_info = self._create_base_sellable_info()
+        on_sale_info = self._create_on_sale_info()
         return product.addFacet(ISellable,
                                 tax_constant=tax_constant,
                                 base_sellable_info=base_sellable_info,
+                                on_sale_info=on_sale_info,
                                 connection=self.trans)
     def _create_sale(self):
         from stoqlib.domain.sale import Sale
         from stoqlib.domain.till import Till
         till = Till.get_current(self.trans)
+        if till is None:
+            till = self._create_till()
+            till.open_till()
         salesperson = self._create_sales_person()
         return Sale(till=till,
                     coupon_id=0,

Modified: stoqlib/trunk/stoqlib/domain/test/test_sale.py
==============================================================================
--- stoqlib/trunk/stoqlib/domain/test/test_sale.py	(original)
+++ stoqlib/trunk/stoqlib/domain/test/test_sale.py	Thu Apr  5 10:49:06 2007
@@ -28,164 +28,135 @@
 from kiwi.datatypes import currency
 from stoqdrivers.enum import TaxType
 
-from stoqlib.database.runtime import (get_current_branch,
-                                      get_current_station)
+from stoqlib.database.runtime import get_current_branch
 from stoqlib.domain.fiscal import IcmsIpiBookEntry
-from stoqlib.domain.renegotiation import AbstractRenegotiationAdapter
 from stoqlib.domain.giftcertificate import GiftCertificate
-from stoqlib.domain.interfaces import (IClient, IEmployee, ISalesPerson,
-                                       ICompany, IIndividual,
-                                       ISellable, IPaymentGroup,
+from stoqlib.domain.interfaces import (IClient,
+                                       IIndividual,
+                                       IPaymentGroup,
                                        IStorable)
+from stoqlib.domain.person import Person
 from stoqlib.domain.payment.payment import AbstractPaymentGroup
 from stoqlib.domain.payment.methods import CheckPM, MoneyPM
-from stoqlib.domain.person import Person, EmployeeRole
-from stoqlib.domain.product import Product
 from stoqlib.domain.renegotiation import RenegotiationAdaptToReturnSale
 from stoqlib.domain.sale import Sale
-from stoqlib.domain.sellable import (BaseSellableInfo, ASellable, OnSaleInfo,
-                                     SellableTaxConstant)
-from stoqlib.domain.till import Till
+from stoqlib.domain.sellable import ASellable, SellableTaxConstant
 from stoqlib.exceptions import StoqlibError
-from stoqlib.lib.parameters import sysparam
 
 from stoqlib.domain.test.domaintest import DomainTest
 
-def get_sale(conn, specific=None, employee_role=None):
-    # specific: if this parameter is 'np' returns a sale with no payment
-    # if no specific=None return a list with a sale, a sellable and a
-    # storable.
-
-    # setting up a product
-    product = Product(connection=conn)
-    base_info = BaseSellableInfo(price=Decimal(10),
-                                 connection=conn)
-    on_sale_info = OnSaleInfo(on_sale_price=Decimal(10),
-                              connection=conn)
-    # sellable facet
-    sellable = product.addFacet(ISellable, connection=conn,
-                                base_sellable_info=base_info,
-                                on_sale_info=on_sale_info,
-                                status=ASellable.STATUS_AVAILABLE)
-    if employee_role == None:
-        employee_role = 'desenvolvedor'
-
-    person = Person(name='Jonas', connection=conn)
-    person.addFacet(IIndividual, connection=conn)
-    role = EmployeeRole(connection=conn, name=employee_role)
-    employee = person.addFacet(IEmployee, connection=conn,
-                               role=role)
-    salesperson = person.addFacet(ISalesPerson, connection=conn)
-    company = person.addFacet(ICompany, connection=conn)
-    branch = get_current_branch(conn)
-    station = get_current_station(conn)
-    till = Till(connection=conn, station=station,
-                status=Till.STATUS_OPEN)
-    renegotiation = AbstractRenegotiationAdapter(connection=conn)
-    client = person.addFacet(IClient, connection=conn)
-    sale = Sale(coupon_id=123, client=client,
-                cfop=sysparam(conn).DEFAULT_SALES_CFOP,
-                salesperson=salesperson,
-                renegotiation_data=renegotiation,
-                till=till, connection=conn)
-    sellable.add_sellable_item(sale, quantity=5)
-
-    # storable facet
-    storable = product.addFacet(IStorable, connection=conn)
-    for stock_item in storable.get_stock_items():
-        stock_item.quantity = 100
-        stock_item.stock_cost = Decimal(10)
-        stock_item.logic_quantity = stock_item.quantity
-    storable.increase_stock(100, branch)
-
-    if specific == 'np':
-        return sale
-
-    sale.addFacet(IPaymentGroup, connection=conn,
-                  installments_number=4)
-    sale.set_valid()
-    return [sale, sellable, storable]
-
 class TestSale(DomainTest):
 
-    def setUp(self):
-        DomainTest.setUp(self)
-        self.sparam = sysparam(self.trans)
+    def _create_sale_filled(self):
+        # FIXME: Move to examples? create_sale_with_product
+        sale = self.create_sale()
+        sale.addFacet(IPaymentGroup, connection=self.trans)
+        sellable = self.create_sellable()
+        sellable.status = ASellable.STATUS_AVAILABLE
+        product = sellable.get_adapted()
+        storable = product.addFacet(IStorable, connection=self.trans)
+        storable.increase_stock(100, get_current_branch(self.trans))
+        sellable.add_sellable_item(sale, quantity=5)
+
+        return sale, sellable, storable
+
+    def testGetPercentageValue(self):
+        sale = self.create_sale()
+        sellable = self.create_sellable()
+        sellable.add_sellable_item(sale, quantity=5)
 
-    def test_get_percentage_value(self):
-        sale = get_sale(self.trans)[0]
         self.assertEqual(sale._get_percentage_value(0), currency(0))
         self.assertEqual(sale._get_percentage_value(10), currency(5))
 
-    def test_set_discount_by_percentage(self):
-        sale = get_sale(self.trans)[0]
+    def testSetDiscountByPercentage(self):
+        sale = self.create_sale()
+        sellable = self.create_sellable()
+        sellable.add_sellable_item(sale, quantity=5)
+
         sale._set_discount_by_percentage(10)
         self.assertEqual(sale.discount_value, currency(5))
 
-    def test_get_discount_by_percentage(self):
-        sale = get_sale(self.trans)[0]
+    def testGetDiscountByPercentage(self):
+        sale = self.create_sale()
+        sellable = self.create_sellable()
+        sellable.add_sellable_item(sale, quantity=5)
+
         self.assertEqual(sale._get_discount_by_percentage(), Decimal('0.0'))
         sale._set_discount_by_percentage(10)
         self.assertEqual(sale._get_discount_by_percentage(), 10)
 
-    def test_set_surcharge_by_percentage(self):
-        sale = get_sale(self.trans)[0]
+    def testSetSurchargeByPercentage(self):
+        sale = self.create_sale()
+        sellable = self.create_sellable()
+        sellable.add_sellable_item(sale, quantity=5)
+
         sale._set_surcharge_by_percentage(10)
         self.assertEqual(sale.surcharge_value, currency(5))
 
-    def test_get_surcharge_by_percentage(self):
-        sale = get_sale(self.trans)[0]
+    def testGetSurchargeByPercentage(self):
+        sale = self.create_sale()
+        sellable = self.create_sellable()
+        sellable.add_sellable_item(sale, quantity=5)
+
         self.assertEqual(sale._get_surcharge_by_percentage(), currency(0))
         sale._set_surcharge_by_percentage(15)
         self.assertEqual(sale._get_surcharge_by_percentage(), 15)
 
-    def test_get_items(self):
-        usable = get_sale(self.trans)
-        sale = usable[0]
+    def testGetItems(self):
+        sale = self.create_sale()
+        sellable = self.create_sellable()
+        sellable.add_sellable_item(sale, quantity=5)
+
         items =  sale.get_items()
         self.assertEqual(items.count(), 1)
-        sellable = usable[1]
         self.assertEqual(sellable, items[0].sellable)
 
-    def test_remove_item(self):
-        sale = get_sale(self.trans)[0]
+    def testRemoveItem(self):
+        sale = self.create_sale()
+        sellable = self.create_sellable()
+        sellable.add_sellable_item(sale, quantity=5)
+
         item = 'test purpose'
         self.failUnlessRaises(TypeError, sale.remove_item, item)
         item = sale.get_items()[0]
         sale.remove_item(item)
         self.assertEqual(sale.get_items().count(), 0)
 
-    def test_get_available_sales(self):
-        sale = get_sale(self.trans)[0]
-        self.assertEqual(sale.get_available_sales(conn=self.trans,
-                                                  till=sale.till).count(),
-                                                  1)
+    def testGetAvailableSales(self):
+        sale = self.create_sale()
+        sale.set_valid()
+        res = Sale.get_available_sales(conn=self.trans, till=sale.till)
+        self.assertEqual(res.count(), 1)
+
     def test_get_status_name(self):
-        sale = get_sale(self.trans)[0]
+        sale = self.create_sale()
         self.failUnlessRaises(TypeError,
                               sale.get_status_name, 'invalid status')
 
     def test_add_custom_gift_certificate(self):
-        sale = get_sale(self.trans)[0]
+        sale = self.create_sale()
         assert isinstance(sale.add_custom_gift_certificate(Decimal(230),
                           u'11').get_adapted(), GiftCertificate)
 
     def test_get_clone(self):
-        sale = get_sale(self.trans)[0]
+        sale = self.create_sale()
         clone = sale.get_clone()
         self.assertEqual(clone.client, sale.client)
         self.assertEqual(clone.salesperson, sale.salesperson)
 
-    def test_check_payment_group(self):
-        sale_no_payment = get_sale(self.trans, 'np')
-        sale = get_sale(self.trans, employee_role='Paperback Writer')[0]
+    def testCheckPaymentGroup(self):
+        sale_no_payment = self.create_sale()
+
+        sale = self.create_sale()
+        sale.addFacet(IPaymentGroup, connection=self.trans)
+
         group = sale.check_payment_group()
         assert isinstance(group, Sale.getAdapterClass(IPaymentGroup))
         self.failIf(sale_no_payment.check_payment_group())
 
     def test_update_client(self):
         person = Person(name='Eliosvaldo', connection=self.trans)
-        sale = get_sale(self.trans)[0]
+        sale = self.create_sale()
         self.failUnlessRaises(TypeError, sale.update_client, person)
         individual = person.addFacet(IIndividual, connection=self.trans)
         client = person.addFacet(IClient, connection=self.trans)
@@ -193,33 +164,28 @@
         self.assertEqual(sale.client, client)
 
     def test_reset_discount_and_surcharge(self):
-        sale = get_sale(self.trans)[0]
+        sale = self.create_sale()
         sale.reset_discount_and_surcharge()
         self.assertEqual(sale.discount_value, currency(0))
         self.assertEqual(sale.surcharge_value, currency(0))
 
-    def test_sell_items(self):
-        usable = get_sale(self.trans)
-        sale = usable[0]
-        storable = usable[2]
+    def testSellItems(self):
+        sale, _, storable = self._create_sale_filled()
         sale.sell_items()
         product_item = storable.get_stock_items()[0]
         self.assertEqual(product_item.quantity, 95)
-    test_sell_items.skip = "Quantity"
 
-    def test_cancel_items(self):
-        usable = get_sale(self.trans)
-        sale = usable[0]
-        storable = usable[2]
+    def testCancelItems(self):
+        sale, _, storable = self._create_sale_filled()
+
         sale.sell_items()
         qty = storable.get_stock_items()[0].quantity
         sale.cancel_items()
         self.assertEqual(qty + 5, storable.get_stock_items()[0].quantity)
-    test_cancel_items.skip = "Quantity"
-
-    def test_check_close(self):
-        sale = get_sale(self.trans)[0]
 
+    def testCheckClose(self):
+        sale = self.create_sale()
+        sale.addFacet(IPaymentGroup, connection=self.trans)
         sale_total = sale.get_sale_subtotal()
         check_method = CheckPM.selectOne(connection=self.trans)
         check_method.create_inpayment(IPaymentGroup(sale), sale_total)
@@ -230,26 +196,27 @@
         group.status = AbstractPaymentGroup.STATUS_CLOSED
         self.failUnlessRaises(ValueError, sale.check_close)
 
-    def test_create_sale_return_adapter(self):
-        sale = get_sale(self.trans)[0]
+    def testCreateSaleReturnAdapter(self):
+        sale = self.create_sale()
+        sale.addFacet(IPaymentGroup, connection=self.trans)
         table = RenegotiationAdaptToReturnSale
         count = table.select(connection=self.trans).count()
         sale.create_sale_return_adapter()
         self.assertEqual(count + 1,
                          table.select(connection=self.trans).count())
 
-    def test_cancel(self):
-        sale = get_sale(self.trans)[0]
+    def testCancel(self):
+        sale = self.create_sale()
+        sale.addFacet(IPaymentGroup, connection=self.trans)
         reneg_adapter = sale.create_sale_return_adapter()
         sale.cancel(reneg_adapter)
         self.assertEqual(sale.status, Sale.STATUS_CANCELLED)
         sale.status = Sale.STATUS_ORDER
         self.failUnlessRaises(StoqlibError, sale.cancel, reneg_adapter)
 
-    def test_confirm_icms(self):
-        sale = get_sale(self.trans)[0]
-        sellable = sale.get_items()[0].sellable
-        product = sellable.get_adapted()
+    def testConfirmICMS(self):
+        sale, sellable, _ = self._create_sale_filled()
+
         constant = SellableTaxConstant(description="18",
                                        tax_type=int(TaxType.CUSTOM),
                                        tax_value=18,


More information about the POS-commit mailing list