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")
|
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):
|
def setUp(self):
|
||||||
class Job(EmbeddedDocument):
|
class Job(EmbeddedDocument):
|
||||||
name = StringField()
|
name = StringField()
|
||||||
@ -3599,6 +3599,51 @@ class InstanceTest(MongoDBTestCase):
|
|||||||
self.assertEqual(b._instance, a)
|
self.assertEqual(b._instance, a)
|
||||||
self.assertEqual(idx, 2)
|
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):
|
def test_falsey_pk(self):
|
||||||
"""Ensure that we can create and update a document with Falsey PK."""
|
"""Ensure that we can create and update a document with Falsey PK."""
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user