Skip to content

Commit 8174713

Browse files
authored
PYTHON-1690: Fix error message when insert_many is given a single RawBSONDocument instead of a list (#580) (#582)
1 parent c40a455 commit 8174713

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
@@ -745,7 +745,9 @@ def insert_many(self, documents, ordered=True,
745745
746746
.. versionadded:: 3.0
747747
"""
748-
if not isinstance(documents, abc.Iterable) or not documents:
748+
if (not isinstance(documents, abc.Iterable)
749+
or isinstance(documents, abc.Mapping)
750+
or not documents):
749751
raise TypeError("documents must be a non-empty list")
750752
inserted_ids = []
751753
def gen():

test/test_collection.py

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

829+
def test_insert_many_invalid(self):
830+
db = self.db
831+
832+
with self.assertRaisesRegex(
833+
TypeError, "documents must be a non-empty list"):
834+
db.test.insert_many({})
835+
836+
with self.assertRaisesRegex(
837+
TypeError, "documents must be a non-empty list"):
838+
db.test.insert_many([])
839+
840+
with self.assertRaisesRegex(
841+
TypeError, "documents must be a non-empty list"):
842+
db.test.insert_many(1)
843+
844+
with self.assertRaisesRegex(
845+
TypeError, "documents must be a non-empty list"):
846+
db.test.insert_many(RawBSONDocument(encode({'_id': 2})))
847+
829848
def test_delete_one(self):
830849
self.db.test.drop()
831850

0 commit comments

Comments
 (0)