Skip to content

Commit 84c42ed

Browse files
committed
Add tests
1 parent 9634e44 commit 84c42ed

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

mongoengine/connection.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ def _clean_settings(settings_dict):
245245
}
246246

247247
raw_conn_settings = _connection_settings[alias].copy()
248+
248249
# Retrieve a copy of the connection settings associated with the requested
249250
# alias and remove the database name and authentication info (we don't
250251
# care about them at this point).
@@ -269,22 +270,20 @@ def _clean_settings(settings_dict):
269270
if existing_connection:
270271
_connections[alias] = existing_connection
271272
else:
272-
# Otherwise, create the new connection for this alias. Raise
273-
# MongoEngineConnectionError if it can't be established.
274-
try:
275-
_connections[alias] = connection_class(**conn_settings)
276-
except Exception as e:
277-
raise MongoEngineConnectionError(
278-
'Cannot connect to database %s :\n%s' % (alias, e))
273+
_create_connection(alias=alias,
274+
connection_class=connection_class,
275+
**conn_settings)
279276

280277
return _connections[alias]
281278

282279

283-
def _create_connection(connection_class, **connection_settings):
284-
# Otherwise, create the new connection for this alias. Raise
285-
# MongoEngineConnectionError if it can't be established.
280+
def _create_connection(alias, connection_class, **connection_settings):
281+
"""
282+
Create the new connection for this alias. Raise
283+
MongoEngineConnectionError if it can't be established.
284+
"""
286285
try:
287-
_connections[alias] = connection_class(**conn_settings)
286+
_connections[alias] = connection_class(**connection_settings)
288287
except Exception as e:
289288
raise MongoEngineConnectionError(
290289
'Cannot connect to database %s :\n%s' % (alias, e))
@@ -300,7 +299,7 @@ def _find_existing_connection(connection_settings):
300299
:param connection_settings: the settings of the new connection
301300
:return: An existing connection or None
302301
"""
303-
connection_settings_iterator = (
302+
connection_settings_bis = (
304303
(db_alias, settings.copy())
305304
for db_alias, settings in _connection_settings.items()
306305
)
@@ -312,7 +311,7 @@ def _clean_settings(settings_dict):
312311
return {k: v for k, v in settings_dict.items() if k != 'name'}
313312

314313
cleaned_conn_settings = _clean_settings(connection_settings)
315-
for db_alias, connection_settings in connection_settings_iterator:
314+
for db_alias, connection_settings in connection_settings_bis:
316315
db_conn_settings = _clean_settings(connection_settings)
317316
if cleaned_conn_settings == db_conn_settings and _connections.get(db_alias):
318317
return _connections[db_alias]

tests/test_connection.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,16 @@ def test_multiple_connection_settings(self):
611611
self.assertEqual(mongo_connections['t1'].address[0], 'localhost')
612612
self.assertEqual(mongo_connections['t2'].address[0], '127.0.0.1')
613613

614+
def test_connect_2_databases_uses_same_client_if_only_dbname_differs(self):
615+
c1 = connect(alias='testdb1', db='testdb1')
616+
c2 = connect(alias='testdb2', db='testdb2')
617+
self.assertIs(c1, c2)
618+
619+
def test_connect_2_databases_uses_different_client_if_different_parameters(self):
620+
c1 = connect(alias='testdb1', db='testdb1', username='u1')
621+
c2 = connect(alias='testdb2', db='testdb2', username='u2')
622+
self.assertIsNot(c1, c2)
623+
614624

615625
if __name__ == '__main__':
616626
unittest.main()

0 commit comments

Comments
 (0)