public void Should_execute_transaction_with_list_parameter_and_return_document_IDs()
{
Database.ClearTestCollection(Database.TestDocumentCollectionName);
var db = new ADatabase(Database.Alias);
var transactionData = new List<TransactionEntity>
{
new TransactionEntity
{
Foo = "string1"
},
new TransactionEntity
{
Foo = "string2"
},
new TransactionEntity
{
Foo = "string3"
}
};
var transactionResult = db.Transaction
.WriteCollection(Database.TestDocumentCollectionName)
.Param("data", transactionData)
.Execute<List<TransactionEntity>>(@"
function (params) {
var db = require('internal').db;
for (var i = 0; i < params.data.length; i++) {
db." + Database.TestDocumentCollectionName + @".save(params.data[i]);
}
return db._query('FOR doc IN " + Database.TestDocumentCollectionName + @" SORT TO_NUMBER(doc._key) RETURN doc').toArray();
}
");
Assert.AreEqual(200, transactionResult.StatusCode);
Assert.IsTrue(transactionResult.Success);
Assert.IsTrue(transactionResult.HasValue);
Assert.AreEqual(3, transactionResult.Value.Count);
for (int i = 0; i < transactionResult.Value.Count; i++)
{
Assert.AreEqual(transactionData[i].Foo, transactionResult.Value[i].Foo);
}
}