public void Should_execute_transaction_with_object_parameter_and_return_document_ID()
{
Database.ClearTestCollection(Database.TestDocumentCollectionName);
var db = new ADatabase(Database.Alias);
var transactionData = new TransactionEntity
{
Foo = "Some string value"
};
var transactionResult = db.Transaction
.WriteCollection(Database.TestDocumentCollectionName)
.Param("data", transactionData)
.Execute<string>(@"
function (params) {
var db = require('internal').db;
return db." + Database.TestDocumentCollectionName + @".save(params.data)._id;
}
");
Assert.AreEqual(200, transactionResult.StatusCode);
Assert.IsTrue(transactionResult.Success);
Assert.IsTrue(transactionResult.HasValue);
Assert.IsFalse(string.IsNullOrEmpty(transactionResult.Value));
var docId = transactionResult.Value;
var getResult = db.Document
.Get(docId);
Assert.AreEqual(200, getResult.StatusCode);
Assert.IsTrue(getResult.Success);
Assert.IsTrue(getResult.HasValue);
Assert.AreEqual(getResult.Value.ID(), docId);
Assert.AreEqual(transactionData.Foo, getResult.Value.String("Foo"));
}