diff --git a/CHANGELOG b/CHANGELOG index de95cb0d63..261c16f995 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Add test for function field methods * Add option install module dependencies with trytond-admin * Add localhost_name and timeout as get_smtp_server uri parameters * Delete missing modules not activated when updating module list diff --git a/trytond/tests/test_tryton.py b/trytond/tests/test_tryton.py index ff6f90b032..942f1429cb 100644 --- a/trytond/tests/test_tryton.py +++ b/trytond/tests/test_tryton.py @@ -17,7 +17,7 @@ from sql import Table from trytond.pool import Pool, isregisteredby from trytond import backend from trytond.model import Workflow -from trytond.model.fields import get_eval_fields +from trytond.model.fields import get_eval_fields, Function from trytond.tools import is_instance_method from trytond.transaction import Transaction from trytond.cache import Cache @@ -435,6 +435,26 @@ class ModuleTestCase(unittest.TestCase): 'model': model.__name__, }) + @with_transaction() + def test_function_fields(self): + "Test function fields methods" + for mname, model in Pool().iterobject(): + if not isregisteredby(model, self.module): + continue + for field_name, field in model._fields.iteritems(): + if not isinstance(field, Function): + continue + for func_name in [field.getter, field.setter, field.searcher]: + if not func_name: + continue + assert getattr(model, func_name, None), ( + "Missing method '%(func_name)s' " + "on model '%(model)s' for field '%(field)s" % { + 'func_name': func_name, + 'model': model.__name__, + 'field': field_name, + }) + @with_transaction() def test_ir_action_window(self): 'Test action windows are correctly defined'