changeset 84fa80a47db6 in modules/stock_supply:default
details:
https://hg.tryton.org/modules/stock_supply?cmd=changeset&node=84fa80a47db6
description:
Replace test setuptools command by unittest discover
issue9215
review389851002
diffstat:
setup.py | 6 +-
tests/__init__.py | 7 -
tests/test_module.py | 159 ++++++++++++++++++++++++++++++++++++++
tests/test_scenario.py | 22 +++++
tests/test_stock_supply.py | 186 ---------------------------------------------
tox.ini | 3 +-
6 files changed, 186 insertions(+), 197 deletions(-)
diffs (426 lines):
diff -r b2481df1c332 -r 84fa80a47db6 setup.py
--- a/setup.py Tue Apr 12 10:35:40 2022 +0200
+++ b/setup.py Sat Apr 16 18:30:20 2022 +0200
@@ -136,13 +136,13 @@
license='GPL-3',
python_requires='>=3.7',
install_requires=requires,
+ extras_require={
+ 'test': tests_require,
+ },
dependency_links=dependency_links,
zip_safe=False,
entry_points="""
[trytond.modules]
stock_supply = trytond.modules.stock_supply
""",
- test_suite='tests',
- test_loader='trytond.test_loader:Loader',
- tests_require=tests_require,
)
diff -r b2481df1c332 -r 84fa80a47db6 tests/__init__.py
--- a/tests/__init__.py Tue Apr 12 10:35:40 2022 +0200
+++ b/tests/__init__.py Sat Apr 16 18:30:20 2022 +0200
@@ -1,9 +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.stock_supply.tests.test_stock_supply import suite
-except ImportError:
- from .test_stock_supply import suite
-
-__all__ = ['suite']
diff -r b2481df1c332 -r 84fa80a47db6 tests/test_module.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_module.py Sat Apr 16 18:30:20 2022 +0200
@@ -0,0 +1,159 @@
+# 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 datetime
+
+from trytond.modules.account.tests import create_chart
+from trytond.modules.company.tests import (
+ CompanyTestMixin, create_company, set_company)
+from trytond.pool import Pool
+from trytond.tests.test_tryton import ModuleTestCase, with_transaction
+
+DATES = [
+ # purchase date, lead time, supply date
+ (datetime.date(2011, 11, 21), datetime.timedelta(10),
+ datetime.date(2011, 12, 1)),
+ (datetime.date(2011, 11, 21), datetime.timedelta(9),
+ datetime.date(2011, 11, 30)),
+ (datetime.date(2011, 11, 21), datetime.timedelta(8),
+ datetime.date(2011, 11, 29)),
+ (datetime.date(2011, 11, 21), datetime.timedelta(7),
+ datetime.date(2011, 11, 28)),
+ (datetime.date(2011, 11, 21), datetime.timedelta(6),
+ datetime.date(2011, 11, 27)),
+ (datetime.date(2011, 11, 21), datetime.timedelta(5),
+ datetime.date(2011, 11, 26)),
+ (datetime.date(2011, 11, 21), datetime.timedelta(4),
+ datetime.date(2011, 11, 25)),
+ ]
+
+
+class StockSupplyTestCase(CompanyTestMixin, ModuleTestCase):
+ 'Test StockSupply module'
+ module = 'stock_supply'
+
+ def test_compute_supply_date(self):
+ 'Test compute_supply_date'
+ @with_transaction()
+ def run(purchase_date, lead_time, supply_date):
+ pool = Pool()
+ ProductSupplier = pool.get('purchase.product_supplier')
+ product_supplier = self.create_product_supplier(lead_time)
+ date = ProductSupplier.compute_supply_date(
+ product_supplier, purchase_date)
+ self.assertEqual(date, supply_date)
+ for purchase_date, lead_time, supply_date in DATES:
+ run(purchase_date, lead_time, supply_date)
+
+ def test_compute_purchase_date(self):
+ 'Test compute_purchase_date'
+ @with_transaction()
+ def run(purchase_date, lead_time, supply_date):
+ pool = Pool()
+ ProductSupplier = pool.get('purchase.product_supplier')
+ product_supplier = self.create_product_supplier(lead_time)
+ date = ProductSupplier.compute_purchase_date(
+ product_supplier, supply_date)
+ self.assertEqual(date, purchase_date)
+ for purchase_date, lead_time, supply_date in DATES:
+ run(purchase_date, lead_time, supply_date)
+
+ def create_product_supplier(self, lead_time):
+ '''
+ Create a Product with a Product Supplier
+
+ :param lead_time: timedelta needed to supply
+ :return: the id of the Product Supplier
+ '''
+ pool = Pool()
+ Uom = pool.get('product.uom')
+ UomCategory = pool.get('product.uom.category')
+ Template = pool.get('product.template')
+ Product = pool.get('product.product')
+ Party = pool.get('party.party')
+ Account = pool.get('account.account')
+ ProductSupplier = pool.get('purchase.product_supplier')
+
+ uom_category, = UomCategory.create([{'name': 'Test'}])
+ uom, = Uom.create([{
+ 'name': 'Test',
+ 'symbol': 'T',
+ 'category': uom_category.id,
+ 'rate': 1.0,
+ 'factor': 1.0,
+ }])
+ template, = Template.create([{
+ 'name': 'ProductTest',
+ 'default_uom': uom.id,
+ }])
+ product, = Product.create([{
+ 'template': template.id,
+ }])
+ company = create_company()
+ with set_company(company):
+ create_chart(company)
+ receivable, = Account.search([
+ ('type.receivable', '=', True),
+ ('company', '=', company.id),
+ ])
+ payable, = Account.search([
+ ('type.payable', '=', True),
+ ('company', '=', company.id),
+ ])
+ supplier, = Party.create([{
+ 'name': 'supplier',
+ 'account_receivable': receivable.id,
+ 'account_payable': payable.id,
+ }])
+ product_supplier, = ProductSupplier.create([{
+ 'template': template.id,
+ 'company': company.id,
+ 'party': supplier.id,
+ 'lead_time': lead_time,
+ }])
+ return product_supplier
+
+ @with_transaction()
+ def test_order_point_location_searcher(self):
+ pool = Pool()
+ Uom = pool.get('product.uom')
+ Template = pool.get('product.template')
+ Product = pool.get('product.product')
+ Location = pool.get('stock.location')
+ OrderPoint = pool.get('stock.order_point')
+ unit, = Uom.search([('symbol', '=', 'u')])
+ template, = Template.create([{
+ 'name': 'ProductTest',
+ 'type': 'goods',
+ 'default_uom': unit.id,
+ 'purchase_uom': unit.id,
+ 'purchasable': True,
+ }])
+ product, = Product.create([{
+ 'template': template.id,
+ }])
+
+ warehouse, = Location.search([('type', '=', 'warehouse')])
+ storage, = Location.search([('code', '=', 'STO')])
+
+ company = create_company()
+ with set_company(company):
+ order_point, = OrderPoint.create([{
+ 'product': product.id,
+ 'type': 'purchase',
+ 'warehouse_location': warehouse.id,
+ 'min_quantity': 0.0,
+ 'target_quantity': 5.0,
+ }])
+
+ for clause, result in [
+ (('location', '=', warehouse.name), [order_point]),
+ (('location', '=', 'storage'), []),
+ (('location', '!=', warehouse.name), []),
+ (('location', '!=', 'storage'), [order_point]),
+ ]:
+ self.assertListEqual(
+ OrderPoint.search(clause), result, msg=clause)
+
+
+del ModuleTestCase
diff -r b2481df1c332 -r 84fa80a47db6 tests/test_scenario.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_scenario.py Sat Apr 16 18:30:20 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 b2481df1c332 -r 84fa80a47db6 tests/test_stock_supply.py
--- a/tests/test_stock_supply.py Tue Apr 12 10:35:40 2022 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +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 datetime
-import doctest
-import unittest
-from decimal import Decimal
-
-import trytond.tests.test_tryton
-from trytond.modules.account.tests import create_chart
-from trytond.modules.company.tests import (
- CompanyTestMixin, create_company, set_company)
-from trytond.pool import Pool
-from trytond.tests.test_tryton import (
- ModuleTestCase, doctest_checker, doctest_teardown, with_transaction)
-
-DATES = [
- # purchase date, lead time, supply date
- (datetime.date(2011, 11, 21), datetime.timedelta(10),
- datetime.date(2011, 12, 1)),
- (datetime.date(2011, 11, 21), datetime.timedelta(9),
- datetime.date(2011, 11, 30)),
- (datetime.date(2011, 11, 21), datetime.timedelta(8),
- datetime.date(2011, 11, 29)),
- (datetime.date(2011, 11, 21), datetime.timedelta(7),
- datetime.date(2011, 11, 28)),
- (datetime.date(2011, 11, 21), datetime.timedelta(6),
- datetime.date(2011, 11, 27)),
- (datetime.date(2011, 11, 21), datetime.timedelta(5),
- datetime.date(2011, 11, 26)),
- (datetime.date(2011, 11, 21), datetime.timedelta(4),
- datetime.date(2011, 11, 25)),
- ]
-
-
-class StockSupplyTestCase(CompanyTestMixin, ModuleTestCase):
- 'Test StockSupply module'
- module = 'stock_supply'
-
- def test_compute_supply_date(self):
- 'Test compute_supply_date'
- @with_transaction()
- def run(purchase_date, lead_time, supply_date):
- pool = Pool()
- ProductSupplier = pool.get('purchase.product_supplier')
- product_supplier = self.create_product_supplier(lead_time)
- date = ProductSupplier.compute_supply_date(
- product_supplier, purchase_date)
- self.assertEqual(date, supply_date)
- for purchase_date, lead_time, supply_date in DATES:
- run(purchase_date, lead_time, supply_date)
-
- def test_compute_purchase_date(self):
- 'Test compute_purchase_date'
- @with_transaction()
- def run(purchase_date, lead_time, supply_date):
- pool = Pool()
- ProductSupplier = pool.get('purchase.product_supplier')
- product_supplier = self.create_product_supplier(lead_time)
- date = ProductSupplier.compute_purchase_date(
- product_supplier, supply_date)
- self.assertEqual(date, purchase_date)
- for purchase_date, lead_time, supply_date in DATES:
- run(purchase_date, lead_time, supply_date)
-
- def create_product_supplier(self, lead_time):
- '''
- Create a Product with a Product Supplier
-
- :param lead_time: timedelta needed to supply
- :return: the id of the Product Supplier
- '''
- pool = Pool()
- Uom = pool.get('product.uom')
- UomCategory = pool.get('product.uom.category')
- Template = pool.get('product.template')
- Product = pool.get('product.product')
- Party = pool.get('party.party')
- Account = pool.get('account.account')
- ProductSupplier = pool.get('purchase.product_supplier')
-
- uom_category, = UomCategory.create([{'name': 'Test'}])
- uom, = Uom.create([{
- 'name': 'Test',
- 'symbol': 'T',
- 'category': uom_category.id,
- 'rate': 1.0,
- 'factor': 1.0,
- }])
- template, = Template.create([{
- 'name': 'ProductTest',
- 'default_uom': uom.id,
- }])
- product, = Product.create([{
- 'template': template.id,
- }])
- company = create_company()
- with set_company(company):
- create_chart(company)
- receivable, = Account.search([
- ('type.receivable', '=', True),
- ('company', '=', company.id),
- ])
- payable, = Account.search([
- ('type.payable', '=', True),
- ('company', '=', company.id),
- ])
- supplier, = Party.create([{
- 'name': 'supplier',
- 'account_receivable': receivable.id,
- 'account_payable': payable.id,
- }])
- product_supplier, = ProductSupplier.create([{
- 'template': template.id,
- 'company': company.id,
- 'party': supplier.id,
- 'lead_time': lead_time,
- }])
- return product_supplier
-
- @with_transaction()
- def test_order_point_location_searcher(self):
- pool = Pool()
- Uom = pool.get('product.uom')
- Template = pool.get('product.template')
- Product = pool.get('product.product')
- Location = pool.get('stock.location')
- OrderPoint = pool.get('stock.order_point')
- unit, = Uom.search([('symbol', '=', 'u')])
- template, = Template.create([{
- 'name': 'ProductTest',
- 'type': 'goods',
- 'default_uom': unit.id,
- 'purchase_uom': unit.id,
- 'purchasable': True,
- }])
- product, = Product.create([{
- 'template': template.id,
- }])
-
- warehouse, = Location.search([('type', '=', 'warehouse')])
- storage, = Location.search([('code', '=', 'STO')])
-
- company = create_company()
- with set_company(company):
- order_point, = OrderPoint.create([{
- 'product': product.id,
- 'type': 'purchase',
- 'warehouse_location': warehouse.id,
- 'min_quantity': 0.0,
- 'target_quantity': 5.0,
- }])
-
- for clause, result in [
- (('location', '=', warehouse.name), [order_point]),
- (('location', '=', 'storage'), []),
- (('location', '!=', warehouse.name), []),
- (('location', '!=', 'storage'), [order_point]),
- ]:
- self.assertListEqual(
- OrderPoint.search(clause), result, msg=clause)
-
-
-def suite():
- suite = trytond.tests.test_tryton.suite()
- suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
- StockSupplyTestCase))
- suite.addTests(doctest.DocFileSuite('scenario_stock_internal_supply.rst',
- tearDown=doctest_teardown, encoding='utf-8',
- checker=doctest_checker,
- optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
- suite.addTests(doctest.DocFileSuite(
- 'scenario_stock_internal_supply_lead_time.rst',
- tearDown=doctest_teardown, encoding='utf-8',
- checker=doctest_checker,
- optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
- suite.addTests(doctest.DocFileSuite(
- 'scenario_stock_supply_purchase_request.rst',
- tearDown=doctest_teardown, encoding='utf-8',
- checker=doctest_checker,
- optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
- suite.addTests(doctest.DocFileSuite(
- 'scenario_stock_internal_supply_overflow.rst',
- tearDown=doctest_teardown, encoding='utf-8',
- checker=doctest_checker,
- optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
- return suite
diff -r b2481df1c332 -r 84fa80a47db6 tox.ini
--- a/tox.ini Tue Apr 12 10:35:40 2022 +0200
+++ b/tox.ini Sat Apr 16 18:30:20 2022 +0200
@@ -2,8 +2,9 @@
envlist = {py37,py38,py39,py310}-{sqlite,postgresql}
[testenv]
+extras = test
commands =
- coverage run --include=.*/stock_supply/* setup.py test
+ coverage run --include=.*/stock_supply/* -m unittest discover -s tests
coverage report --include=.*/stock_supply/* --omit=*/tests/*
deps =
coverage