regression test for 7512 ordering across nullable foreign keys shouldn t exclude results we can t compare results directly since different databases sort nulls to different ends of the ordering but we can check that all results are returned we have to test this carefully some databases sort null values before everything else some sort them afterward so we extract the ordered list and check the length before the fix this list was too short some values were omitted regression test for 7512 ordering across nullable foreign keys shouldn t exclude results we can t compare results directly since different databases sort nulls to different ends of the ordering but we can check that all results are returned we have to test this carefully some databases sort null values before everything else some sort them afterward so we extract the ordered list and check the length before the fix this list was too short some values were omitted
from django.test import TestCase

from .models import Article, Author, Comment, Forum, Post, SystemInfo


class NullFkOrderingTests(TestCase):
    def test_ordering_across_null_fk(self):
        
        author_1 = Author.objects.create(name="Tom Jones")
        author_2 = Author.objects.create(name="Bob Smith")
        Article.objects.create(title="No author on this article")
        Article.objects.create(
            author=author_1, title="This article written by Tom Jones"
        )
        Article.objects.create(
            author=author_2, title="This article written by Bob Smith"
        )

        
        
        
        self.assertEqual(len(list(Article.objects.all())), 3)

        s = SystemInfo.objects.create(system_name="System Info")
        f = Forum.objects.create(system_info=s, forum_name="First forum")
        p = Post.objects.create(forum=f, title="First Post")
        Comment.objects.create(post=p, comment_text="My first comment")
        Comment.objects.create(comment_text="My second comment")
        s2 = SystemInfo.objects.create(system_name="More System Info")
        f2 = Forum.objects.create(system_info=s2, forum_name="Second forum")
        p2 = Post.objects.create(forum=f2, title="Second Post")
        Comment.objects.create(comment_text="Another first comment")
        Comment.objects.create(post=p2, comment_text="Another second comment")

        
        
        
        
        self.assertEqual(len(list(Comment.objects.all())), 4)