diff options
Diffstat (limited to 'tests/basic/tests.py')
| -rw-r--r-- | tests/basic/tests.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/basic/tests.py b/tests/basic/tests.py index 4e89febed2..6fb67f7e6e 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -239,6 +239,23 @@ class ModelInstanceCreationTests(TestCase): ): 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" @@ -275,6 +292,23 @@ class ModelInstanceCreationTests(TestCase): ): 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)) |
