changeset 080659b1bcc9 in modules/commission:default
details:
https://hg.tryton.org/modules/commission?cmd=changeset&node=080659b1bcc9
description:
Replace test setuptools command by unittest discover
issue9215
review389851002
diffstat:
setup.py | 4 +-
tests/__init__.py | 6 --
tests/test_commission.py | 136 -----------------------------------------------
tests/test_module.py | 119 +++++++++++++++++++++++++++++++++++++++++
tests/test_scenario.py | 22 +++++++
tox.ini | 3 +-
6 files changed, 144 insertions(+), 146 deletions(-)
diffs (334 lines):
diff -r b5960815f3df -r 080659b1bcc9 setup.py
--- a/setup.py Mon Apr 11 23:24:21 2022 +0200
+++ b/setup.py Sat Apr 16 18:30:17 2022 +0200
@@ -141,6 +141,7 @@
install_requires=requires,
extras_require={
'sparklines': ['pygal'],
+ 'test': tests_require,
},
dependency_links=dependency_links,
zip_safe=False,
@@ -148,7 +149,4 @@
[trytond.modules]
commission = trytond.modules.commission
""",
- test_suite='tests',
- test_loader='trytond.test_loader:Loader',
- tests_require=tests_require,
)
diff -r b5960815f3df -r 080659b1bcc9 tests/__init__.py
--- a/tests/__init__.py Mon Apr 11 23:24:21 2022 +0200
+++ b/tests/__init__.py Sat Apr 16 18:30:17 2022 +0200
@@ -1,8 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-try:
- from trytond.modules.commission.tests.test_commission import suite
-except ImportError:
- from .test_commission import suite
-
-__all__ = ['suite']
diff -r b5960815f3df -r 080659b1bcc9 tests/test_commission.py
--- a/tests/test_commission.py Mon Apr 11 23:24:21 2022 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-# This file is part of Tryton. The COPYRIGHT file at the top level of
-# this repository contains the full copyright notices and license terms.
-
-import doctest
-import unittest
-from decimal import Decimal
-
-from trytond.modules.company.tests import (
- CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company, set_company)
-from trytond.pool import Pool
-from trytond.tests.test_tryton import (
- ModuleTestCase, doctest_checker, doctest_teardown)
-from trytond.tests.test_tryton import suite as test_suite
-from trytond.tests.test_tryton import 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, CompanyTestMixin, ModuleTestCase):
- 'Test Commission module'
- module = 'commission'
- extras = ['sale']
-
- @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)
-
-
-def suite():
- suite = test_suite()
- suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
- CommissionTestCase))
- suite.addTests(doctest.DocFileSuite('scenario_commission.rst',
- tearDown=doctest_teardown, encoding='utf-8',
- checker=doctest_checker,
- optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
- suite.addTests(doctest.DocFileSuite('scenario_agent_selection.rst',
- tearDown=doctest_teardown, encoding='utf-8',
- checker=doctest_checker,
- optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
- return suite
diff -r b5960815f3df -r 080659b1bcc9 tests/test_module.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_module.py Sat Apr 16 18:30:17 2022 +0200
@@ -0,0 +1,119 @@
+# 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.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, CompanyTestMixin, ModuleTestCase):
+ 'Test Commission module'
+ module = 'commission'
+ extras = ['sale']
+
+ @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
diff -r b5960815f3df -r 080659b1bcc9 tests/test_scenario.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_scenario.py Sat Apr 16 18:30:17 2022 +0200
@@ -0,0 +1,22 @@
+# This file is part of Tryton. The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+
+import doctest
+import glob
+import os
+
+from trytond.tests.test_tryton import doctest_checker, doctest_teardown
+
+
+def load_tests(loader, tests, pattern):
+ cwd = os.getcwd()
+ try:
+ os.chdir(os.path.dirname(__file__))
+ for scenario in glob.glob('*.rst'):
+ tests.addTests(doctest.DocFileSuite(
+ scenario, tearDown=doctest_teardown, encoding='utf-8',
+ checker=doctest_checker,
+ optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
+ finally:
+ os.chdir(cwd)
+ return tests
diff -r b5960815f3df -r 080659b1bcc9 tox.ini
--- a/tox.ini Mon Apr 11 23:24:21 2022 +0200
+++ b/tox.ini Sat Apr 16 18:30:17 2022 +0200
@@ -2,8 +2,9 @@
envlist = {py37,py38,py39,py310}-{sqlite,postgresql}
[testenv]
+extras = test
commands =
- coverage run --include=.*/commission/* setup.py test
+ coverage run --include=.*/commission/* -m unittest discover -s tests
coverage report --include=.*/commission/* --omit=*/tests/*
deps =
coverage