test_ops.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # coding: utf-8
  2. from __future__ import print_function
  3. from __future__ import absolute_import
  4. from __future__ import division
  5. from __future__ import unicode_literals
  6. from django.test import TestCase
  7. from django.utils.timezone import now
  8. from django.core import mail
  9. from backend import const
  10. from backend import models as bmodels
  11. from process import models as pmodels
  12. from process import ops as pops
  13. from .common import ProcessFixtureMixin
  14. class TestOps(ProcessFixtureMixin, TestCase):
  15. @classmethod
  16. def setUpClass(cls):
  17. super(TestOps, cls).setUpClass()
  18. cls.persons.create("app", status=const.STATUS_DC)
  19. cls.processes.create("app", person=cls.persons.app, applying_for=const.STATUS_DD_U, fd_comment="test")
  20. cls.now = now()
  21. def test_close_process_dm(self):
  22. self.processes.app.applying_for = const.STATUS_DM
  23. self.processes.app.save()
  24. op = pops.CloseProcess(audit_author=self.persons.dam,
  25. audit_notes="audit_closed",
  26. process=self.processes.app,
  27. logtext="closed",
  28. logdate=self.now)
  29. op.execute()
  30. self.persons.app.refresh_from_db()
  31. self.processes.app.refresh_from_db()
  32. self.assertEqual(self.persons.app.status, const.STATUS_DM)
  33. self.assertEqual(self.persons.app.status_changed, self.now)
  34. self.assertEqual(self.processes.app.closed, self.now)
  35. self.assertEqual(len(mail.outbox), 0)
  36. def test_close_process_dd_nu(self):
  37. self.processes.app.applying_for = const.STATUS_DD_NU
  38. self.processes.app.save()
  39. op = pops.CloseProcess(audit_author=self.persons.dam,
  40. audit_notes="audit_closed",
  41. process=self.processes.app,
  42. logtext="closed",
  43. logdate=self.now)
  44. op.execute()
  45. self.persons.app.refresh_from_db()
  46. self.processes.app.refresh_from_db()
  47. self.assertEqual(self.persons.app.status, const.STATUS_DD_NU)
  48. self.assertEqual(self.persons.app.status_changed, self.now)
  49. self.assertEqual(self.processes.app.closed, self.now)
  50. self.assertEqual(len(mail.outbox), 1)
  51. self.assertEqual(mail.outbox[0].to, ["leader@debian.org"])
  52. def test_close_process_dd_u(self):
  53. self.processes.app.applying_for = const.STATUS_DD_U
  54. self.processes.app.save()
  55. op = pops.CloseProcess(audit_author=self.persons.dam,
  56. audit_notes="audit_closed",
  57. process=self.processes.app,
  58. logtext="closed",
  59. logdate=self.now)
  60. op.execute()
  61. self.persons.app.refresh_from_db()
  62. self.processes.app.refresh_from_db()
  63. self.assertEqual(self.persons.app.status, const.STATUS_DD_U)
  64. self.assertEqual(self.persons.app.status_changed, self.now)
  65. self.assertEqual(self.processes.app.closed, self.now)
  66. self.assertEqual(len(mail.outbox), 1)
  67. self.assertEqual(mail.outbox[0].to, ["leader@debian.org"])