first commit
This commit is contained in:
121
modules/commission/tests/test_module.py
Normal file
121
modules/commission/tests/test_module.py
Normal file
@@ -0,0 +1,121 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from decimal import Decimal
|
||||
|
||||
from trytond.modules.company.tests import (
|
||||
CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company, set_company)
|
||||
from trytond.modules.party.tests import PartyCheckReplaceMixin
|
||||
from trytond.pool import Pool
|
||||
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
||||
|
||||
|
||||
def create_product(name, list_price, categories=None):
|
||||
pool = Pool()
|
||||
Template = pool.get('product.template')
|
||||
Product = pool.get('product.product')
|
||||
Uom = pool.get('product.uom')
|
||||
|
||||
unit, = Uom.search([('name', '=', 'Unit')])
|
||||
template = Template(
|
||||
name=name,
|
||||
type='service',
|
||||
list_price=list_price,
|
||||
default_uom=unit,
|
||||
products=None,
|
||||
)
|
||||
if categories:
|
||||
template.categories = categories
|
||||
template.save()
|
||||
product = Product(template=template)
|
||||
product.save()
|
||||
return product
|
||||
|
||||
|
||||
def create_plan(lines):
|
||||
pool = Pool()
|
||||
Plan = pool.get('commission.plan')
|
||||
|
||||
commission_product = create_product("Commission", Decimal(10), [])
|
||||
plan, = Plan.create([{
|
||||
'name': "Commission Plan",
|
||||
'commission_product': commission_product.id,
|
||||
'lines': [('create', lines)]
|
||||
|
||||
}])
|
||||
return plan
|
||||
|
||||
|
||||
class CommissionTestCase(
|
||||
PartyCompanyCheckEraseMixin, PartyCheckReplaceMixin, CompanyTestMixin,
|
||||
ModuleTestCase):
|
||||
'Test Commission module'
|
||||
module = 'commission'
|
||||
extras = ['sale', 'stock', 'account_invoice_stock']
|
||||
|
||||
@with_transaction()
|
||||
def test_plan_category(self):
|
||||
"Test plan with category"
|
||||
pool = Pool()
|
||||
Category = pool.get('product.category')
|
||||
|
||||
category = Category(name="Category")
|
||||
category.save()
|
||||
child_category = Category(name="Child Category", parent=category)
|
||||
child_category.save()
|
||||
|
||||
company = create_company()
|
||||
with set_company(company):
|
||||
product = create_product("Other", Decimal(10), [category])
|
||||
|
||||
plan = create_plan([{
|
||||
'category': category.id,
|
||||
'formula': 'amount * 0.8',
|
||||
}, {
|
||||
'formula': 'amount',
|
||||
}])
|
||||
|
||||
self.assertEqual(plan.compute(Decimal(1), product), Decimal('0.8'))
|
||||
|
||||
template = product.template
|
||||
template.categories = []
|
||||
template.save()
|
||||
|
||||
self.assertEqual(plan.compute(Decimal(1), product), Decimal(1))
|
||||
|
||||
template.categories = [child_category]
|
||||
template.save()
|
||||
|
||||
self.assertEqual(plan.compute(Decimal(1), product), Decimal('0.8'))
|
||||
|
||||
@with_transaction()
|
||||
def test_plan_no_product(self):
|
||||
"Test plan with no product"
|
||||
pool = Pool()
|
||||
Category = pool.get('product.category')
|
||||
PlanLine = pool.get('commission.plan.line')
|
||||
|
||||
category = Category(name="Category")
|
||||
category.save()
|
||||
|
||||
company = create_company()
|
||||
with set_company(company):
|
||||
product = create_product("Other", Decimal(10))
|
||||
plan = create_plan([{
|
||||
'category': category.id,
|
||||
'formula': 'amount * 0.8',
|
||||
}, {
|
||||
'product': product.id,
|
||||
'formula': 'amount * 0.7',
|
||||
}, {
|
||||
'formula': 'amount',
|
||||
}])
|
||||
|
||||
self.assertEqual(plan.compute(Decimal(1), None), Decimal(1))
|
||||
|
||||
PlanLine.delete(plan.lines[1:])
|
||||
|
||||
self.assertEqual(plan.compute(Decimal(1), None), None)
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
Reference in New Issue
Block a user