Skip to content

Commit 6c2af4c

Browse files
committed
Add unit test.
1 parent d5bd06b commit 6c2af4c

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

tests/queries_/tests.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from django.db.models import Value
2+
from django.test import TestCase
3+
4+
from django_mongodb_backend.test import MongoTestCaseMixin
5+
6+
from .models import Author
7+
8+
9+
class SaveUpdateDollarPrefixTests(MongoTestCaseMixin, TestCase):
10+
def test_insert_dollar_prefix(self):
11+
"""Ensure $-prefixed values are correctly saved on insert."""
12+
obj = Author.objects.create(name="$foobar")
13+
refreshed = Author.objects.get(pk=obj.pk)
14+
self.assertEqual(refreshed.name, "$foobar")
15+
16+
def test_update_dollar_prefix(self):
17+
"""Ensure $-prefixed values are correctly saved on update."""
18+
obj = Author.objects.create(name="foobar")
19+
with self.assertNumQueries(1) as ctx:
20+
obj.name = "$updated"
21+
obj.save()
22+
refreshed = Author.objects.get(pk=obj.pk)
23+
self.assertEqual(refreshed.name, "$updated")
24+
self.assertUpdateQuery(
25+
ctx.captured_queries[0]["sql"],
26+
"queries__author",
27+
{"_id": obj.id},
28+
[{"$set": {"name": {"$literal": "$updated"}}}],
29+
)
30+
31+
def test_update_dollar_prefix_in_value_expression(self):
32+
"""Ensure $-prefixed Value() expressions are correctly handled on update."""
33+
obj = Author.objects.create(name="foobar")
34+
with self.assertNumQueries(1) as ctx:
35+
obj.name = Value("$updated")
36+
obj.save()
37+
refreshed = Author.objects.get(pk=obj.pk)
38+
self.assertEqual(refreshed.name, "$updated")
39+
self.assertUpdateQuery(
40+
ctx.captured_queries[0]["sql"],
41+
"queries__author",
42+
{"_id": obj.id},
43+
[{"$set": {"name": {"$literal": "$updated"}}}],
44+
)

0 commit comments

Comments
 (0)