test_models.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. from django.test import TestCase
  2. from django.core.exceptions import ValidationError
  3. from ..models import Service, Cost, CostUse, Document
  4. class AbstractUseTests(TestCase):
  5. """ Testing AbstractUseTests through CostUse
  6. """
  7. def setUp(self):
  8. self.doc = Document.objects.create(name='budget')
  9. self.hosting_service = Service.objects.create(
  10. name='Physical hosting')
  11. self.mailbox_service = Service.objects.create(
  12. name='Mailbox')
  13. self.datacenter_cost = Cost.objects.create(
  14. name='Datacenter', price=100, document=self.doc)
  15. def test_can_add_service_share(self):
  16. use = CostUse(
  17. service=self.hosting_service,
  18. resource=self.datacenter_cost,
  19. share=0.4)
  20. use.full_clean()
  21. use.save()
  22. def test_cannot_add_excess_share_one(self):
  23. use = CostUse(
  24. service=self.hosting_service,
  25. resource=self.datacenter_cost,
  26. share=1.1)
  27. with self.assertRaises(ValidationError):
  28. use.full_clean()
  29. use.save()
  30. def test_add_several_service_share(self):
  31. u1 = CostUse(
  32. service=self.hosting_service,
  33. resource=self.datacenter_cost,
  34. share=0.4)
  35. u1.full_clean()
  36. u1.save()
  37. u2 = CostUse(
  38. service=self.mailbox_service,
  39. resource=self.datacenter_cost,
  40. share=0.6)
  41. u2.full_clean()
  42. u2.save()
  43. def test_add_several_service_share_excessive_sum(self):
  44. u1 = CostUse(
  45. service=self.hosting_service,
  46. resource=self.datacenter_cost,
  47. share=0.5)
  48. u1.full_clean()
  49. u1.save()
  50. u2 = CostUse(
  51. service=self.mailbox_service,
  52. resource=self.datacenter_cost,
  53. share=0.6)
  54. with self.assertRaises(ValidationError):
  55. u2.full_clean()
  56. u2.save()
  57. def test_modify_service_share_no_error(self):
  58. u1 = CostUse(
  59. service=self.hosting_service,
  60. resource=self.datacenter_cost,
  61. share=1)
  62. u1.full_clean()
  63. u1.save()
  64. u1.full_clean()
  65. u1.save()