summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-06-23 14:16:00 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-06-23 14:16:00 +0000
commitac64e91a0cadc57f4bc5cd5d66955832320ca7a1 (patch)
tree94dddcdab4bcc4547b931646047844cbba525e15 /tests
parent553a20075e6991e7a60baee51ea68c8adc520d9a (diff)
Merged boulder-oracle-sprint branch (r3965:5512) back into trunk. All
expected tests pass for all databases. git-svn-id: http://code.djangoproject.com/svn/django/trunk@5519 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/datatypes/__init__.py0
-rw-r--r--tests/regressiontests/datatypes/models.py59
-rw-r--r--tests/regressiontests/serializers_regress/tests.py16
3 files changed, 75 insertions, 0 deletions
diff --git a/tests/regressiontests/datatypes/__init__.py b/tests/regressiontests/datatypes/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/datatypes/__init__.py
diff --git a/tests/regressiontests/datatypes/models.py b/tests/regressiontests/datatypes/models.py
new file mode 100644
index 0000000000..8c5c8c285d
--- /dev/null
+++ b/tests/regressiontests/datatypes/models.py
@@ -0,0 +1,59 @@
+"""
+This is a basic model to test saving and loading boolean and date-related
+types, which in the past were problematic for some database backends.
+"""
+
+from django.db import models
+from django.conf import settings
+
+class Donut(models.Model):
+ name = models.CharField(maxlength=100)
+ is_frosted = models.BooleanField(default=False)
+ has_sprinkles = models.NullBooleanField()
+ baked_date = models.DateField(null=True)
+ baked_time = models.TimeField(null=True)
+ consumed_at = models.DateTimeField(null=True)
+
+ class Meta:
+ ordering = ('consumed_at',)
+
+ def __str__(self):
+ return self.name
+
+__test__ = {'API_TESTS': """
+# No donuts are in the system yet.
+>>> Donut.objects.all()
+[]
+
+>>> d = Donut(name='Apple Fritter')
+
+# Ensure we're getting True and False, not 0 and 1
+>>> d.is_frosted
+False
+>>> d.has_sprinkles
+>>> d.has_sprinkles = True
+>>> d.has_sprinkles == True
+True
+>>> d.save()
+>>> d2 = Donut.objects.all()[0]
+>>> d2
+<Donut: Apple Fritter>
+>>> d2.is_frosted == False
+True
+>>> d2.has_sprinkles == True
+True
+
+>>> import datetime
+>>> d2.baked_date = datetime.date(year=1938, month=6, day=4)
+>>> d2.baked_time = datetime.time(hour=5, minute=30)
+>>> d2.consumed_at = datetime.datetime(year=2007, month=4, day=20, hour=16, minute=19, second=59)
+>>> d2.save()
+
+>>> d3 = Donut.objects.all()[0]
+>>> d3.baked_date
+datetime.date(1938, 6, 4)
+>>> d3.baked_time
+datetime.time(5, 30)
+>>> d3.consumed_at
+datetime.datetime(2007, 4, 20, 16, 19, 59)
+"""}
diff --git a/tests/regressiontests/serializers_regress/tests.py b/tests/regressiontests/serializers_regress/tests.py
index 1a144c8356..febcfa822e 100644
--- a/tests/regressiontests/serializers_regress/tests.py
+++ b/tests/regressiontests/serializers_regress/tests.py
@@ -15,6 +15,7 @@ from django.utils.functional import curry
from django.core import serializers
from django.db import transaction
from django.core import management
+from django.conf import settings
from models import *
try:
@@ -116,10 +117,13 @@ test_data = [
(data_obj, 31, DateTimeData, None),
(data_obj, 40, EmailData, "hovercraft@example.com"),
(data_obj, 41, EmailData, None),
+ (data_obj, 42, EmailData, ""),
(data_obj, 50, FileData, 'file:///foo/bar/whiz.txt'),
(data_obj, 51, FileData, None),
+ (data_obj, 52, FileData, ""),
(data_obj, 60, FilePathData, "/foo/bar/whiz.txt"),
(data_obj, 61, FilePathData, None),
+ (data_obj, 62, FilePathData, ""),
(data_obj, 70, DecimalData, decimal.Decimal('12.345')),
(data_obj, 71, DecimalData, decimal.Decimal('-12.345')),
(data_obj, 72, DecimalData, decimal.Decimal('0.0')),
@@ -146,6 +150,7 @@ test_data = [
(data_obj, 131, PositiveSmallIntegerData, None),
(data_obj, 140, SlugData, "this-is-a-slug"),
(data_obj, 141, SlugData, None),
+ (data_obj, 142, SlugData, ""),
(data_obj, 150, SmallData, 12),
(data_obj, 151, SmallData, -12),
(data_obj, 152, SmallData, 0),
@@ -160,8 +165,10 @@ The end."""),
(data_obj, 171, TimeData, None),
(data_obj, 180, USStateData, "MA"),
(data_obj, 181, USStateData, None),
+ (data_obj, 182, USStateData, ""),
(data_obj, 190, XMLData, "<foo></foo>"),
(data_obj, 191, XMLData, None),
+ (data_obj, 192, XMLData, ""),
(generic_obj, 200, GenericData, ['Generic Object 1', 'tag1', 'tag2']),
(generic_obj, 201, GenericData, ['Generic Object 2', 'tag2', 'tag3']),
@@ -241,6 +248,15 @@ The end."""),
# (pk_obj, 790, XMLPKData, "<foo></foo>"),
]
+# Because Oracle treats the empty string as NULL, Oracle is expected to fail
+# when field.empty_strings_allowed is True and the value is None; skip these
+# tests.
+if settings.DATABASE_ENGINE == 'oracle':
+ test_data = [data for data in test_data
+ if not (data[0] == data_obj and
+ data[2]._meta.get_field('data').empty_strings_allowed and
+ data[3] is None)]
+
# Dynamically create serializer tests to ensure that all
# registered serializers are automatically tested.
class SerializerTests(unittest.TestCase):