def test_depends(self): 'Test for missing depends' for mname, model in Pool().iterobject(): if not isregisteredby(model, self.module): continue for fname, field in model._fields.items(): fields = set() fields |= get_eval_fields(field.domain) if hasattr(field, 'digits'): fields |= get_eval_fields(field.digits) if hasattr(field, 'add_remove'): fields |= get_eval_fields(field.add_remove) if hasattr(field, 'size'): fields |= get_eval_fields(field.size) fields.discard(fname) fields.discard('context') fields.discard('_user') depends = set(field.depends) assert fields <= depends, ( 'Missing depends %s in "%s"."%s"' % (list(fields - depends), mname, fname)) assert depends <= set(model._fields), ( 'Unknown depends %s in "%s"."%s"' % (list(depends - set(model._fields)), mname, fname)) if issubclass(model, ModelView): for bname, button in model._buttons.items(): depends = set(button.get('depends', [])) assert depends <= set(model._fields), ( 'Unknown depends %s in button "%s"."%s"' % (list(depends - set(model._fields)), mname, bname))
def test_missing_depends(self): 'Test for missing depends' for mname, model in Pool().iterobject(): if not isregisteredby(model, self.module): continue for fname, field in model._fields.items(): fields = set() fields |= get_eval_fields(field.domain) if hasattr(field, 'digits'): fields |= get_eval_fields(field.digits) if hasattr(field, 'add_remove'): fields |= get_eval_fields(field.add_remove) if hasattr(field, 'size'): fields |= get_eval_fields(field.size) fields.discard(fname) fields.discard('context') fields.discard('_user') # XXX PR https://github.com/coopengo/coog/pull/3458 implies # that parent fields are added to depends. depends = set(d for d in field.depends if not d.startswith('_parent')) self.assertLessEqual(fields, depends, msg='Missing depends %s in "%s"."%s"' % (list(fields - depends), mname, fname)) self.assertLessEqual( depends, set(model._fields), msg='Unknown depends %s in "%s"."%s"' % (list(depends - set(model._fields)), mname, fname)) if issubclass(model, ModelView): for bname, button in model._buttons.items(): depends = set(button.get('depends', [])) self.assertLessEqual( depends, set(model._fields), msg='Unknown depends %s in button "%s"."%s"' % (list(depends - set(model._fields)), mname, bname))