public void ShouldCreateDatabaseAddDocumentToItReplicateAndRead()
        {
            var dbA = "db_" + Guid.NewGuid();
            var dbB = "db_" + Guid.NewGuid();
            var savedDocument = Entity.CreateDocWithoutRevision();

            var couchApi = (ICouchApi) new CouchApi(new CouchApiSettings("http://127.0.0.1:5984/"), null);
            couchApi.Db(dbA).Synchronously.Create();
            var docInfo = couchApi.Db(dbA).Synchronously.SaveDocument(savedDocument);

            couchApi.Db(dbB).Synchronously.Create();

            var replicationDescriptorId = dbA + "_to_" + dbB;

            var replicationTaskDescriptor = new ReplicationTaskDescriptor {
                Id = replicationDescriptorId,
                Target = new Uri(dbB, UriKind.Relative),
                Source = new Uri(dbA, UriKind.Relative)
            };
            couchApi.Replicator.Synchronously.SaveDescriptor(replicationTaskDescriptor);

            var replicationDoneEvent = new ManualResetEvent(false);
            WatchForReplicationToFinish(
                () => couchApi.Replicator.RequestDescriptorById(replicationDescriptorId), replicationDoneEvent);
            replicationDoneEvent.WaitOrThrowOnTimeout();

            var loadedDocument = couchApi.Db(dbB).Synchronously.RequestDocument(savedDocument.Id);

            Assert.Equal(savedDocument.Id, loadedDocument.Id);
            Assert.Equal(docInfo.Revision, loadedDocument.Revision);

            couchApi.Replicator.DeleteDescriptor(replicationTaskDescriptor);
            couchApi.Db(dbA).Synchronously.Delete();
            couchApi.Db(dbB).Synchronously.Delete();
        }