Added basic tests for DateField, DateTimeField and TimeField and added them to the list of supported fields.

This commit is contained in:
Dirk Eschler 2012-11-18 00:08:04 +01:00
parent 4abf2dbb6f
commit 5affe7940c
5 changed files with 83 additions and 4 deletions

View file

@ -166,8 +166,8 @@ Model Field 0.4 0.5
``BooleanField`` |n| |y|
``CharField`` |y| |y|
``CommaSeparatedIntegerField`` |n| |y|
``DateField`` |n| |u|
``DateTimeField`` |n| |u|
``DateField`` |n| |y|
``DateTimeField`` |n| |y|
``DecimalField`` |n| |y|
``EmailField`` |i| |i|
``FileField`` |y| |y|
@ -183,7 +183,7 @@ Model Field 0.4 0.5
``SlugField`` |i| |i|
``SmallIntegerField`` |n| |i|
``TextField`` |y| |y|
``TimeField`` |n| |u|
``TimeField`` |n| |y|
``URLField`` |i| |i|
``ForeignKey`` |n| |n|
``OneToOneField`` |n| |n|

View file

@ -22,6 +22,9 @@ SUPPORTED_FIELDS = (
fields.FloatField,
fields.DecimalField,
fields.IPAddressField,
fields.DateField,
fields.DateTimeField,
fields.TimeField,
fields.files.FileField,
fields.files.ImageField,
)

View file

@ -7,6 +7,7 @@ NOTE: Perhaps ModeltranslationTestBase in tearDownClass should reload some modul
"""
from __future__ import with_statement # Python 2.5 compatibility
import datetime
from decimal import Decimal
import os
import shutil
@ -667,6 +668,78 @@ class OtherFieldsTest(ModeltranslationTestBase):
self.assertEqual(Decimal('0.23'), inst.decimal_de)
self.assertEqual(Decimal('0.42'), inst.decimal_en)
def test_translated_models_date_instance(self):
inst = OtherFieldsModel()
inst.date = datetime.date(2012, 12, 31)
self.assertEqual('de', get_language())
self.assertEqual(datetime.date(2012, 12, 31), inst.date)
self.assertEqual(datetime.date(2012, 12, 31), inst.date_de)
self.assertEqual(None, inst.date_en)
inst.date = datetime.date(1999, 1, 1)
inst.save()
self.assertEqual(datetime.date(1999, 1, 1), inst.date)
self.assertEqual(datetime.date(1999, 1, 1), inst.date_de)
self.assertEqual(None, inst.date_en)
qs = OtherFieldsModel.objects.filter(date='1999-1-1')
self.assertEqual(len(qs), 1)
self.assertEqual(qs[0].date, datetime.date(1999, 1, 1))
trans_real.activate('en')
inst.date = datetime.date(2012, 12, 31)
self.assertEqual(datetime.date(2012, 12, 31), inst.date)
self.assertEqual(datetime.date(1999, 1, 1), inst.date_de)
self.assertEqual(datetime.date(2012, 12, 31), inst.date_en)
def test_translated_models_datetime_instance(self):
inst = OtherFieldsModel()
inst.datetime = datetime.datetime(2012, 12, 31, 23, 42)
self.assertEqual('de', get_language())
self.assertEqual(datetime.datetime(2012, 12, 31, 23, 42), inst.datetime)
self.assertEqual(datetime.datetime(2012, 12, 31, 23, 42), inst.datetime_de)
self.assertEqual(None, inst.datetime_en)
inst.datetime = datetime.datetime(1999, 1, 1, 23, 42)
inst.save()
self.assertEqual(datetime.datetime(1999, 1, 1, 23, 42), inst.datetime)
self.assertEqual(datetime.datetime(1999, 1, 1, 23, 42), inst.datetime_de)
self.assertEqual(None, inst.datetime_en)
qs = OtherFieldsModel.objects.filter(datetime='1999-1-1 23:42')
self.assertEqual(len(qs), 1)
self.assertEqual(qs[0].datetime, datetime.datetime(1999, 1, 1, 23, 42))
trans_real.activate('en')
inst.datetime = datetime.datetime(2012, 12, 31, 23, 42)
self.assertEqual(datetime.datetime(2012, 12, 31, 23, 42), inst.datetime)
self.assertEqual(datetime.datetime(1999, 1, 1, 23, 42), inst.datetime_de)
self.assertEqual(datetime.datetime(2012, 12, 31, 23, 42), inst.datetime_en)
def test_translated_models_time_instance(self):
inst = OtherFieldsModel()
inst.time = datetime.time(23, 42, 0)
self.assertEqual('de', get_language())
self.assertEqual(datetime.time(23, 42, 0), inst.time)
self.assertEqual(datetime.time(23, 42, 0), inst.time_de)
self.assertEqual(None, inst.time_en)
inst.time = datetime.time(01, 02, 03)
inst.save()
self.assertEqual(datetime.time(01, 02, 03), inst.time)
self.assertEqual(datetime.time(01, 02, 03), inst.time_de)
self.assertEqual(None, inst.time_en)
qs = OtherFieldsModel.objects.filter(time='01:02:03')
self.assertEqual(len(qs), 1)
self.assertEqual(qs[0].time, datetime.time(01, 02, 03))
trans_real.activate('en')
inst.time = datetime.time(23, 42, 0)
self.assertEqual(datetime.time(23, 42, 0), inst.time)
self.assertEqual(datetime.time(01, 02, 03), inst.time_de)
self.assertEqual(datetime.time(23, 42, 0), inst.time_en)
class ModeltranslationTestRule1(ModeltranslationTestBase):
"""

View file

@ -44,6 +44,9 @@ class OtherFieldsModel(models.Model):
float = models.FloatField(blank=True, null=True)
decimal = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True)
ip = models.IPAddressField(blank=True, null=True)
date = models.DateField(blank=True, null=True)
datetime = models.DateTimeField(blank=True, null=True)
time = models.TimeField(blank=True, null=True)
# genericip = models.GenericIPAddressField(blank=True, null=True)

View file

@ -36,7 +36,7 @@ class OtherFieldsModelTranslationOptions(TranslationOptions):
# fields = ('int', 'boolean', 'nullboolean', 'csi', 'float', 'decimal',
# 'ip', 'genericip')
fields = ('int', 'boolean', 'nullboolean', 'csi', 'float', 'decimal',
'ip',)
'ip', 'date', 'datetime', 'time',)
translator.register(OtherFieldsModel, OtherFieldsModelTranslationOptions)