public void Should_create_autoincrement_collection()
{
Database.CreateTestDatabase(Database.TestDatabaseGeneral);
var db = new ADatabase(Database.Alias);
var createResult = db.Collection
.KeyGeneratorType(AKeyGeneratorType.Autoincrement)
.Create(Database.TestDocumentCollectionName);
Assert.AreEqual(200, createResult.StatusCode);
Assert.IsTrue(createResult.Success);
Assert.IsTrue(createResult.HasValue);
Assert.AreEqual(true, createResult.Value.IsString("id"));
Assert.AreEqual(Database.TestDocumentCollectionName, createResult.Value.String("name"));
Assert.AreEqual(false, createResult.Value.Bool("waitForSync"));
Assert.AreEqual(false, createResult.Value.Bool("isVolatile"));
Assert.AreEqual(false, createResult.Value.Bool("isSystem"));
Assert.AreEqual(ACollectionStatus.Loaded, createResult.Value.Enum<ACollectionStatus>("status"));
Assert.AreEqual(ACollectionType.Document, createResult.Value.Enum<ACollectionType>("type"));
// create documents and test if their key are incremented accordingly
var newDocument = new Dictionary<string, object>()
.String("foo", "some string")
.Document("bar", new Dictionary<string, object>().String("foo", "string value"));
var doc1Result = db.Document
.Create(Database.TestDocumentCollectionName, newDocument);
Assert.AreEqual(202, doc1Result.StatusCode);
Assert.IsTrue(doc1Result.Success);
Assert.IsTrue(doc1Result.HasValue);
Assert.AreEqual(Database.TestDocumentCollectionName + "/" + 1, doc1Result.Value.ID());
Assert.AreEqual("1", doc1Result.Value.Key());
Assert.IsFalse(string.IsNullOrEmpty(doc1Result.Value.Rev()));
var doc2Result = db.Document
.Create(Database.TestDocumentCollectionName, newDocument);
Assert.AreEqual(202, doc2Result.StatusCode);
Assert.IsTrue(doc2Result.Success);
Assert.IsTrue(doc2Result.HasValue);
Assert.AreEqual(Database.TestDocumentCollectionName + "/" + 2, doc2Result.Value.ID());
Assert.AreEqual("2", doc2Result.Value.Key());
Assert.IsFalse(string.IsNullOrEmpty(doc2Result.Value.Rev()));
}