public void Should_update_document_with_keepNull()
{
var db = new ADatabase(Database.Alias);
var newDocument = new Dictionary<string, object>()
.String("foo", "some string")
.Object("bar", null);
var createResult = db.Document
.Create(Database.TestDocumentCollectionName, newDocument);
newDocument.Merge(createResult.Value);
var document = new Dictionary<string, object>()
.String("foo", "some other new string")
.Object("baz", null);
var updateResult = db.Document
.KeepNull(false)
.Update(newDocument.ID(), document);
Assert.AreEqual(202, updateResult.StatusCode);
Assert.IsTrue(updateResult.Success);
Assert.IsTrue(updateResult.HasValue);
Assert.AreEqual(updateResult.Value.ID(), newDocument.ID());
Assert.AreEqual(updateResult.Value.Key(), newDocument.Key());
Assert.AreNotEqual(updateResult.Value.Rev(), newDocument.Rev());
var getResult = db.Document
.Get(updateResult.Value.ID());
Assert.AreEqual(getResult.Value.ID(), updateResult.Value.ID());
Assert.AreEqual(getResult.Value.Key(), updateResult.Value.Key());
Assert.AreEqual(getResult.Value.Rev(), updateResult.Value.Rev());
Assert.AreNotEqual(getResult.Value.String("foo"), newDocument.String("foo"));
Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));
Assert.IsTrue(getResult.Value.Has("bar"));
Assert.IsFalse(getResult.Value.Has("baz"));
}