Ejemplo n.º 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))
Ejemplo n.º 2
0
 def test_depends(self):
     'Test for missing depends'
     with Transaction().start(DB_NAME, USER, context=CONTEXT):
         for mname, model in Pool().iterobject():
             # Don't test model not registered by the module
             if not any(issubclass(model, cls) for cls in
                     Pool().classes['model'].get(self.module, [])):
                 continue
             for fname, field in model._fields.iteritems():
                 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)
                 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))
Ejemplo n.º 3
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.iteritems():
             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)
             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))
Ejemplo n.º 4
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))
Ejemplo n.º 5
0
 def test_get_eval_fields(self):
     "Test get_eval_fields"
     for value, result in [
         ('test', set()),
         (Eval('foo'), {'foo'}),
         (Eval('_parent_foo'), {'foo'}),
         (Eval('foo.bar'), {'foo'}),
         ([Eval('foo'), Eval('bar')], {'foo', 'bar'}),
         ((Eval('foo'), Eval('bar')), {'foo', 'bar'}),
         ({
             'foo': Eval('bar')
         }, {'bar'}),
         (If(Eval('foo'), Eval('bar'), Eval('baz')), {'foo', 'bar', 'baz'}),
     ]:
         with self.subTest(value=value):
             self.assertEqual(fields.get_eval_fields(value), result)