[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