summaryrefslogtreecommitdiff
path: root/tests/many_to_many/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/many_to_many/tests.py')
-rw-r--r--tests/many_to_many/tests.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/many_to_many/tests.py b/tests/many_to_many/tests.py
index 53e870ddad..729f011446 100644
--- a/tests/many_to_many/tests.py
+++ b/tests/many_to_many/tests.py
@@ -92,6 +92,25 @@ class ManyToManyTests(TestCase):
a5.authors.remove(user_2.username)
self.assertSequenceEqual(a5.authors.all(), [])
+ def test_related_manager_refresh(self):
+ user_1 = User.objects.create(username="Jean")
+ user_2 = User.objects.create(username="Joe")
+ self.a3.authors.add(user_1.username)
+ self.assertSequenceEqual(user_1.article_set.all(), [self.a3])
+ # Change the username on a different instance of the same user.
+ user_1_from_db = User.objects.get(pk=user_1.pk)
+ self.assertSequenceEqual(user_1_from_db.article_set.all(), [self.a3])
+ user_1_from_db.username = "Paul"
+ self.a3.authors.set([user_2.username])
+ user_1_from_db.save()
+ # Assign a different article.
+ self.a4.authors.add(user_1_from_db.username)
+ self.assertSequenceEqual(user_1_from_db.article_set.all(), [self.a4])
+ # Refresh the instance with an evaluated related manager.
+ user_1.refresh_from_db()
+ self.assertEqual(user_1.username, "Paul")
+ self.assertSequenceEqual(user_1.article_set.all(), [self.a4])
+
def test_add_remove_invalid_type(self):
msg = "Field 'id' expected a number but got 'invalid'."
for method in ["add", "remove"]: