From 69057f657f60e2d4c2f8181ba4f53be24c12c01e Mon Sep 17 00:00:00 2001
From: Őry Máté <ory.mate@cloud.bme.hu>
Date: Sat, 15 Mar 2014 20:16:33 +0100
Subject: [PATCH] vm: add tests

---
 circle/vm/models/node.py       |  5 +++--
 circle/vm/tests/test_models.py | 46 +++++++++++++++++++++++++++++++++++++---------
 2 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/circle/vm/models/node.py b/circle/vm/models/node.py
index 78e3389..bf3d500 100644
--- a/circle/vm/models/node.py
+++ b/circle/vm/models/node.py
@@ -82,12 +82,13 @@ class Node(TimeStampedModel):
               True: {False: ('MISSING', _('missing')),
                      True: ('ONLINE', _('online'))}}
 
-    @property
-    def state(self):
+    def get_state(self):
         """The state combined of online and enabled attributes.
         """
         return self.STATES[self.enabled][self.online][0]
 
+    state = property(get_state)
+
     def get_status_display(self):
         return self.STATES[self.enabled][self.online][1]
 
diff --git a/circle/vm/tests/test_models.py b/circle/vm/tests/test_models.py
index 25f9d1c..c0e94d8 100644
--- a/circle/vm/tests/test_models.py
+++ b/circle/vm/tests/test_models.py
@@ -1,15 +1,12 @@
+from datetime import datetime
 from django.test import TestCase
-from mock import Mock
+from django.utils.translation import ugettext_lazy as _
+from mock import Mock, MagicMock, patch
 
-from ..models.common import (
-    Lease
-)
-from ..models.instance import (
-    find_unused_port, InstanceTemplate, Instance
-)
-from ..models.network import (
-    Interface
+from ..models import (
+    Lease, Node, Interface, Instance, InstanceTemplate,
 )
+from ..models.instance import find_unused_port
 
 
 class PortFinderTestCase(TestCase):
@@ -39,6 +36,26 @@ class InstanceTestCase(TestCase):
         inst = Mock(state='RUNNING')
         assert Instance.is_running.getter(inst)
 
+    def deploy_destroyed(self):
+        inst = Mock(destroyed_at=datetime.now())
+        with self.assertRaises(Instance.InstanceDestroyedError):
+            Instance.deploy(inst)
+
+    def destroy_destroyed(self):
+        inst = Mock(destroyed_at=datetime.now())
+        Instance.destroy(inst)
+        self.assertFalse(inst.save.called)
+
+    def destroy_sets_destroyed(self):
+        inst = MagicMock(destroyed_at=None, spec=Instance)
+        inst.node = MagicMock(spec=Node)
+        inst.disks.all.return_value = []
+        with patch('vm.models.instance.instance_activity') as ia:
+            ia.return_value = MagicMock()
+            Instance.destroy(inst)
+        self.assertTrue(inst.destroyed_at)
+        inst.save.assert_called()
+
 
 class InterfaceTestCase(TestCase):
 
@@ -78,3 +95,14 @@ class LeaseTestCase(TestCase):
 
         l.suspend_interval = None
         assert "never" in unicode(l)
+
+
+class NodeTestCase(TestCase):
+
+    def test_state(self):
+        node = Mock(spec=Node)
+        node.online = True
+        node.enabled = True
+        node.STATES = Node.STATES
+        self.assertEqual(Node.get_state(node), "ONLINE")
+        assert isinstance(Node.get_status_display(node), _("").__class__)
--
libgit2 0.26.0