test_models.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import unittest
  2. from datetime import datetime, timedelta
  3. from celery.models import TaskMeta
  4. from celery.utils import gen_unique_id
  5. class TestModels(unittest.TestCase):
  6. def createTaskMeta(self):
  7. id = gen_unique_id()
  8. taskmeta, created = TaskMeta.objects.get_or_create(task_id=id)
  9. return taskmeta
  10. def test_taskmeta(self):
  11. m1 = self.createTaskMeta()
  12. m2 = self.createTaskMeta()
  13. m3 = self.createTaskMeta()
  14. self.assertTrue(unicode(m1).startswith("<Task:"))
  15. self.assertTrue(m1.task_id)
  16. self.assertTrue(isinstance(m1.date_done, datetime))
  17. self.assertEquals(TaskMeta.objects.get_task(m1.task_id).task_id,
  18. m1.task_id)
  19. self.assertFalse(TaskMeta.objects.is_successful(m1.task_id))
  20. TaskMeta.objects.store_result(m1.task_id, True, status="SUCCESS")
  21. TaskMeta.objects.store_result(m2.task_id, True, status="SUCCESS")
  22. self.assertTrue(TaskMeta.objects.is_successful(m1.task_id))
  23. self.assertTrue(TaskMeta.objects.is_successful(m2.task_id))
  24. # Have to avoid save() because it applies the auto_now=True.
  25. TaskMeta.objects.filter(task_id=m1.task_id).update(
  26. date_done=datetime.now() - timedelta(days=10))
  27. expired = TaskMeta.objects.get_all_expired()
  28. self.assertTrue(m1 in expired)
  29. self.assertFalse(m2 in expired)
  30. self.assertFalse(m3 in expired)
  31. TaskMeta.objects.delete_expired()
  32. self.assertFalse(m1 in TaskMeta.objects.all())