django-admin2/djadmin2/tests/test_renderers.py
2020-11-21 22:16:43 +06:00

115 lines
3.2 KiB
Python

import datetime as dt
from decimal import Decimal
from django.test import TestCase
from django.utils.translation import activate
from .. import renderers
from .models import RendererTestModel
class BooleanRendererTest(TestCase):
def setUp(self):
self.renderer = renderers.boolean_renderer
def test_boolean(self):
out1 = self.renderer(True, None)
self.assertIn('fa fa-check', out1)
out2 = self.renderer(False, None)
self.assertIn('fa fa-minus', out2)
def test_string(self):
out1 = self.renderer('yeah', None)
self.assertIn('fa fa-check', out1)
out2 = self.renderer('', None)
self.assertIn('fa fa-minus', out2)
class DatetimeRendererTest(TestCase):
def setUp(self):
self.renderer = renderers.datetime_renderer
def tearDown(self):
activate('en_US')
def test_date_german(self):
activate('de')
out = self.renderer(dt.date(2013, 7, 6), None)
self.assertEqual('6. Juli 2013', out)
def test_date_spanish(self):
activate('es')
out = self.renderer(dt.date(2013, 7, 6), None)
self.assertEqual('6 de Julio de 2013', out)
def test_date_default(self):
out = self.renderer(dt.date(2013, 7, 6), None)
self.assertEqual('July 6, 2013', out)
def test_time_german(self):
activate('de')
out = self.renderer(dt.time(13, 37, 1), None)
self.assertEqual('13:37', out)
def test_time_chinese(self):
activate('zh')
out = self.renderer(dt.time(13, 37, 1), None)
self.assertEqual('1:37 p.m.', out)
def test_datetime(self):
out = self.renderer(dt.datetime(2013, 7, 6, 13, 37, 1), None)
self.assertEqual('July 6, 2013, 1:37 p.m.', out)
def test_date_as_string(self):
out = self.renderer('13:37:01', None)
self.assertEqual('13:37', out)
# TODO test timezone localization
class TitleRendererTest(TestCase):
def setUp(self):
self.renderer = renderers.title_renderer
def testLowercase(self):
out = self.renderer('oh hello there!', None)
self.assertEqual('Oh Hello There!', out)
def testTitlecase(self):
out = self.renderer('Oh Hello There!', None)
self.assertEqual('Oh Hello There!', out)
def testUppercase(self):
out = self.renderer('OH HELLO THERE!', None)
self.assertEqual('Oh Hello There!', out)
class NumberRendererTest(TestCase):
def setUp(self):
self.renderer = renderers.number_renderer
def testInteger(self):
out = self.renderer(42, None)
self.assertEqual('42', out)
def testFloat(self):
out = self.renderer(42.5, None)
self.assertEqual('42.5', out)
def testEndlessFloat(self):
out = self.renderer(1.0 / 3, None)
self.assertEqual('0.3333333333333333', out)
def testPlainDecimal(self):
number = '0.123456789123456789123456789'
out = self.renderer(Decimal(number), None)
self.assertEqual(number, out)
def testFieldDecimal(self):
field = RendererTestModel._meta.get_field('decimal')
out = self.renderer(Decimal('0.123456789'), field)
self.assertEqual('0.12345', out)