test_models.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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', document=self.doc)
  11. self.mailbox_service = Service.objects.create(
  12. name='Mailbox', document=self.doc)
  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()
  66. def test_real_shares(self):
  67. u1 = CostUse.objects.create(
  68. service=self.hosting_service,
  69. resource=self.datacenter_cost,
  70. share=0.4)
  71. u2 = CostUse.objects.create(
  72. service=self.hosting_service,
  73. resource=self.datacenter_cost,
  74. share=0.2)
  75. self.assertEqual(u1.real_share() + u2.real_share(), 1)
  76. self.assertEqual(u1.share/u2.share, u1.real_share()/u2.real_share())