diff options
| author | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-12-13 09:16:03 +0100 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-01-15 22:28:37 +0100 |
| commit | d5fec03dad035e88494bf55194cbbbe4b20b5e5b (patch) | |
| tree | f8c67a9f0bbd482984b683182102da82e16c00b6 /tests/basic/tests.py | |
| parent | 8d695bf510154317a5f748aa5e705124e8b06001 (diff) | |
Refs #35060 -- Removed passing positional arguments to Model.save()/asave() per deprecation timeline.
Diffstat (limited to 'tests/basic/tests.py')
| -rw-r--r-- | tests/basic/tests.py | 141 |
1 files changed, 1 insertions, 140 deletions
diff --git a/tests/basic/tests.py b/tests/basic/tests.py index 6c2f9f2bd2..f6eabfaed7 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -20,9 +20,8 @@ from django.test import ( TransactionTestCase, skipUnlessDBFeature, ) -from django.test.utils import CaptureQueriesContext, ignore_warnings +from django.test.utils import CaptureQueriesContext from django.utils.connection import ConnectionDoesNotExist -from django.utils.deprecation import RemovedInDjango60Warning from django.utils.translation import gettext_lazy from .models import ( @@ -213,144 +212,6 @@ class ModelInstanceCreationTests(TestCase): 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" - with self.assertWarnsMessage(RemovedInDjango60Warning, msg) as ctx: - a.save(False, False, None, None) - self.assertEqual(Article.objects.count(), 1) - self.assertEqual(ctx.filename, __file__) - - def test_save_deprecation_positional_arguments_used(self): - a = Article() - fields = ["headline"] - with ( - self.assertWarns(RemovedInDjango60Warning), - mock.patch.object(a, "save_base") as mock_save_base, - ): - a.save(None, 1, 2, fields) - self.assertEqual( - mock_save_base.mock_calls, - [ - mock.call( - using=2, - force_insert=None, - force_update=1, - update_fields=frozenset(fields), - ) - ], - ) - - def test_save_too_many_positional_arguments(self): - a = Article() - msg = "Model.save() takes from 1 to 5 positional arguments but 6 were given" - with ( - self.assertWarns(RemovedInDjango60Warning), - self.assertRaisesMessage(TypeError, msg), - ): - a.save(False, False, None, None, None) - - def test_save_conflicting_positional_and_named_arguments(self): - a = Article() - cases = [ - ("force_insert", True, [42]), - ("force_update", None, [42, 41]), - ("using", "some-db", [42, 41, 40]), - ("update_fields", ["foo"], [42, 41, 40, 39]), - ] - for param_name, param_value, args in cases: - with self.subTest(param_name=param_name): - msg = f"Model.save() got multiple values for argument '{param_name}'" - with ( - self.assertWarns(RemovedInDjango60Warning), - self.assertRaisesMessage(TypeError, msg), - ): - a.save(*args, **{param_name: param_value}) - - async def test_asave_deprecation(self): - a = Article(headline="original", pub_date=datetime(2014, 5, 16)) - msg = "Passing positional arguments to asave() is deprecated" - with self.assertWarnsMessage(RemovedInDjango60Warning, msg) as ctx: - await a.asave(False, False, None, None) - self.assertEqual(await Article.objects.acount(), 1) - self.assertEqual(ctx.filename, __file__) - - async def test_asave_deprecation_positional_arguments_used(self): - a = Article() - fields = ["headline"] - with ( - self.assertWarns(RemovedInDjango60Warning), - mock.patch.object(a, "save_base") as mock_save_base, - ): - await a.asave(None, 1, 2, fields) - self.assertEqual( - mock_save_base.mock_calls, - [ - mock.call( - using=2, - force_insert=None, - force_update=1, - update_fields=frozenset(fields), - ) - ], - ) - - async def test_asave_too_many_positional_arguments(self): - a = Article() - msg = "Model.asave() takes from 1 to 5 positional arguments but 6 were given" - with ( - self.assertWarns(RemovedInDjango60Warning), - self.assertRaisesMessage(TypeError, msg), - ): - await a.asave(False, False, None, None, None) - - async def test_asave_conflicting_positional_and_named_arguments(self): - a = Article() - cases = [ - ("force_insert", True, [42]), - ("force_update", None, [42, 41]), - ("using", "some-db", [42, 41, 40]), - ("update_fields", ["foo"], [42, 41, 40, 39]), - ] - for param_name, param_value, args in cases: - with self.subTest(param_name=param_name): - msg = f"Model.asave() got multiple values for argument '{param_name}'" - with ( - self.assertWarns(RemovedInDjango60Warning), - self.assertRaisesMessage(TypeError, msg), - ): - await a.asave(*args, **{param_name: param_value}) - - @ignore_warnings(category=RemovedInDjango60Warning) - def test_save_positional_arguments(self): - a = Article.objects.create(headline="original", pub_date=datetime(2014, 5, 16)) - a.headline = "changed" - - a.save(False, False, None, ["pub_date"]) - a.refresh_from_db() - self.assertEqual(a.headline, "original") - - a.headline = "changed" - a.save(False, False, None, ["pub_date", "headline"]) - a.refresh_from_db() - self.assertEqual(a.headline, "changed") - - @ignore_warnings(category=RemovedInDjango60Warning) - async def test_asave_positional_arguments(self): - a = await Article.objects.acreate( - headline="original", pub_date=datetime(2014, 5, 16) - ) - a.headline = "changed" - - await a.asave(False, False, None, ["pub_date"]) - await a.arefresh_from_db() - self.assertEqual(a.headline, "original") - - a.headline = "changed" - await a.asave(False, False, None, ["pub_date", "headline"]) - await a.arefresh_from_db() - self.assertEqual(a.headline, "changed") - class ModelTest(TestCase): def test_objects_attribute_is_only_available_on_the_class_itself(self): |
