test_annotations.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from __future__ import absolute_import, unicode_literals
  2. from celery.app.annotations import MapAnnotation, prepare
  3. from celery.utils.imports import qualname
  4. from celery.tests.case import AppCase
  5. class MyAnnotation(object):
  6. foo = 65
  7. class AnnotationCase(AppCase):
  8. def setup(self):
  9. @self.app.task(shared=False)
  10. def add(x, y):
  11. return x + y
  12. self.add = add
  13. @self.app.task(shared=False)
  14. def mul(x, y):
  15. return x * y
  16. self.mul = mul
  17. class test_MapAnnotation(AnnotationCase):
  18. def test_annotate(self):
  19. x = MapAnnotation({self.add.name: {'foo': 1}})
  20. self.assertDictEqual(x.annotate(self.add), {'foo': 1})
  21. self.assertIsNone(x.annotate(self.mul))
  22. def test_annotate_any(self):
  23. x = MapAnnotation({'*': {'foo': 2}})
  24. self.assertDictEqual(x.annotate_any(), {'foo': 2})
  25. x = MapAnnotation()
  26. self.assertIsNone(x.annotate_any())
  27. class test_prepare(AnnotationCase):
  28. def test_dict_to_MapAnnotation(self):
  29. x = prepare({self.add.name: {'foo': 3}})
  30. self.assertIsInstance(x[0], MapAnnotation)
  31. def test_returns_list(self):
  32. self.assertListEqual(prepare(1), [1])
  33. self.assertListEqual(prepare([1]), [1])
  34. self.assertListEqual(prepare((1,)), [1])
  35. self.assertEqual(prepare(None), ())
  36. def test_evalutes_qualnames(self):
  37. self.assertEqual(prepare(qualname(MyAnnotation))[0]().foo, 65)
  38. self.assertEqual(prepare([qualname(MyAnnotation)])[0]().foo, 65)