diff options
| author | Will Koster <ddsnowboard@gmail.com> | 2016-05-25 15:33:35 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-06-03 10:00:53 -0400 |
| commit | 9899347641b2d3b4457cc99203a2b06504b32a16 (patch) | |
| tree | 0d6852e40b18d011d3e9db16d68569f8d5c436f3 /tests | |
| parent | 44c7e5d3740edf796591ea3a89b0ff085534f225 (diff) | |
Fixed #26638 -- Allowed callable arguments for QuerySet.get_or_create()/update_or_create() defaults.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/get_or_create/tests.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/get_or_create/tests.py b/tests/get_or_create/tests.py index 0f790e67b2..84f8261a92 100644 --- a/tests/get_or_create/tests.py +++ b/tests/get_or_create/tests.py @@ -146,6 +146,25 @@ class GetOrCreateTests(TestCase): self.assertFalse(created) self.assertEqual(obj, obj2) + def test_callable_defaults(self): + """ + Callables in `defaults` are evaluated if the instance is created. + """ + obj, created = Person.objects.get_or_create( + first_name="George", + defaults={"last_name": "Harrison", "birthday": lambda: date(1943, 2, 25)}, + ) + self.assertTrue(created) + self.assertEqual(date(1943, 2, 25), obj.birthday) + + def test_callable_defaults_not_called(self): + def raise_exception(): + raise AssertionError + obj, created = Person.objects.get_or_create( + first_name="John", last_name="Lennon", + defaults={"birthday": lambda: raise_exception()}, + ) + class GetOrCreateTestsWithManualPKs(TestCase): @@ -387,3 +406,10 @@ class UpdateOrCreateTests(TestCase): ) self.assertFalse(created) self.assertEqual(obj.defaults, 'another testing') + + def test_update_callable_default(self): + obj, created = Person.objects.update_or_create( + first_name='George', last_name='Harrison', + defaults={'birthday': lambda: date(1943, 2, 25)}, + ) + self.assertEqual(obj.birthday, date(1943, 2, 25)) |
