|
@@ -14,23 +14,45 @@ class AbstractUseTests(TestCase):
|
|
|
self.mailbox_service = Service.objects.create(
|
|
|
name='Mailbox', document=self.doc)
|
|
|
|
|
|
- self.datacenter_cost = Cost.objects.create(
|
|
|
- name='Datacenter', price=100, document=self.doc)
|
|
|
+ self.electricity_cost = Cost.objects.create(
|
|
|
+ name='electricity',
|
|
|
+ price=10,
|
|
|
+ document=self.doc,
|
|
|
+ capacity_unit='A',
|
|
|
+ total_capacity=4,
|
|
|
+ )
|
|
|
|
|
|
def test_can_add_service_share(self):
|
|
|
use = CostUse(
|
|
|
service=self.hosting_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
+ resource=self.electricity_cost,
|
|
|
share=0.4)
|
|
|
|
|
|
use.full_clean()
|
|
|
use.save()
|
|
|
|
|
|
+ def test_can_add_service_share_with_custom_unity(self):
|
|
|
+ use = CostUse(
|
|
|
+ service=self.hosting_service,
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=2) # means 2 Amps
|
|
|
+
|
|
|
+ self.hosting_service.subscriptions_count = 2
|
|
|
+ self.hosting_service.save()
|
|
|
+
|
|
|
+ use.full_clean()
|
|
|
+ use.save()
|
|
|
+
|
|
|
+ self.assertEqual(use.share, 2.0)
|
|
|
+ self.assertEqual(use.real_share(), 4.0)
|
|
|
+ self.assertEqual(use.cost_share(), 10)
|
|
|
+ self.assertEqual(use.unit_cost_share(), 5)
|
|
|
+
|
|
|
def test_cannot_add_excess_share_one(self):
|
|
|
use = CostUse(
|
|
|
service=self.hosting_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
- share=1.1)
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=40.1)
|
|
|
|
|
|
with self.assertRaises(ValidationError):
|
|
|
use.full_clean()
|
|
@@ -39,7 +61,7 @@ class AbstractUseTests(TestCase):
|
|
|
def test_add_several_service_share(self):
|
|
|
u1 = CostUse(
|
|
|
service=self.hosting_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
+ resource=self.electricity_cost,
|
|
|
share=0.4)
|
|
|
|
|
|
u1.full_clean()
|
|
@@ -47,7 +69,7 @@ class AbstractUseTests(TestCase):
|
|
|
|
|
|
u2 = CostUse(
|
|
|
service=self.mailbox_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
+ resource=self.electricity_cost,
|
|
|
share=0.6)
|
|
|
|
|
|
u2.full_clean()
|
|
@@ -56,16 +78,18 @@ class AbstractUseTests(TestCase):
|
|
|
def test_add_several_service_share_excessive_sum(self):
|
|
|
u1 = CostUse(
|
|
|
service=self.hosting_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
- share=0.5)
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=3)
|
|
|
|
|
|
u1.full_clean()
|
|
|
u1.save()
|
|
|
|
|
|
u2 = CostUse(
|
|
|
service=self.mailbox_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
- share=0.6)
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=1.1)
|
|
|
+
|
|
|
+ # Would be 4.1 out of 4 amp...
|
|
|
|
|
|
with self.assertRaises(ValidationError):
|
|
|
u2.full_clean()
|
|
@@ -74,7 +98,7 @@ class AbstractUseTests(TestCase):
|
|
|
def test_modify_service_share_no_error(self):
|
|
|
u1 = CostUse(
|
|
|
service=self.hosting_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
+ resource=self.electricity_cost,
|
|
|
share=1)
|
|
|
|
|
|
u1.full_clean()
|
|
@@ -85,12 +109,46 @@ class AbstractUseTests(TestCase):
|
|
|
def test_real_shares(self):
|
|
|
u1 = CostUse.objects.create(
|
|
|
service=self.hosting_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
- share=0.4)
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=1.6)
|
|
|
u2 = CostUse.objects.create(
|
|
|
service=self.hosting_service,
|
|
|
- resource=self.datacenter_cost,
|
|
|
- share=0.2)
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=0.6)
|
|
|
|
|
|
- self.assertEqual(u1.real_share() + u2.real_share(), 1)
|
|
|
+ self.assertEqual(u1.real_share() + u2.real_share(), 4)
|
|
|
self.assertEqual(u1.share/u2.share, u1.real_share()/u2.real_share())
|
|
|
+
|
|
|
+ def test_unit_value_share(self):
|
|
|
+ self.mailbox_service.subscriptions_count = 2
|
|
|
+ self.mailbox_service.share = 0.5
|
|
|
+ self.hosting_service.save()
|
|
|
+
|
|
|
+ self.hosting_service.subscriptions_count = 1
|
|
|
+ self.hosting_service.share = 0.5
|
|
|
+ self.hosting_service.save()
|
|
|
+
|
|
|
+ mailbox_use = CostUse.objects.create(
|
|
|
+ service=self.mailbox_service,
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=2)
|
|
|
+
|
|
|
+ hosting_use = CostUse.objects.create(
|
|
|
+ service=self.hosting_service,
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=2)
|
|
|
+
|
|
|
+ self.assertEqual(mailbox_use.value_share(), 5)
|
|
|
+ self.assertEqual(mailbox_use.unit_value_share(), 2.5)
|
|
|
+
|
|
|
+ self.assertEqual(hosting_use.value_share(), 5)
|
|
|
+ self.assertEqual(hosting_use.unit_value_share(), 5)
|
|
|
+
|
|
|
+ def test_used(self):
|
|
|
+ CostUse.objects.create(
|
|
|
+ service=self.mailbox_service,
|
|
|
+ resource=self.electricity_cost,
|
|
|
+ share=0.5)
|
|
|
+
|
|
|
+ self.assertEqual(self.electricity_cost.used(), 0.5)
|
|
|
+ self.assertEqual(self.electricity_cost.unused(), 3.5)
|