From 8287fd49151b1b99045efbf3de8ef911d63c5f45 Mon Sep 17 00:00:00 2001 From: Bendeguz Csirmaz Date: Fri, 10 Jan 2025 08:44:10 +0100 Subject: [PATCH] Refs #36064 -- Added test that falsey primary key default/db_default value skips an update query on save. This adds test coverage for logic change in 9fa4d07ce0729850661a31a6b37c6b48f13d2266. --- tests/basic/models.py | 8 ++++++++ tests/basic/tests.py | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/tests/basic/models.py b/tests/basic/models.py index 236884f4cc..1e6059ee88 100644 --- a/tests/basic/models.py +++ b/tests/basic/models.py @@ -57,5 +57,13 @@ class PrimaryKeyWithDbDefault(models.Model): uuid = models.IntegerField(primary_key=True, db_default=1) +class PrimaryKeyWithFalseyDefault(models.Model): + uuid = models.IntegerField(primary_key=True, default=0) + + +class PrimaryKeyWithFalseyDbDefault(models.Model): + uuid = models.IntegerField(primary_key=True, db_default=0) + + class ChildPrimaryKeyWithDefault(PrimaryKeyWithDefault): pass diff --git a/tests/basic/tests.py b/tests/basic/tests.py index cb267be0b1..6c2f9f2bd2 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -32,6 +32,8 @@ from .models import ( FeaturedArticle, PrimaryKeyWithDbDefault, PrimaryKeyWithDefault, + PrimaryKeyWithFalseyDbDefault, + PrimaryKeyWithFalseyDefault, SelfRef, ) @@ -203,6 +205,14 @@ class ModelInstanceCreationTests(TestCase): with self.assertNumQueries(2): ChildPrimaryKeyWithDefault().save() + def test_save_primary_with_falsey_default(self): + with self.assertNumQueries(1): + PrimaryKeyWithFalseyDefault().save() + + def test_save_primary_with_falsey_db_default(self): + with self.assertNumQueries(1): + PrimaryKeyWithFalseyDbDefault().save() + def test_save_deprecation(self): a = Article(headline="original", pub_date=datetime(2014, 5, 16)) msg = "Passing positional arguments to save() is deprecated"