PYTHON-1690: Fix error message when insert_many is given a single RawBSONDocument instead of a list (#580)

This commit is contained in:
William Zhou 2021-03-22 11:13:42 -07:00 committed by GitHub
parent 80adc13195
commit 94f4de1f2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 1 deletions

View File

@ -686,7 +686,9 @@ class Collection(common.BaseObject):
.. versionadded:: 3.0
"""
if not isinstance(documents, abc.Iterable) or not documents:
if (not isinstance(documents, abc.Iterable)
or isinstance(documents, abc.Mapping)
or not documents):
raise TypeError("documents must be a non-empty list")
inserted_ids = []
def gen():

View File

@ -786,6 +786,25 @@ class TestCollection(IntegrationTest):
self.assertFalse(result.acknowledged)
self.assertEqual(20, db.test.count_documents({}))
def test_insert_many_invalid(self):
db = self.db
with self.assertRaisesRegex(
TypeError, "documents must be a non-empty list"):
db.test.insert_many({})
with self.assertRaisesRegex(
TypeError, "documents must be a non-empty list"):
db.test.insert_many([])
with self.assertRaisesRegex(
TypeError, "documents must be a non-empty list"):
db.test.insert_many(1)
with self.assertRaisesRegex(
TypeError, "documents must be a non-empty list"):
db.test.insert_many(RawBSONDocument(encode({'_id': 2})))
def test_delete_one(self):
self.db.test.drop()