Пример #1
0
 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))
Пример #2
0
 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))