Skip to content

Commit b33d766

Browse files
committed
Add engine kwarg and test
1 parent f5a9133 commit b33d766

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

django_mongodb/utils.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def check_django_compatability():
2626
)
2727

2828

29-
def parse(uri):
29+
def parse(uri, engine=None):
3030
"""
3131
Parse a MongoDB URI and return a dictionary of Django database
3232
settings. This function is a wrapper around PyMongo's
@@ -38,6 +38,9 @@ def parse(uri):
3838
host = None
3939
port = None
4040

41+
if not engine:
42+
engine = "django_mongodb"
43+
4144
if uri["fqdn"] is not None:
4245
# If the fqdn is present, this is a SRV URI and the host is the fqdn.
4346
host = f"mongodb+srv://{uri['fqdn']}"
@@ -49,7 +52,7 @@ def parse(uri):
4952
host = ",".join([f"{host}:{port}" for host, port in nodelist])
5053

5154
return {
52-
"ENGINE": "django_mongodb",
55+
"ENGINE": engine,
5356
"NAME": uri["database"],
5457
"HOST": host,
5558
"PORT": port,

tests/utils_/test_parse.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,32 @@
44

55
import django_mongodb
66

7-
MONGODB_URI = "mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/myDatabase?retryWrites=true&w=majority"
7+
URI = "mongodb+srv://myDatabaseUser:D1fficultP%[email protected]/myDatabase?retryWrites=true&w=majority"
88

99

1010
class MongoParseURITests(SimpleTestCase):
1111
"""
1212
Test django_mongodb.parse(uri) function
1313
"""
1414

15+
def setUp(self):
16+
self.srv_record = MagicMock()
17+
self.srv_record.target.to_text.return_value = "cluster0.example.mongodb.net"
18+
self.patcher = patch("dns.resolver.resolve", return_value=[self.srv_record])
19+
self.mock_resolver = self.patcher.start()
20+
self.addCleanup(self.patcher.stop)
21+
1522
@patch("dns.resolver.resolve")
1623
def test_parse(self, mock_resolver):
17-
srv_record = MagicMock()
18-
srv_record.target.to_text.return_value = "cluster0.example.mongodb.net"
19-
mock_resolver.return_value = [srv_record]
20-
settings_dict = django_mongodb.parse(MONGODB_URI)
24+
settings_dict = django_mongodb.parse(URI)
2125
self.assertEqual(settings_dict["ENGINE"], "django_mongodb")
2226
self.assertEqual(settings_dict["NAME"], "myDatabase")
2327
self.assertEqual(settings_dict["HOST"], "mongodb+srv://cluster0.example.mongodb.net")
2428
self.assertEqual(settings_dict["USER"], "myDatabaseUser")
2529
self.assertEqual(settings_dict["PASSWORD"], "D1fficultP@ssw0rd")
2630
self.assertEqual(settings_dict["PORT"], None)
31+
32+
@patch("dns.resolver.resolve")
33+
def test_engine_kwarg(self, mock_resolver):
34+
settings_dict = django_mongodb.parse(URI, engine="some_other_engine")
35+
self.assertEqual(settings_dict["ENGINE"], "some_other_engine")

0 commit comments

Comments
 (0)