Merge pull request #4786 from coldmind/refs_22728

Refs #22728 - Added missing tests for defaults__exact case
This commit is contained in:
Marc Tamlyn 2015-06-05 10:33:03 +01:00
commit 1f28521e0a
2 changed files with 45 additions and 0 deletions

View File

@ -9,6 +9,7 @@ class Person(models.Model):
first_name = models.CharField(max_length=100) first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100)
birthday = models.DateField() birthday = models.DateField()
defaults = models.TextField()
def __str__(self): def __str__(self):
return '%s %s' % (self.first_name, self.last_name) return '%s %s' % (self.first_name, self.last_name)

View File

@ -126,6 +126,28 @@ class GetOrCreateTests(TestCase):
# The publisher should have three books. # The publisher should have three books.
self.assertEqual(p.books.count(), 3) self.assertEqual(p.books.count(), 3)
def test_defaults_exact(self):
"""
If you have a field named defaults and want to use it as an exact
lookup, you need to use 'defaults__exact'.
"""
obj, created = Person.objects.get_or_create(
first_name='George', last_name='Harrison', defaults__exact='testing', defaults={
'birthday': date(1943, 2, 25),
'defaults': 'testing',
}
)
self.assertTrue(created)
self.assertEqual(obj.defaults, 'testing')
obj2, created = Person.objects.get_or_create(
first_name='George', last_name='Harrison', defaults__exact='testing', defaults={
'birthday': date(1943, 2, 25),
'defaults': 'testing',
}
)
self.assertFalse(created)
self.assertEqual(obj, obj2)
class GetOrCreateTestsWithManualPKs(TestCase): class GetOrCreateTestsWithManualPKs(TestCase):
@ -348,3 +370,25 @@ class UpdateOrCreateTests(TestCase):
self.assertFalse(created) self.assertFalse(created)
self.assertEqual(book.name, name) self.assertEqual(book.name, name)
self.assertEqual(author.books.count(), 1) self.assertEqual(author.books.count(), 1)
def test_defaults_exact(self):
"""
If you have a field named defaults and want to use it as an exact
lookup, you need to use 'defaults__exact'.
"""
obj, created = Person.objects.update_or_create(
first_name='George', last_name='Harrison', defaults__exact='testing', defaults={
'birthday': date(1943, 2, 25),
'defaults': 'testing',
}
)
self.assertTrue(created)
self.assertEqual(obj.defaults, 'testing')
obj, created = Person.objects.update_or_create(
first_name='George', last_name='Harrison', defaults__exact='testing', defaults={
'birthday': date(1943, 2, 25),
'defaults': 'another testing',
}
)
self.assertFalse(created)
self.assertEqual(obj.defaults, 'another testing')