changeset 35c710c02442 in modules/company:default
details: https://hg.tryton.org/modules/company?cmd=changeset&node=35c710c02442
description:
        Replace test setuptools command by unittest discover

        issue9215
        review389851002
diffstat:

 setup.py              |    2 -
 tests/__init__.py     |   14 +-
 tests/test_company.py |  306 --------------------------------------------------
 tests/test_module.py  |  300 +++++++++++++++++++++++++++++++++++++++++++++++++
 tox.ini               |    2 +-
 5 files changed, 305 insertions(+), 319 deletions(-)

diffs (659 lines):

diff -r 7e74cdfa4bbd -r 35c710c02442 setup.py
--- a/setup.py  Sun Apr 10 19:11:38 2022 +0200
+++ b/setup.py  Sat Apr 16 18:30:17 2022 +0200
@@ -149,6 +149,4 @@
     [trytond.modules]
     company = trytond.modules.company
     """,
-    test_suite='tests',
-    test_loader='trytond.test_loader:Loader',
     )
diff -r 7e74cdfa4bbd -r 35c710c02442 tests/__init__.py
--- a/tests/__init__.py Sun Apr 10 19:11:38 2022 +0200
+++ b/tests/__init__.py Sat Apr 16 18:30:17 2022 +0200
@@ -1,15 +1,9 @@
 # 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.company.tests.test_company import (
-        CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company,
-        create_employee, set_company, suite)
-except ImportError:
-    from .test_company import (
-        CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company,
-        create_employee, set_company, suite)
+from .test_module import (
+    CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company,
+    create_employee, set_company)
 
 __all__ = [
-    'suite', 'create_company', 'set_company', 'create_employee',
+    'create_company', 'set_company', 'create_employee',
     'PartyCompanyCheckEraseMixin', 'CompanyTestMixin']
diff -r 7e74cdfa4bbd -r 35c710c02442 tests/test_company.py
--- a/tests/test_company.py     Sun Apr 10 19:11:38 2022 +0200
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +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 unittest
-from collections import defaultdict
-from contextlib import contextmanager
-
-import trytond.tests.test_tryton
-from trytond.model import ModelStorage, ModelView
-from trytond.modules.currency.tests import add_currency_rate, create_currency
-from trytond.modules.party.tests import PartyCheckEraseMixin
-from trytond.pool import Pool, isregisteredby
-from trytond.pyson import Eval, PYSONEncoder
-from trytond.tests.test_tryton import ModuleTestCase, with_transaction
-from trytond.transaction import Transaction
-
-from ..model import CompanyMultiValueMixin
-
-
-def create_company(name='Dunder Mifflin', currency=None):
-    pool = Pool()
-    Party = pool.get('party.party')
-    Company = pool.get('company.company')
-
-    if currency is None:
-        currency = create_currency('usd')
-        add_currency_rate(currency, 1)
-
-    party, = Party.create([{
-                'name': name,
-                'addresses': [('create', [{}])],
-                }])
-    company = Company(party=party, currency=currency)
-    company.save()
-    return company
-
-
-def create_employee(company, name="Pam Beesly"):
-    pool = Pool()
-    Party = pool.get('party.party')
-    Employee = pool.get('company.employee')
-
-    party, = Party.create([{
-                'name': name,
-                'addresses': [('create', [{}])],
-                }])
-    employee = Employee(party=party, company=company)
-    employee.save()
-    return employee
-
-
-@contextmanager
-def set_company(company):
-    pool = Pool()
-    User = pool.get('res.user')
-    User.write([User(Transaction().user)], {
-            'companies': [('add', [company.id])],
-            'company': company.id,
-                })
-    with Transaction().set_context(User.get_preferences(context_only=True)):
-        yield
-
-
-class PartyCompanyCheckEraseMixin(PartyCheckEraseMixin):
-
-    def setup_check_erase_party(self):
-        create_company()
-        return super().setup_check_erase_party()
-
-
-class CompanyTestMixin:
-
-    @with_transaction()
-    def test_company_multivalue_context(self):
-        "Test context of company multivalue target"
-        pool = Pool()
-        Company = pool.get('company.company')
-        for mname, model in pool.iterobject():
-            if (not isregisteredby(model, self.module)
-                    or issubclass(model, Company)):
-                continue
-            company = None
-            for fname, field in model._fields.items():
-                if (field._type == 'many2one'
-                        and issubclass(field.get_target(), Company)):
-                    company = fname
-                    break
-            else:
-                continue
-            for fname, field in model._fields.items():
-                if not hasattr(field, 'get_target'):
-                    continue
-                Target = field.get_target()
-                if not issubclass(Target, CompanyMultiValueMixin):
-                    continue
-                if company in model._fields:
-                    self.assertIn(
-                        'company', list(field.context.keys()),
-                        msg="Missing '%s' value as company "
-                        'in "%s"."%s" context' % (
-                            company, mname, fname))
-
-    @with_transaction()
-    def test_company_rule(self):
-        "Test missing company rule"
-        pool = Pool()
-        Rule = pool.get('ir.rule')
-        Company = pool.get('company.company')
-        Employee = pool.get('company.employee')
-        User = pool.get('res.user')
-
-        to_check = defaultdict(set)
-        for mname, model in pool.iterobject():
-            if (not isregisteredby(model, self.module)
-                    or model.__access__
-                    or not (issubclass(model, ModelView)
-                        and issubclass(model, ModelStorage))
-                    or issubclass(model, (Company, Employee, User))):
-                continue
-            for fname, field in model._fields.items():
-                if (field._type == 'many2one'
-                        and issubclass(field.get_target(), Company)):
-                    to_check[fname].add(mname)
-
-        for fname, models in to_check.items():
-            rules = Rule.search([
-                    ('rule_group', 'where', [
-                            ('model.model', 'in', list(models)),
-                            ('global_p', '=', True),
-                            ('perm_read', '=', True),
-                            ]),
-                    ('domain', '=', PYSONEncoder(sort_keys=True).encode(
-                            [(fname, 'in', Eval('companies', []))])),
-                    ])
-            with_rules = {r.rule_group.model.model for r in rules}
-            self.assertGreaterEqual(with_rules, models,
-                msg='Models "%(models)s" are missing a global rule '
-                'for field "%(field)s"' % {
-                    'models': ', '.join(models - with_rules),
-                    'field': fname,
-                    })
-
-
-class CompanyTestCase(
-        PartyCompanyCheckEraseMixin, CompanyTestMixin, ModuleTestCase):
-    'Test Company module'
-    module = 'company'
-
-    @with_transaction()
-    def test_company(self):
-        'Create company'
-        company = create_company()
-        self.assertTrue(company)
-
-    @with_transaction()
-    def test_employe(self):
-        'Create employee'
-        pool = Pool()
-        Party = pool.get('party.party')
-        Employee = pool.get('company.employee')
-        company1 = create_company()
-
-        party, = Party.create([{
-                    'name': 'Pam Beesly',
-                    }])
-        employee, = Employee.create([{
-                    'party': party.id,
-                    'company': company1.id,
-                    }])
-        self.assertTrue(employee)
-
-    @with_transaction()
-    def test_user_company(self):
-        'Test user company'
-        pool = Pool()
-        User = pool.get('res.user')
-        transaction = Transaction()
-
-        company1 = create_company()
-        company2 = create_company('Michael Scott Paper Company',
-            currency=company1.currency)
-        company2.save()
-        company3 = create_company()
-
-        user1, user2 = User.create([{
-                    'name': 'Jim Halper',
-                    'login': 'jim',
-                    'companies': [('add', [company1.id, company2.id])],
-                    'company': company1.id,
-                    }, {
-                    'name': 'Pam Beesly',
-                    'login': 'pam',
-                    'companies': [('add', [company2.id])],
-                    'company': company2.id,
-                    }])
-        self.assertTrue(user1)
-
-        with transaction.set_user(user1.id):
-            user1, user2 = User.browse([user1.id, user2.id])
-            self.assertEqual(user1.company, company1)
-            self.assertEqual(user2.company, company2)
-
-            with transaction.set_context({'company': company2.id}):
-                user1, user2 = User.browse([user1.id, user2.id])
-                self.assertEqual(user1.company, company2)
-                self.assertEqual(user2.company, company2)
-
-            with transaction.set_context({'company': None}):
-                user1, user2 = User.browse([user1.id, user2.id])
-                self.assertEqual(user1.company, None)
-                self.assertEqual(user2.company, company2)
-
-            with transaction.set_context(company=company3.id):
-                user1, user2 = User.browse([user1.id, user2.id])
-                self.assertEqual(user1.company, company1)
-                self.assertEqual(user2.company, company2)
-
-    @with_transaction()
-    def test_user_root_company(self):
-        "Test root user company"
-        pool = Pool()
-        User = pool.get('res.user')
-        transaction = Transaction()
-        company = create_company()
-        root = User(0)
-        root.company = None
-        root.companies = None
-        root.save()
-
-        with transaction.set_user(0):
-            with Transaction().set_context(company=company.id):
-                root = User(0)
-                self.assertEqual(root.company, company)
-
-    @with_transaction()
-    def test_user_employee(self):
-        "Test user employee"
-        pool = Pool()
-        User = pool.get('res.user')
-        transaction = Transaction()
-
-        company = create_company()
-
-        employee1 = create_employee(company, "Jim Halper")
-        employee2 = create_employee(company, "Pam Bessly")
-        employee3 = create_employee(company, "Michael Scott")
-
-        user1, user2 = User.create([{
-                    'name': "Jim Halper",
-                    'login': "jim",
-                    'companies': [('add', [company.id])],
-                    'company': company.id,
-                    'employees': [('add', [employee1.id, employee2.id])],
-                    'employee': employee1.id,
-                    }, {
-                    'name': "Pam Beesly",
-                    'login': "pam",
-                    'companies': [('add', [company.id])],
-                    'company': company.id,
-                    'employees': [('add', [employee2.id])],
-                    'employee': employee2.id,
-                    }])
-
-        with transaction.set_user(user1.id):
-            user1, user2 = User.browse([user1.id, user2.id])
-            self.assertEqual(user1.employee, employee1)
-            self.assertEqual(user2.employee, employee2)
-
-            with transaction.set_context(employee=employee2.id):
-                user1, user2 = User.browse([user1.id, user2.id])
-                self.assertEqual(user1.employee, employee2)
-                self.assertEqual(user2.employee, employee2)
-
-            with transaction.set_context(employee=None):
-                user1, user2 = User.browse([user1.id, user2.id])
-                self.assertEqual(user1.employee, None)
-                self.assertEqual(user2.employee, employee2)
-
-            with transaction.set_context(employee=employee3.id):
-                user1, user2 = User.browse([user1.id, user2.id])
-                self.assertEqual(user1.employee, employee1)
-                self.assertEqual(user2.employee, employee2)
-
-    @with_transaction()
-    def test_user_root_employee(self):
-        "Test root user employee"
-        pool = Pool()
-        User = pool.get('res.user')
-        transaction = Transaction()
-        company = create_company()
-        employee = create_employee(company, "Jim Halper")
-        root = User(0)
-        root.employee = None
-        root.employees = None
-        root.save()
-
-        with transaction.set_user(0):
-            with Transaction().set_context(employee=employee.id):
-                root = User(0)
-                self.assertEqual(root.employee, employee)
-
-
-def suite():
-    suite = trytond.tests.test_tryton.suite()
-    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
-            CompanyTestCase))
-    return suite
diff -r 7e74cdfa4bbd -r 35c710c02442 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,300 @@
+# 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 collections import defaultdict
+from contextlib import contextmanager
+
+from trytond.model import ModelStorage, ModelView
+from trytond.modules.company.model import CompanyMultiValueMixin
+from trytond.modules.currency.tests import add_currency_rate, create_currency
+from trytond.modules.party.tests import PartyCheckEraseMixin
+from trytond.pool import Pool, isregisteredby
+from trytond.pyson import Eval, PYSONEncoder
+from trytond.tests.test_tryton import ModuleTestCase, with_transaction
+from trytond.transaction import Transaction
+
+
+def create_company(name='Dunder Mifflin', currency=None):
+    pool = Pool()
+    Party = pool.get('party.party')
+    Company = pool.get('company.company')
+
+    if currency is None:
+        currency = create_currency('usd')
+        add_currency_rate(currency, 1)
+
+    party, = Party.create([{
+                'name': name,
+                'addresses': [('create', [{}])],
+                }])
+    company = Company(party=party, currency=currency)
+    company.save()
+    return company
+
+
+def create_employee(company, name="Pam Beesly"):
+    pool = Pool()
+    Party = pool.get('party.party')
+    Employee = pool.get('company.employee')
+
+    party, = Party.create([{
+                'name': name,
+                'addresses': [('create', [{}])],
+                }])
+    employee = Employee(party=party, company=company)
+    employee.save()
+    return employee
+
+
+@contextmanager
+def set_company(company):
+    pool = Pool()
+    User = pool.get('res.user')
+    User.write([User(Transaction().user)], {
+            'companies': [('add', [company.id])],
+            'company': company.id,
+                })
+    with Transaction().set_context(User.get_preferences(context_only=True)):
+        yield
+
+
+class PartyCompanyCheckEraseMixin(PartyCheckEraseMixin):
+
+    def setup_check_erase_party(self):
+        create_company()
+        return super().setup_check_erase_party()
+
+
+class CompanyTestMixin:
+
+    @with_transaction()
+    def test_company_multivalue_context(self):
+        "Test context of company multivalue target"
+        pool = Pool()
+        Company = pool.get('company.company')
+        for mname, model in pool.iterobject():
+            if (not isregisteredby(model, self.module)
+                    or issubclass(model, Company)):
+                continue
+            company = None
+            for fname, field in model._fields.items():
+                if (field._type == 'many2one'
+                        and issubclass(field.get_target(), Company)):
+                    company = fname
+                    break
+            else:
+                continue
+            for fname, field in model._fields.items():
+                if not hasattr(field, 'get_target'):
+                    continue
+                Target = field.get_target()
+                if not issubclass(Target, CompanyMultiValueMixin):
+                    continue
+                if company in model._fields:
+                    self.assertIn(
+                        'company', list(field.context.keys()),
+                        msg="Missing '%s' value as company "
+                        'in "%s"."%s" context' % (
+                            company, mname, fname))
+
+    @with_transaction()
+    def test_company_rule(self):
+        "Test missing company rule"
+        pool = Pool()
+        Rule = pool.get('ir.rule')
+        Company = pool.get('company.company')
+        Employee = pool.get('company.employee')
+        User = pool.get('res.user')
+
+        to_check = defaultdict(set)
+        for mname, model in pool.iterobject():
+            if (not isregisteredby(model, self.module)
+                    or model.__access__
+                    or not (issubclass(model, ModelView)
+                        and issubclass(model, ModelStorage))
+                    or issubclass(model, (Company, Employee, User))):
+                continue
+            for fname, field in model._fields.items():
+                if (field._type == 'many2one'
+                        and issubclass(field.get_target(), Company)):
+                    to_check[fname].add(mname)
+
+        for fname, models in to_check.items():
+            rules = Rule.search([
+                    ('rule_group', 'where', [
+                            ('model.model', 'in', list(models)),
+                            ('global_p', '=', True),
+                            ('perm_read', '=', True),
+                            ]),
+                    ('domain', '=', PYSONEncoder(sort_keys=True).encode(
+                            [(fname, 'in', Eval('companies', []))])),
+                    ])
+            with_rules = {r.rule_group.model.model for r in rules}
+            self.assertGreaterEqual(with_rules, models,
+                msg='Models "%(models)s" are missing a global rule '
+                'for field "%(field)s"' % {
+                    'models': ', '.join(models - with_rules),
+                    'field': fname,
+                    })
+
+
+class CompanyTestCase(
+        PartyCompanyCheckEraseMixin, CompanyTestMixin, ModuleTestCase):
+    'Test Company module'
+    module = 'company'
+
+    @with_transaction()
+    def test_company(self):
+        'Create company'
+        company = create_company()
+        self.assertTrue(company)
+
+    @with_transaction()
+    def test_employe(self):
+        'Create employee'
+        pool = Pool()
+        Party = pool.get('party.party')
+        Employee = pool.get('company.employee')
+        company1 = create_company()
+
+        party, = Party.create([{
+                    'name': 'Pam Beesly',
+                    }])
+        employee, = Employee.create([{
+                    'party': party.id,
+                    'company': company1.id,
+                    }])
+        self.assertTrue(employee)
+
+    @with_transaction()
+    def test_user_company(self):
+        'Test user company'
+        pool = Pool()
+        User = pool.get('res.user')
+        transaction = Transaction()
+
+        company1 = create_company()
+        company2 = create_company('Michael Scott Paper Company',
+            currency=company1.currency)
+        company2.save()
+        company3 = create_company()
+
+        user1, user2 = User.create([{
+                    'name': 'Jim Halper',
+                    'login': 'jim',
+                    'companies': [('add', [company1.id, company2.id])],
+                    'company': company1.id,
+                    }, {
+                    'name': 'Pam Beesly',
+                    'login': 'pam',
+                    'companies': [('add', [company2.id])],
+                    'company': company2.id,
+                    }])
+        self.assertTrue(user1)
+
+        with transaction.set_user(user1.id):
+            user1, user2 = User.browse([user1.id, user2.id])
+            self.assertEqual(user1.company, company1)
+            self.assertEqual(user2.company, company2)
+
+            with transaction.set_context({'company': company2.id}):
+                user1, user2 = User.browse([user1.id, user2.id])
+                self.assertEqual(user1.company, company2)
+                self.assertEqual(user2.company, company2)
+
+            with transaction.set_context({'company': None}):
+                user1, user2 = User.browse([user1.id, user2.id])
+                self.assertEqual(user1.company, None)
+                self.assertEqual(user2.company, company2)
+
+            with transaction.set_context(company=company3.id):
+                user1, user2 = User.browse([user1.id, user2.id])
+                self.assertEqual(user1.company, company1)
+                self.assertEqual(user2.company, company2)
+
+    @with_transaction()
+    def test_user_root_company(self):
+        "Test root user company"
+        pool = Pool()
+        User = pool.get('res.user')
+        transaction = Transaction()
+        company = create_company()
+        root = User(0)
+        root.company = None
+        root.companies = None
+        root.save()
+
+        with transaction.set_user(0):
+            with Transaction().set_context(company=company.id):
+                root = User(0)
+                self.assertEqual(root.company, company)
+
+    @with_transaction()
+    def test_user_employee(self):
+        "Test user employee"
+        pool = Pool()
+        User = pool.get('res.user')
+        transaction = Transaction()
+
+        company = create_company()
+
+        employee1 = create_employee(company, "Jim Halper")
+        employee2 = create_employee(company, "Pam Bessly")
+        employee3 = create_employee(company, "Michael Scott")
+
+        user1, user2 = User.create([{
+                    'name': "Jim Halper",
+                    'login': "jim",
+                    'companies': [('add', [company.id])],
+                    'company': company.id,
+                    'employees': [('add', [employee1.id, employee2.id])],
+                    'employee': employee1.id,
+                    }, {
+                    'name': "Pam Beesly",
+                    'login': "pam",
+                    'companies': [('add', [company.id])],
+                    'company': company.id,
+                    'employees': [('add', [employee2.id])],
+                    'employee': employee2.id,
+                    }])
+
+        with transaction.set_user(user1.id):
+            user1, user2 = User.browse([user1.id, user2.id])
+            self.assertEqual(user1.employee, employee1)
+            self.assertEqual(user2.employee, employee2)
+
+            with transaction.set_context(employee=employee2.id):
+                user1, user2 = User.browse([user1.id, user2.id])
+                self.assertEqual(user1.employee, employee2)
+                self.assertEqual(user2.employee, employee2)
+
+            with transaction.set_context(employee=None):
+                user1, user2 = User.browse([user1.id, user2.id])
+                self.assertEqual(user1.employee, None)
+                self.assertEqual(user2.employee, employee2)
+
+            with transaction.set_context(employee=employee3.id):
+                user1, user2 = User.browse([user1.id, user2.id])
+                self.assertEqual(user1.employee, employee1)
+                self.assertEqual(user2.employee, employee2)
+
+    @with_transaction()
+    def test_user_root_employee(self):
+        "Test root user employee"
+        pool = Pool()
+        User = pool.get('res.user')
+        transaction = Transaction()
+        company = create_company()
+        employee = create_employee(company, "Jim Halper")
+        root = User(0)
+        root.employee = None
+        root.employees = None
+        root.save()
+
+        with transaction.set_user(0):
+            with Transaction().set_context(employee=employee.id):
+                root = User(0)
+                self.assertEqual(root.employee, employee)
+
+
+del ModuleTestCase
diff -r 7e74cdfa4bbd -r 35c710c02442 tox.ini
--- a/tox.ini   Sun Apr 10 19:11:38 2022 +0200
+++ b/tox.ini   Sat Apr 16 18:30:17 2022 +0200
@@ -3,7 +3,7 @@
 
 [testenv]
 commands =
-    coverage run --include=.*/company/* setup.py test
+    coverage run --include=.*/company/* -m unittest discover -s tests
     coverage report --include=.*/company/* --omit=*/tests/*
 deps =
     coverage

Reply via email to