typescript-closure-tools
Version:
Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files
143 lines (127 loc) • 3.45 kB
text/typescript
/// <reference path="pouch.d.ts" />
window.alert = function (thing?: string) {
var div = document.createElement('div');
div.appendChild(document.createTextNode(thing));
document.getElementsByTagName('body')[0].appendChild(div);
}
var pouch: PouchDB;
function pouchTests() {
PouchDB('testdb', function (err: PouchError, res: PouchDB) {
if (err) {
alert('Error ' + err.status + ' occurred ' + err.error + ' - ' + err.reason);
}
else {
pouch = res;
alert("database opened");
runTests();
}
});
}
var tests = [
setupTests,
testId,
testAllDocs,
testGet,
testUpdate,
testDelete,
deleteDb
];
var testIndex;
var revs: any = {};
function runTests() {
testIndex = 0;
tests[testIndex++]();
}
// each test function except the last one needs to call nextTest when it is finished doing its thing.
function nextTest() {
alert("starting test " + testIndex);
tests[testIndex++]();
}
function setupTests() {
alert('setupTests');
pouch.bulkDocs({
docs: [{ _id: '1', name: 'record 1' },
{ _id: '2', name: 'record 2' },
{ _id: '3', name: 'record 3' }
]
}, function (err: PouchError, res: PouchUpdateResponse[]) {
if (err) {
alert('Error ' + err.status + ' occurred ' + err.error + ' - ' + err.reason);
}
else {
for (var i = 0; i < res.length; i++) {
if (res[i].ok) {
revs[res[i].id] = res[i].rev;
}
}
alert("test records loaded");
}
nextTest();
});
}
function testId() {
alert('testId');
var id = pouch.id();
alert('Database Id = ' + id);
nextTest();
}
function testGet() {
alert('testGet');
pouch.get('1', function (err: PouchError, res: PouchGetResponse) {
if (err) {
alert('Error ' + err.status + ' occurred ' + err.error + ' - ' + err.reason);
}
else {
alert('Retrieved record with id=1, name=[' + res['name'] + ']');
}
nextTest();
});
}
function testAllDocs() {
alert('testAllDocs');
pouch.allDocs(function (err: PouchError, res: PouchAllDocsResponse) {
alert('allDocs resulted in ' + res.total_rows + ' results');
for (var i = 0; i < res.total_rows; i++) {
alert('Retrieved record with id=' + res.rows[i].id + ', rev=[' + res.rows[i].value.rev + ']');
}
nextTest();
});
}
function testUpdate() {
alert('testUpdate');
pouch.put({ _id: '2', _rev: revs['2'], name: 'record 2 updated' }, function (err: PouchError, res: PouchUpdateResponse) {
if (err) {
alert('Error ' + err.status + ' occurred ' + err.error + ' - ' + err.reason);
}
else {
alert('record updated id=' + res.id + ', rev=[' + res.rev + ']');
}
testAllDocs(); // spit out the db contents and then go on
});
}
function testDelete() {
alert('testDelete');
pouch.remove({ _id: '3', _rev: revs['3'] }, function (err: PouchError, res: PouchUpdateResponse) {
if (err) {
alert('Error ' + err.status + ' occurred ' + err.error + ' - ' + err.reason);
}
else {
alert('record deleted id=' + res.id + ', rev=[' + res.rev + ']');
}
testAllDocs(); // spit out the db contents and then go on
});
}
function deleteDb() {
alert('deleteDb');
if (pouch) {
pouch = null;
PouchDB.destroy('testdb', function (err: PouchError) {
if (err) {
alert('Error ' + err.status + ' occurred ' + err.error + ' - ' + err.reason);
}
else {
alert("database destroyed");
}
});
}
}