1
0
mirror of https://github.com/django/django.git synced 2024-12-29 12:36:08 +00:00
django/tests/db_functions/text/test_ord.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

34 lines
1.2 KiB
Python
Raw Normal View History

from django.db.models import CharField, Value
from django.db.models.functions import Left, Ord
from django.test import TestCase
from django.test.utils import register_lookup
2018-08-15 23:45:11 +00:00
from ..models import Author
class OrdTests(TestCase):
@classmethod
def setUpTestData(cls):
cls.john = Author.objects.create(name="John Smith", alias="smithj")
cls.elena = Author.objects.create(name="Élena Jordan", alias="elena")
cls.rhonda = Author.objects.create(name="Rhonda")
def test_basic(self):
authors = Author.objects.annotate(name_part=Ord("name"))
self.assertCountEqual(
authors.filter(name_part__gt=Ord(Value("John"))), [self.elena, self.rhonda]
)
self.assertCountEqual(
authors.exclude(name_part__gt=Ord(Value("John"))), [self.john]
)
def test_transform(self):
with register_lookup(CharField, Ord):
authors = Author.objects.annotate(first_initial=Left("name", 1))
self.assertCountEqual(
authors.filter(first_initial__ord=ord("J")), [self.john]
)
self.assertCountEqual(
authors.exclude(first_initial__ord=ord("J")), [self.elena, self.rhonda]
)