public void Should_replace_edge_with_generic_object()
{
Database.ClearTestCollection(Database.TestEdgeCollectionName);
var db = new ADatabase(Database.Alias);
var document = new Dictionary<string, object>()
.String("foo", "some string")
.Int("bar", 12345);
var createResult = db
.Document
.CreateEdge(Database.TestEdgeCollectionName, _documents[0].ID(), _documents[1].ID(), document);
var dummy = new Dummy();
dummy.Foo = "some other new string";
dummy.Baz = 54321;
var replaceResult = db
.Document
.ReplaceEdge(createResult.Value.ID(), _documents[0].ID(), _documents[1].ID(), dummy);
Assert.AreEqual(202, replaceResult.StatusCode);
Assert.IsTrue(replaceResult.Success);
Assert.IsTrue(replaceResult.HasValue);
Assert.AreEqual(replaceResult.Value.ID(), createResult.Value.ID());
Assert.AreEqual(replaceResult.Value.Key(), createResult.Value.Key());
Assert.AreNotEqual(replaceResult.Value.Rev(), createResult.Value.Rev());
var getResult = db
.Document
.Get(replaceResult.Value.ID());
Assert.AreEqual(getResult.Value.ID(), replaceResult.Value.ID());
Assert.AreEqual(getResult.Value.Key(), replaceResult.Value.Key());
Assert.AreEqual(getResult.Value.Rev(), replaceResult.Value.Rev());
Assert.AreNotEqual(getResult.Value.String("foo"), document.String("foo"));
Assert.AreEqual(getResult.Value.String("foo"), dummy.Foo);
Assert.AreEqual(getResult.Value.Int("baz"), dummy.Baz);
Assert.AreEqual(0, getResult.Value.Int("bar"));
}