mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.db.models import CharField
 | |
| from django.db.models.functions import Upper
 | |
| from django.test import TestCase
 | |
| from django.test.utils import register_lookup
 | |
| 
 | |
| from ..models import Author
 | |
| 
 | |
| 
 | |
| class UpperTests(TestCase):
 | |
| 
 | |
|     def test_basic(self):
 | |
|         Author.objects.create(name='John Smith', alias='smithj')
 | |
|         Author.objects.create(name='Rhonda')
 | |
|         authors = Author.objects.annotate(upper_name=Upper('name'))
 | |
|         self.assertQuerysetEqual(
 | |
|             authors.order_by('name'), [
 | |
|                 'JOHN SMITH',
 | |
|                 'RHONDA',
 | |
|             ],
 | |
|             lambda a: a.upper_name
 | |
|         )
 | |
|         Author.objects.update(name=Upper('name'))
 | |
|         self.assertQuerysetEqual(
 | |
|             authors.order_by('name'), [
 | |
|                 ('JOHN SMITH', 'JOHN SMITH'),
 | |
|                 ('RHONDA', 'RHONDA'),
 | |
|             ],
 | |
|             lambda a: (a.upper_name, a.name)
 | |
|         )
 | |
| 
 | |
|     def test_transform(self):
 | |
|         with register_lookup(CharField, Upper):
 | |
|             Author.objects.create(name='John Smith', alias='smithj')
 | |
|             Author.objects.create(name='Rhonda')
 | |
|             authors = Author.objects.filter(name__upper__exact='JOHN SMITH')
 | |
|             self.assertQuerysetEqual(
 | |
|                 authors.order_by('name'), [
 | |
|                     'John Smith',
 | |
|                 ],
 | |
|                 lambda a: a.name
 | |
|             )
 |