Example #1
0
 def test_reload_objects_omits_deleted_objects(self):
     objs = [TestModel() for counter in range(3)]
     for obj in objs:
         obj.save()
     dead_obj = objs.pop(0)
     TestModel.objects.filter(id=dead_obj.id).delete()
     self.assertItemsEqual(objs, reload_objects(TestModel, objs))
Example #2
0
 def test_reload_objects_omits_deleted_objects(self):
     objs = [TestModel() for counter in range(3)]
     for obj in objs:
         obj.save()
     dead_obj = objs.pop(0)
     TestModel.objects.filter(id=dead_obj.id).delete()
     self.assertItemsEqual(objs, reload_objects(TestModel, objs))
Example #3
0
 def test_reload_objects_reloads_objects(self):
     texts = ['1 text', '2 text', '3 text']
     objs = [TestModel(text=text) for text in texts]
     for obj in objs:
         obj.save()
     texts[0] = "different text"
     TestModel.objects.filter(id=objs[0].id).update(text=texts[0])
     self.assertItemsEqual(
         texts, [obj.text for obj in reload_objects(TestModel, objs)])
Example #4
0
 def test_reload_objects_reloads_objects(self):
     texts = ['1 text', '2 text', '3 text']
     objs = [TestModel(text=text) for text in texts]
     for obj in objs:
         obj.save()
     texts[0] = "different text"
     TestModel.objects.filter(id=objs[0].id).update(text=texts[0])
     self.assertItemsEqual(
         texts, [obj.text for obj in reload_objects(TestModel, objs)])
Example #5
0
 def test_reject_rejects_nodegroup(self):
     nodegroups = [factory.make_node_group() for i in range(3)]
     uuids = [nodegroup.uuid for nodegroup in nodegroups]
     self.become_admin()
     response = self.client.post(reverse('nodegroups_handler'), {
         'op': 'reject',
         'uuid': uuids,
     })
     self.assertEqual((httplib.OK, "Nodegroup(s) rejected."),
                      (response.status_code, response.content))
     self.assertThat([
         nodegroup.status
         for nodegroup in reload_objects(NodeGroup, nodegroups)
     ], AllMatch(Equals(NODEGROUP_STATUS.REJECTED)))
Example #6
0
 def test_reject_rejects_nodegroup(self):
     nodegroups = [factory.make_node_group() for i in range(3)]
     uuids = [nodegroup.uuid for nodegroup in nodegroups]
     self.become_admin()
     response = self.client.post(
         reverse('nodegroups_handler'),
         {
             'op': 'reject',
             'uuid': uuids,
         })
     self.assertEqual(
         (httplib.OK, "Nodegroup(s) rejected."),
         (response.status_code, response.content))
     self.assertThat(
         [nodegroup.status for nodegroup in
          reload_objects(NodeGroup, nodegroups)],
         AllMatch(Equals(NODEGROUP_STATUS.REJECTED)))
Example #7
0
 def test_POST_release_releases_owned_node(self):
     owned_statuses = [
         NODE_STATUS.RESERVED,
         NODE_STATUS.ALLOCATED,
         ]
     owned_nodes = [
         factory.make_node(owner=self.logged_in_user, status=status)
         for status in owned_statuses]
     responses = [
         self.client.post(self.get_node_uri(node), {'op': 'release'})
         for node in owned_nodes]
     self.assertEqual(
         [httplib.OK] * len(owned_nodes),
         [response.status_code for response in responses])
     self.assertItemsEqual(
         [NODE_STATUS.READY] * len(owned_nodes),
         [node.status for node in reload_objects(Node, owned_nodes)])
Example #8
0
 def test_node_list_displays_sorted_list_of_nodes(self):
     # Nodes are sorted on the node list page, newest first.
     nodes = [factory.make_node() for i in range(3)]
     # Explicitely set node.created since all of these node will
     # be created in the same transaction and thus have the same
     # 'created' value by default.
     for node in nodes:
         created = factory.getRandomDate()
         # Update node.created without calling node.save().
         Node.objects.filter(id=node.id).update(created=created)
     nodes = reload_objects(Node, nodes)
     sorted_nodes = sorted(nodes, key=lambda x: x.created, reverse=True)
     response = self.client.get(reverse('node-list'))
     node_links = [
         reverse('node-view', args=[node.system_id])
         for node in sorted_nodes]
     self.assertEqual(
         node_links,
         [link for link in get_content_links(response)
             if link.startswith('/nodes/node')])
Example #9
0
 def test_POST_release_fails_for_other_node_states(self):
     releasable_statuses = [
         NODE_STATUS.RESERVED,
         NODE_STATUS.ALLOCATED,
         NODE_STATUS.READY,
         ]
     unreleasable_statuses = [
         status
         for status in map_enum(NODE_STATUS).values()
         if status not in releasable_statuses
     ]
     nodes = [
         factory.make_node(status=status, owner=self.logged_in_user)
         for status in unreleasable_statuses]
     responses = [
         self.client.post(self.get_node_uri(node), {'op': 'release'})
         for node in nodes]
     self.assertEqual(
         [httplib.CONFLICT] * len(unreleasable_statuses),
         [response.status_code for response in responses])
     self.assertItemsEqual(
         unreleasable_statuses,
         [node.status for node in reload_objects(Node, nodes)])