Skip to content

Commit 94f4de1

Browse files
authored
PYTHON-1690: Fix error message when insert_many is given a single RawBSONDocument instead of a list (#580)
1 parent 80adc13 commit 94f4de1

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

pymongo/collection.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,9 @@ def insert_many(self, documents, ordered=True,
686686
687687
.. versionadded:: 3.0
688688
"""
689-
if not isinstance(documents, abc.Iterable) or not documents:
689+
if (not isinstance(documents, abc.Iterable)
690+
or isinstance(documents, abc.Mapping)
691+
or not documents):
690692
raise TypeError("documents must be a non-empty list")
691693
inserted_ids = []
692694
def gen():

test/test_collection.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,25 @@ def test_insert_many(self):
786786
self.assertFalse(result.acknowledged)
787787
self.assertEqual(20, db.test.count_documents({}))
788788

789+
def test_insert_many_invalid(self):
790+
db = self.db
791+
792+
with self.assertRaisesRegex(
793+
TypeError, "documents must be a non-empty list"):
794+
db.test.insert_many({})
795+
796+
with self.assertRaisesRegex(
797+
TypeError, "documents must be a non-empty list"):
798+
db.test.insert_many([])
799+
800+
with self.assertRaisesRegex(
801+
TypeError, "documents must be a non-empty list"):
802+
db.test.insert_many(1)
803+
804+
with self.assertRaisesRegex(
805+
TypeError, "documents must be a non-empty list"):
806+
db.test.insert_many(RawBSONDocument(encode({'_id': 2})))
807+
789808
def test_delete_one(self):
790809
self.db.test.drop()
791810

0 commit comments

Comments
 (0)