Add test case for list update by negative index
This commit is contained in:
parent
c5080e4030
commit
c68e3e1238
@ -39,10 +39,10 @@ from tests.utils import MongoDBTestCase, get_as_pymongo
|
||||
|
||||
TEST_IMAGE_PATH = os.path.join(os.path.dirname(__file__), "../fields/mongoengine.png")
|
||||
|
||||
__all__ = ("InstanceTest",)
|
||||
__all__ = ("TestDocumentInstance",)
|
||||
|
||||
|
||||
class InstanceTest(MongoDBTestCase):
|
||||
class TestDocumentInstance(MongoDBTestCase):
|
||||
def setUp(self):
|
||||
class Job(EmbeddedDocument):
|
||||
name = StringField()
|
||||
@ -3599,6 +3599,51 @@ class InstanceTest(MongoDBTestCase):
|
||||
self.assertEqual(b._instance, a)
|
||||
self.assertEqual(idx, 2)
|
||||
|
||||
def test_updating_listfield_manipulate_list(self):
|
||||
class Company(Document):
|
||||
name = StringField()
|
||||
employees = ListField(field=DictField())
|
||||
|
||||
Company.drop_collection()
|
||||
|
||||
comp = Company(name="BigBank", employees=[{"name": "John"}])
|
||||
comp.save()
|
||||
comp.employees.append({"name": "Bill"})
|
||||
comp.save()
|
||||
|
||||
stored_comp = get_as_pymongo(comp)
|
||||
self.assertEqual(
|
||||
stored_comp,
|
||||
{
|
||||
"_id": comp.id,
|
||||
"employees": [{"name": "John"}, {"name": "Bill"}],
|
||||
"name": "BigBank",
|
||||
},
|
||||
)
|
||||
|
||||
comp = comp.reload()
|
||||
comp.employees[0]["color"] = "red"
|
||||
comp.employees[-1]["color"] = "blue"
|
||||
comp.employees[-1].update({"size": "xl"})
|
||||
comp.save()
|
||||
|
||||
assert len(comp.employees) == 2
|
||||
assert comp.employees[0] == {"name": "John", "color": "red"}
|
||||
assert comp.employees[1] == {"name": "Bill", "size": "xl", "color": "blue"}
|
||||
|
||||
stored_comp = get_as_pymongo(comp)
|
||||
self.assertEqual(
|
||||
stored_comp,
|
||||
{
|
||||
"_id": comp.id,
|
||||
"employees": [
|
||||
{"name": "John", "color": "red"},
|
||||
{"size": "xl", "color": "blue", "name": "Bill"},
|
||||
],
|
||||
"name": "BigBank",
|
||||
},
|
||||
)
|
||||
|
||||
def test_falsey_pk(self):
|
||||
"""Ensure that we can create and update a document with Falsey PK."""
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user