def test_content_node_is_set(self): # access .content self.root_node.content Node.attach_content_instances([self.root_node]) with self.assertNumQueries(0): # node.content.node must get set even if node.content has already been accessed self.assertEqual(self.root_node.content.node, self.root_node)
def test_prefetch_trees(self): a = Node.objects.get(pk=self.root_node.pk) b = Node.objects.get(pk=self.root_node.pk) # a.get_descendants, b.get_descendants # 3 contents with self.assertNumQueries(5): Node.prefetch_trees(a, b) root_node_dfo = self.root_node.depth_first_order() with self.assertNumQueries(0): a.content b.content self.assertEqual(root_node_dfo, a.depth_first_order()) self.assertEqual(a.depth_first_order(), b.depth_first_order())
def test_attach_content_instances(self): nodes = self.root_node.depth_first_order() nodes = Node.attach_content_instances(nodes) with self.assertNumQueries(0): for node in nodes: self.assertEqual(node.content.node, node)
def test_dangling_content(self): left_bucket = self.root_node.content.get_children()[0] left_node = left_bucket.node self.cursor.execute('DELETE FROM core_tests_bucket WHERE id = %s', [str(left_bucket.id)]) ids, _ = Node.find_widgy_problems() self.assertEqual(ids, [left_node.id])
def test_unknown_widget(self): left_bucket = self.root_node.content.get_children()[0] fake_ct = ContentType.objects.create( name='fake', app_label='faaaaake', ) left_node = left_bucket.node left_node.content_type_id = fake_ct.id left_node.save() _, ids = Node.find_widgy_problems() self.assertEqual(ids, [left_node.id])
def test_unknown_widget(self): left_bucket = self.root_node.content.get_children()[0] fake_ct = ContentType.objects.create( model='fake', app_label='faaaaake', ) left_node = left_bucket.node left_node.content_type_id = fake_ct.id left_node.save() _, ids = Node.find_widgy_problems() self.assertEqual(ids, [left_node.id])
def get_results(self, request): super(BlogChangeList, self).get_results(request) # This is like prefetch_related, but works with our GenericForeignKey Node.attach_content_instances(i.content.working_copy for i in self.result_list)
def make_root(self): """ Turns us into a root node by taking us out of the tree we're in. """ self.node.move(Node.get_last_root_node(), 'last-sibling')
def get_problems(self): return Node.find_problems() + Node.find_widgy_problems()