MCPcopy Create free account
hub / github.com/MongoEngine/mongoengine / delta_recursive_db_field

Method delta_recursive_db_field

tests/document/test_delta.py:445–655  ·  view source on GitHub ↗
(DocClass, EmbeddedClass)

Source from the content-addressed store, hash-verified

443
444 @staticmethod
445 def delta_recursive_db_field(DocClass, EmbeddedClass):
446 class Embedded(EmbeddedClass):
447 string_field = StringField(db_field="db_string_field")
448 int_field = IntField(db_field="db_int_field")
449 dict_field = DictField(db_field="db_dict_field")
450 list_field = ListField(db_field="db_list_field")
451
452 class Doc(DocClass):
453 string_field = StringField(db_field="db_string_field")
454 int_field = IntField(db_field="db_int_field")
455 dict_field = DictField(db_field="db_dict_field")
456 list_field = ListField(db_field="db_list_field")
457 embedded_field = EmbeddedDocumentField(
458 Embedded, db_field="db_embedded_field"
459 )
460
461 Doc.drop_collection()
462 doc = Doc()
463 doc.save()
464
465 doc = Doc.objects.first()
466 assert doc._get_changed_fields() == []
467 assert doc._delta() == ({}, {})
468
469 embedded_1 = Embedded()
470 embedded_1.string_field = "hello"
471 embedded_1.int_field = 1
472 embedded_1.dict_field = {"hello": "world"}
473 embedded_1.list_field = ["1", 2, {"hello": "world"}]
474 doc.embedded_field = embedded_1
475
476 assert doc._get_changed_fields() == ["db_embedded_field"]
477
478 embedded_delta = {
479 "db_string_field": "hello",
480 "db_int_field": 1,
481 "db_dict_field": {"hello": "world"},
482 "db_list_field": ["1", 2, {"hello": "world"}],
483 }
484 assert doc.embedded_field._delta() == (embedded_delta, {})
485 assert doc._delta() == ({"db_embedded_field": embedded_delta}, {})
486
487 doc.save()
488 doc = doc.reload(10)
489
490 doc.embedded_field.dict_field = {}
491 assert doc._get_changed_fields() == ["db_embedded_field.db_dict_field"]
492 assert doc.embedded_field._delta() == ({}, {"db_dict_field": 1})
493 assert doc._delta() == ({}, {"db_embedded_field.db_dict_field": 1})
494 doc.save()
495 doc = doc.reload(10)
496 assert doc.embedded_field.dict_field == {}
497
498 assert doc._get_changed_fields() == []
499 doc.embedded_field.list_field = []
500 assert doc._get_changed_fields() == ["db_embedded_field.db_list_field"]
501 assert doc.embedded_field._delta() == ({}, {"db_list_field": 1})
502 assert doc._delta() == ({}, {"db_embedded_field.db_list_field": 1})

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