summaryrefslogtreecommitdiff
path: root/tests/reserved_names
diff options
context:
space:
mode:
authorFlorian Apolloner <florian@apolloner.eu>2013-02-26 09:53:47 +0100
committerFlorian Apolloner <florian@apolloner.eu>2013-02-26 14:36:57 +0100
commit89f40e36246100df6a11316c31a76712ebc6c501 (patch)
tree6e65639683ddaf2027908d1ecb1739e0e2ff853b /tests/reserved_names
parentb3d2ccb5bfbaf6e7fe1f98843baaa48c35a70950 (diff)
downloaddjango-89f40e36246100df6a11316c31a76712ebc6c501.tar.gz
Merged regressiontests and modeltests into the test root.
Diffstat (limited to 'tests/reserved_names')
-rw-r--r--tests/reserved_names/__init__.py0
-rw-r--r--tests/reserved_names/models.py28
-rw-r--r--tests/reserved_names/tests.py51
3 files changed, 79 insertions, 0 deletions
diff --git a/tests/reserved_names/__init__.py b/tests/reserved_names/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/reserved_names/__init__.py
diff --git a/tests/reserved_names/models.py b/tests/reserved_names/models.py
new file mode 100644
index 0000000000..8e942b20e8
--- /dev/null
+++ b/tests/reserved_names/models.py
@@ -0,0 +1,28 @@
+"""
+18. Using SQL reserved names
+
+Need to use a reserved SQL name as a column name or table name? Need to include
+a hyphen in a column or table name? No problem. Django quotes names
+appropriately behind the scenes, so your database won't complain about
+reserved-name usage.
+"""
+
+from django.db import models
+from django.utils.encoding import python_2_unicode_compatible
+
+
+@python_2_unicode_compatible
+class Thing(models.Model):
+ when = models.CharField(max_length=1, primary_key=True)
+ join = models.CharField(max_length=1)
+ like = models.CharField(max_length=1)
+ drop = models.CharField(max_length=1)
+ alter = models.CharField(max_length=1)
+ having = models.CharField(max_length=1)
+ where = models.DateField(max_length=1)
+ has_hyphen = models.CharField(max_length=1, db_column='has-hyphen')
+ class Meta:
+ db_table = 'select'
+
+ def __str__(self):
+ return self.when
diff --git a/tests/reserved_names/tests.py b/tests/reserved_names/tests.py
new file mode 100644
index 0000000000..ddffe08d34
--- /dev/null
+++ b/tests/reserved_names/tests.py
@@ -0,0 +1,51 @@
+from __future__ import absolute_import
+
+import datetime
+
+from django.test import TestCase
+
+from .models import Thing
+
+
+class ReservedNameTests(TestCase):
+ def generate(self):
+ day1 = datetime.date(2005, 1, 1)
+ t = Thing.objects.create(when='a', join='b', like='c', drop='d',
+ alter='e', having='f', where=day1, has_hyphen='h')
+ day2 = datetime.date(2006, 2, 2)
+ u = Thing.objects.create(when='h', join='i', like='j', drop='k',
+ alter='l', having='m', where=day2)
+
+ def test_simple(self):
+ day1 = datetime.date(2005, 1, 1)
+ t = Thing.objects.create(when='a', join='b', like='c', drop='d',
+ alter='e', having='f', where=day1, has_hyphen='h')
+ self.assertEqual(t.when, 'a')
+
+ day2 = datetime.date(2006, 2, 2)
+ u = Thing.objects.create(when='h', join='i', like='j', drop='k',
+ alter='l', having='m', where=day2)
+ self.assertEqual(u.when, 'h')
+
+ def test_order_by(self):
+ self.generate()
+ things = [t.when for t in Thing.objects.order_by('when')]
+ self.assertEqual(things, ['a', 'h'])
+
+ def test_fields(self):
+ self.generate()
+ v = Thing.objects.get(pk='a')
+ self.assertEqual(v.join, 'b')
+ self.assertEqual(v.where, datetime.date(year=2005, month=1, day=1))
+
+ def test_dates(self):
+ self.generate()
+ resp = Thing.objects.dates('where', 'year')
+ self.assertEqual(list(resp), [
+ datetime.date(2005, 1, 1),
+ datetime.date(2006, 1, 1),
+ ])
+
+ def test_month_filter(self):
+ self.generate()
+ self.assertEqual(Thing.objects.filter(where__month=1)[0].when, 'a')