From 55cc26941a1eb6093bf9602e67a2b5fdf7e68683 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Tue, 3 Apr 2018 19:36:12 +0200 Subject: Refs #28643 -- Added Repeat database function. Thanks Tim Graham and Nick Pope for reviews. --- tests/db_functions/test_repeat.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tests/db_functions/test_repeat.py (limited to 'tests/db_functions') diff --git a/tests/db_functions/test_repeat.py b/tests/db_functions/test_repeat.py new file mode 100644 index 0000000000..d3f294c409 --- /dev/null +++ b/tests/db_functions/test_repeat.py @@ -0,0 +1,24 @@ +from django.db.models import CharField, Value +from django.db.models.functions import Length, Repeat +from django.test import TestCase + +from .models import Author + + +class RepeatTests(TestCase): + def test_basic(self): + Author.objects.create(name='John', alias='xyz') + tests = ( + (Repeat('name', 0), ''), + (Repeat('name', 2), 'JohnJohn'), + (Repeat('name', Length('alias'), output_field=CharField()), 'JohnJohnJohn'), + (Repeat(Value('x'), 3, output_field=CharField()), 'xxx'), + ) + for function, repeated_text in tests: + with self.subTest(function=function): + authors = Author.objects.annotate(repeated_text=function) + self.assertQuerysetEqual(authors, [repeated_text], lambda a: a.repeated_text, ordered=False) + + def test_negative_number(self): + with self.assertRaisesMessage(ValueError, "'number' must be greater or equal to 0."): + Repeat('name', -1) -- cgit v1.3