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))
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)])
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)))
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)))
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)])
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')])
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)])