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

Method test_update

tests/document/test_instance.py:1374–1457  ·  view source on GitHub ↗

Ensure that an existing document is updated instead of be overwritten.

(self)

Source from the content-addressed store, hash-verified

1372 assert fresh_boy.name == "Bob"
1373
1374 def test_update(self):
1375 """Ensure that an existing document is updated instead of be
1376 overwritten.
1377 """
1378 # Create person object and save it to the database
1379 person = self.Person(name="Test User", age=30)
1380 person.save()
1381
1382 # Create same person object, with same id, without age
1383 same_person = self.Person(name="Test")
1384 same_person.id = person.id
1385 same_person.save()
1386
1387 # Confirm only one object
1388 assert self.Person.objects.count() == 1
1389
1390 # reload
1391 person.reload()
1392 same_person.reload()
1393
1394 # Confirm the same
1395 assert person == same_person
1396 assert person.name == same_person.name
1397 assert person.age == same_person.age
1398
1399 # Confirm the saved values
1400 assert person.name == "Test"
1401 assert person.age == 30
1402
1403 # Test only / exclude only updates included fields
1404 person = self.Person.objects.only("name").get()
1405 person.name = "User"
1406 person.save()
1407
1408 person.reload()
1409 assert person.name == "User"
1410 assert person.age == 30
1411
1412 # test exclude only updates set fields
1413 person = self.Person.objects.exclude("name").get()
1414 person.age = 21
1415 person.save()
1416
1417 person.reload()
1418 assert person.name == "User"
1419 assert person.age == 21
1420
1421 # Test only / exclude can set non excluded / included fields
1422 person = self.Person.objects.only("name").get()
1423 person.name = "Test"
1424 person.age = 30
1425 person.save()
1426
1427 person.reload()
1428 assert person.name == "Test"
1429 assert person.age == 30
1430
1431 # test exclude only updates set fields

Callers

nothing calls this directly

Calls 6

reloadMethod · 0.80
onlyMethod · 0.80
saveMethod · 0.45
countMethod · 0.45
getMethod · 0.45
excludeMethod · 0.45

Tested by

no test coverage detected