|
@@ -283,15 +283,13 @@ class AbstractUseTests(TestCase):
|
|
|
# VPN this is the only service using electricity
|
|
|
self.assertEqual(wifi_vpn_use.unit_real_share(), 10)
|
|
|
|
|
|
- def test_service_using_service_edgecases(self):
|
|
|
+ def test_service_using_non_usable_service(self):
|
|
|
serva = Service.objects.create(
|
|
|
name='A', document=self.doc,
|
|
|
subscriptions_count=4,
|
|
|
reusable=False,
|
|
|
)
|
|
|
|
|
|
- # A default service is not reusable
|
|
|
-
|
|
|
with self.assertRaises(ValidationError):
|
|
|
su = ServiceUse(
|
|
|
service=self.mailbox_service,
|
|
@@ -300,3 +298,36 @@ class AbstractUseTests(TestCase):
|
|
|
)
|
|
|
su.full_clean()
|
|
|
su.save()
|
|
|
+
|
|
|
+ def test_service_using_cyclic_service(self):
|
|
|
+ """ We should not save any service dependency building a cycle
|
|
|
+ """
|
|
|
+ a = Service.objects.create(
|
|
|
+ name='a', document=self.doc,
|
|
|
+ reusable=True,
|
|
|
+ )
|
|
|
+
|
|
|
+ b = Service.objects.create(
|
|
|
+ name='b', document=self.doc,
|
|
|
+ reusable=True,
|
|
|
+ )
|
|
|
+
|
|
|
+ c = Service.objects.create(
|
|
|
+ name='c', document=self.doc,
|
|
|
+ reusable=True,
|
|
|
+ )
|
|
|
+
|
|
|
+ def create_clean(user, used):
|
|
|
+ new_use = ServiceUse(service=user, resource=used, share=1)
|
|
|
+ new_use.full_clean()
|
|
|
+ new_use.save()
|
|
|
+
|
|
|
+ create_clean(a, b)
|
|
|
+
|
|
|
+ with self.assertRaises(ValidationError):
|
|
|
+ create_clean(b, a)
|
|
|
+
|
|
|
+ create_clean(b, c)
|
|
|
+
|
|
|
+ with self.assertRaises(ValidationError):
|
|
|
+ create_clean(c, a)
|