summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2018-04-03 19:36:12 +0200
committerGitHub <noreply@github.com>2018-04-03 19:36:12 +0200
commit55cc26941a1eb6093bf9602e67a2b5fdf7e68683 (patch)
treea7e74536922b6bc467538966e795434dc03ad40a /tests
parent6141c752fe7091d2197f5ac061300a9e0a36b09b (diff)
Refs #28643 -- Added Repeat database function.
Thanks Tim Graham and Nick Pope for reviews.
Diffstat (limited to 'tests')
-rw-r--r--tests/db_functions/test_repeat.py24
1 files changed, 24 insertions, 0 deletions
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)