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)