diff options
Diffstat (limited to 'tests/db_functions/text/test_replace.py')
| -rw-r--r-- | tests/db_functions/text/test_replace.py | 86 |
1 files changed, 57 insertions, 29 deletions
diff --git a/tests/db_functions/text/test_replace.py b/tests/db_functions/text/test_replace.py index ae87781b8c..28e39faf09 100644 --- a/tests/db_functions/text/test_replace.py +++ b/tests/db_functions/text/test_replace.py @@ -6,50 +6,78 @@ from ..models import Author class ReplaceTests(TestCase): - @classmethod def setUpTestData(cls): - Author.objects.create(name='George R. R. Martin') - Author.objects.create(name='J. R. R. Tolkien') + Author.objects.create(name="George R. R. Martin") + Author.objects.create(name="J. R. R. Tolkien") def test_replace_with_empty_string(self): qs = Author.objects.annotate( - without_middlename=Replace(F('name'), Value('R. R. '), Value('')), + without_middlename=Replace(F("name"), Value("R. R. "), Value("")), + ) + self.assertQuerysetEqual( + qs, + [ + ("George R. R. Martin", "George Martin"), + ("J. R. R. Tolkien", "J. Tolkien"), + ], + transform=lambda x: (x.name, x.without_middlename), + ordered=False, ) - self.assertQuerysetEqual(qs, [ - ('George R. R. Martin', 'George Martin'), - ('J. R. R. Tolkien', 'J. Tolkien'), - ], transform=lambda x: (x.name, x.without_middlename), ordered=False) def test_case_sensitive(self): - qs = Author.objects.annotate(same_name=Replace(F('name'), Value('r. r.'), Value(''))) - self.assertQuerysetEqual(qs, [ - ('George R. R. Martin', 'George R. R. Martin'), - ('J. R. R. Tolkien', 'J. R. R. Tolkien'), - ], transform=lambda x: (x.name, x.same_name), ordered=False) + qs = Author.objects.annotate( + same_name=Replace(F("name"), Value("r. r."), Value("")) + ) + self.assertQuerysetEqual( + qs, + [ + ("George R. R. Martin", "George R. R. Martin"), + ("J. R. R. Tolkien", "J. R. R. Tolkien"), + ], + transform=lambda x: (x.name, x.same_name), + ordered=False, + ) def test_replace_expression(self): - qs = Author.objects.annotate(same_name=Replace( - Concat(Value('Author: '), F('name')), Value('Author: '), Value('')), + qs = Author.objects.annotate( + same_name=Replace( + Concat(Value("Author: "), F("name")), Value("Author: "), Value("") + ), + ) + self.assertQuerysetEqual( + qs, + [ + ("George R. R. Martin", "George R. R. Martin"), + ("J. R. R. Tolkien", "J. R. R. Tolkien"), + ], + transform=lambda x: (x.name, x.same_name), + ordered=False, ) - self.assertQuerysetEqual(qs, [ - ('George R. R. Martin', 'George R. R. Martin'), - ('J. R. R. Tolkien', 'J. R. R. Tolkien'), - ], transform=lambda x: (x.name, x.same_name), ordered=False) def test_update(self): Author.objects.update( - name=Replace(F('name'), Value('R. R. '), Value('')), + name=Replace(F("name"), Value("R. R. "), Value("")), + ) + self.assertQuerysetEqual( + Author.objects.all(), + [ + ("George Martin"), + ("J. Tolkien"), + ], + transform=lambda x: x.name, + ordered=False, ) - self.assertQuerysetEqual(Author.objects.all(), [ - ('George Martin'), - ('J. Tolkien'), - ], transform=lambda x: x.name, ordered=False) def test_replace_with_default_arg(self): # The default replacement is an empty string. - qs = Author.objects.annotate(same_name=Replace(F('name'), Value('R. R. '))) - self.assertQuerysetEqual(qs, [ - ('George R. R. Martin', 'George Martin'), - ('J. R. R. Tolkien', 'J. Tolkien'), - ], transform=lambda x: (x.name, x.same_name), ordered=False) + qs = Author.objects.annotate(same_name=Replace(F("name"), Value("R. R. "))) + self.assertQuerysetEqual( + qs, + [ + ("George R. R. Martin", "George Martin"), + ("J. R. R. Tolkien", "J. Tolkien"), + ], + transform=lambda x: (x.name, x.same_name), + ordered=False, + ) |
