MCPcopy Index your code
hub / github.com/MongoEngine/mongoengine / delta_recursive

Method delta_recursive

tests/document/test_delta.py:86–287  ·  view source on GitHub ↗
(self, DocClass, EmbeddedClass)

Source from the content-addressed store, hash-verified

84 self.delta_recursive(DynamicDocument, DynamicEmbeddedDocument)
85
86 def delta_recursive(self, DocClass, EmbeddedClass):
87 class Embedded(EmbeddedClass):
88 id = StringField()
89 string_field = StringField()
90 int_field = IntField()
91 dict_field = DictField()
92 list_field = ListField()
93
94 class Doc(DocClass):
95 string_field = StringField()
96 int_field = IntField()
97 dict_field = DictField()
98 list_field = ListField()
99 embedded_field = EmbeddedDocumentField(Embedded)
100
101 Doc.drop_collection()
102 doc = Doc()
103 doc.save()
104
105 doc = Doc.objects.first()
106 assert doc._get_changed_fields() == []
107 assert doc._delta() == ({}, {})
108
109 embedded_1 = Embedded()
110 embedded_1.id = "010101"
111 embedded_1.string_field = "hello"
112 embedded_1.int_field = 1
113 embedded_1.dict_field = {"hello": "world"}
114 embedded_1.list_field = ["1", 2, {"hello": "world"}]
115 doc.embedded_field = embedded_1
116
117 assert doc._get_changed_fields() == ["embedded_field"]
118
119 embedded_delta = {
120 "id": "010101",
121 "string_field": "hello",
122 "int_field": 1,
123 "dict_field": {"hello": "world"},
124 "list_field": ["1", 2, {"hello": "world"}],
125 }
126 assert doc.embedded_field._delta() == (embedded_delta, {})
127 assert doc._delta() == ({"embedded_field": embedded_delta}, {})
128
129 doc.save()
130 doc = doc.reload(10)
131
132 doc.embedded_field.dict_field = {}
133 assert doc._get_changed_fields() == ["embedded_field.dict_field"]
134 assert doc.embedded_field._delta() == ({}, {"dict_field": 1})
135 assert doc._delta() == ({}, {"embedded_field.dict_field": 1})
136 doc.save()
137 doc = doc.reload(10)
138 assert doc.embedded_field.dict_field == {}
139
140 doc.embedded_field.list_field = []
141 assert doc._get_changed_fields() == ["embedded_field.list_field"]
142 assert doc.embedded_field._delta() == ({}, {"list_field": 1})
143 assert doc._delta() == ({}, {"embedded_field.list_field": 1})

Callers 1

test_delta_recursiveMethod · 0.95

Calls 9

drop_collectionMethod · 0.80
_get_changed_fieldsMethod · 0.80
_deltaMethod · 0.80
reloadMethod · 0.80
popMethod · 0.80
DocClass · 0.70
EmbeddedClass · 0.70
saveMethod · 0.45
firstMethod · 0.45

Tested by

no test coverage detected