Fixed #29154 -- Corrected examples in pluralize docstring and added tests.
This commit is contained in:
parent
f82de6bfb1
commit
5033999153
|
@ -854,22 +854,22 @@ def pluralize(value, arg='s'):
|
||||||
Return a plural suffix if the value is not 1. By default, use 's' as the
|
Return a plural suffix if the value is not 1. By default, use 's' as the
|
||||||
suffix:
|
suffix:
|
||||||
|
|
||||||
* If value is 0, vote{{ value|pluralize }} display "0 votes".
|
* If value is 0, vote{{ value|pluralize }} display "votes".
|
||||||
* If value is 1, vote{{ value|pluralize }} display "1 vote".
|
* If value is 1, vote{{ value|pluralize }} display "vote".
|
||||||
* If value is 2, vote{{ value|pluralize }} display "2 votes".
|
* If value is 2, vote{{ value|pluralize }} display "votes".
|
||||||
|
|
||||||
If an argument is provided, use that string instead:
|
If an argument is provided, use that string instead:
|
||||||
|
|
||||||
* If value is 0, class{{ value|pluralize:"es" }} display "0 classes".
|
* If value is 0, class{{ value|pluralize:"es" }} display "classes".
|
||||||
* If value is 1, class{{ value|pluralize:"es" }} display "1 class".
|
* If value is 1, class{{ value|pluralize:"es" }} display "class".
|
||||||
* If value is 2, class{{ value|pluralize:"es" }} display "2 classes".
|
* If value is 2, class{{ value|pluralize:"es" }} display "classes".
|
||||||
|
|
||||||
If the provided argument contains a comma, use the text before the comma
|
If the provided argument contains a comma, use the text before the comma
|
||||||
for the singular case and the text after the comma for the plural case:
|
for the singular case and the text after the comma for the plural case:
|
||||||
|
|
||||||
* If value is 0, cand{{ value|pluralize:"y,ies" }} display "0 candies".
|
* If value is 0, cand{{ value|pluralize:"y,ies" }} display "candies".
|
||||||
* If value is 1, cand{{ value|pluralize:"y,ies" }} display "1 candy".
|
* If value is 1, cand{{ value|pluralize:"y,ies" }} display "candy".
|
||||||
* If value is 2, cand{{ value|pluralize:"y,ies" }} display "2 candies".
|
* If value is 2, cand{{ value|pluralize:"y,ies" }} display "candies".
|
||||||
"""
|
"""
|
||||||
if ',' not in arg:
|
if ',' not in arg:
|
||||||
arg = ',' + arg
|
arg = ',' + arg
|
||||||
|
|
|
@ -3,6 +3,29 @@ from decimal import Decimal
|
||||||
from django.template.defaultfilters import pluralize
|
from django.template.defaultfilters import pluralize
|
||||||
from django.test import SimpleTestCase
|
from django.test import SimpleTestCase
|
||||||
|
|
||||||
|
from ..utils import setup
|
||||||
|
|
||||||
|
|
||||||
|
class PluralizeTests(SimpleTestCase):
|
||||||
|
|
||||||
|
def check_values(self, *tests):
|
||||||
|
for value, expected in tests:
|
||||||
|
with self.subTest(value=value):
|
||||||
|
output = self.engine.render_to_string('t', {'value': value})
|
||||||
|
self.assertEqual(output, expected)
|
||||||
|
|
||||||
|
@setup({'t': 'vote{{ value|pluralize }}'})
|
||||||
|
def test_no_arguments(self):
|
||||||
|
self.check_values(('0', 'votes'), ('1', 'vote'), ('2', 'votes'))
|
||||||
|
|
||||||
|
@setup({'t': 'class{{ value|pluralize:"es" }}'})
|
||||||
|
def test_suffix(self):
|
||||||
|
self.check_values(('0', 'classes'), ('1', 'class'), ('2', 'classes'))
|
||||||
|
|
||||||
|
@setup({'t': 'cand{{ value|pluralize:"y,ies" }}'})
|
||||||
|
def test_singular_and_plural_suffix(self):
|
||||||
|
self.check_values(('0', 'candies'), ('1', 'candy'), ('2', 'candies'))
|
||||||
|
|
||||||
|
|
||||||
class FunctionTests(SimpleTestCase):
|
class FunctionTests(SimpleTestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue