jsoniq
Version:
JSONiq implementation for JavaScript
67 lines (65 loc) • 10.8 kB
JavaScript
/// <reference path="../../typings/tsd.d.ts" />
var IndexedDBStore = require("IndexedDBStore");
describe("IndexedDBStore", () => {
beforeEach(function (done) {
this.store = new IndexedDBStore();
this.store
.open("myapp", 5, (event, db) => {
if (db.objectStoreNames.contains("books")) {
db.deleteObjectStore("books");
}
if (db.objectStoreNames.contains("users")) {
db.deleteObjectStore("users");
}
var store;
store = db.createObjectStore("books", { keyPath: "id" });
store.put({ id: "80ac7430-2d1b-11e4-8c21-0800200c9a66", title: "XQuery 3.0" });
store.put({ id: "86b80010-2d1b-11e4-8c21-0800200c9a66", title: "NoSQL" });
store.put({ id: "93f98e10-2d1b-11e4-8c21-0800200c9a66", title: "JavaScript" });
store = db.createObjectStore("users", { keyPath: "id" });
store.put({ id: "wcandillon" });
})
.then(done)
.catch(error => {
console.error(error);
});
});
it("Check collection names", function () {
expect(this.store.getCollections().length).toBe(2);
});
it("Inserts a document", function (done) {
var item = { id: "7bacf2b0-2e2f-11e4-8c21-0800200c9a66", title: "PHP for the Experts" };
this.store.collection("books").insert(item);
this.store.commit().then(() => {
var request = this.store.db.transaction("books", "readonly").objectStore("books").get(item.id);
request.onsuccess = () => {
expect(request.result).toEqual(item);
done();
};
}).catch((error) => {
console.error(error);
});
});
it("test reset", function (done) {
var id = "7bacf2b0-2e2f-11e4-8c21-0800200c9a66";
this.store.collection("books").insertIntoObject(id, [], { author: "Chuck" });
var status = this.store.status();
expect(status.insertIntoObject.length).toBe(1);
this.store.resetLocal();
status = this.store.status();
expect(status.insertIntoObject.length).toBe(0);
this.store
.collection("books")
.insertIntoObject(id, [], { author: "Chuck" });
this.store.commit().then(() => {
var request = this.store.db.transaction("books", "readonly").objectStore("books").get(id);
request.onsuccess = () => {
expect(request.result.author).toEqual("Chuck");
done();
};
}).catch(error => {
console.error(error);
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RzL2Jyb3dzZXIvSW5kZXhlZERCLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRS9DLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUV2QixVQUFVLENBQUMsVUFBVSxJQUFJO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSzthQUNMLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEIsRUFBRSxDQUFBLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsRUFBRSxDQUFBLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUM7WUFDVixLQUFLLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsc0NBQXNDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDL0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxzQ0FBc0MsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMxRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLHNDQUFzQyxF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LENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLE9BQU8sQ0FBQyxTQUFTLEdBQUc7Z0JBQ2hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSztZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3RzL2Jyb3dzZXIvSW5kZXhlZERCLnNwZWMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vdHlwaW5ncy90c2QuZC50c1wiIC8+XG52YXIgSW5kZXhlZERCU3RvcmUgPSByZXF1aXJlKFwiSW5kZXhlZERCU3RvcmVcIik7XG5cbmRlc2NyaWJlKFwiSW5kZXhlZERCU3RvcmVcIiwgKCkgPT4ge1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoZG9uZSkge1xuICAgICAgICB0aGlzLnN0b3JlID0gbmV3IEluZGV4ZWREQlN0b3JlKCk7XG4gICAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgICAgIC5vcGVuKFwibXlhcHBcIiwgNSwgKGV2ZW50LCBkYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmKGRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoXCJib29rc1wiKSkge1xuICAgICAgICAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZShcImJvb2tzXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZihkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFwidXNlcnNcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoXCJ1c2Vyc1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHN0b3JlO1xuICAgICAgICAgICAgICAgIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoXCJib29rc1wiLCB7IGtleVBhdGg6IFwiaWRcIiB9KTtcbiAgICAgICAgICAgICAgICBzdG9yZS5wdXQoeyBpZDogXCI4MGFjNzQzMC0yZDFiLTExZTQtOGMyMS0wODAwMjAwYzlhNjZcIiwgdGl0bGU6IFwiWFF1ZXJ5IDMuMFwiIH0pO1xuICAgICAgICAgICAgICAgIHN0b3JlLnB1dCh7IGlkOiBcIjg2YjgwMDEwLTJkMWItMTFlNC04YzIxLTA4MDAyMDBjOWE2NlwiLCB0aXRsZTogXCJOb1NRTFwiIH0pO1xuICAgICAgICAgICAgICAgIHN0b3JlLnB1dCh7IGlkOiBcIjkzZjk4ZTEwLTJkMWItMTFlNC04YzIxLTA4MDAyMDBjOWE2NlwiLCB0aXRsZTogXCJKYXZhU2NyaXB0XCIgfSk7XG5cbiAgICAgICAgICAgICAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKFwidXNlcnNcIiwgeyBrZXlQYXRoOiBcImlkXCIgfSk7XG4gICAgICAgICAgICAgICAgc3RvcmUucHV0KHsgaWQ6IFwid2NhbmRpbGxvblwiIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKGRvbmUpXG4gICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcIkNoZWNrIGNvbGxlY3Rpb24gbmFtZXNcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIGV4cGVjdCh0aGlzLnN0b3JlLmdldENvbGxlY3Rpb25zKCkubGVuZ3RoKS50b0JlKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJJbnNlcnRzIGEgZG9jdW1lbnRcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgICB2YXIgaXRlbSA9IHsgaWQ6IFwiN2JhY2YyYjAtMmUyZi0xMWU0LThjMjEtMDgwMDIwMGM5YTY2XCIsIHRpdGxlOiBcIlBIUCBmb3IgdGhlIEV4cGVydHNcIiB9O1xuICAgICAgICB0aGlzLnN0b3JlLmNvbGxlY3Rpb24oXCJib29rc1wiKS5pbnNlcnQoaXRlbSk7XG4gICAgICAgIHRoaXMuc3RvcmUuY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2YXIgcmVxdWVzdCA9IHRoaXMuc3RvcmUuZGIudHJhbnNhY3Rpb24oXCJib29rc1wiLCBcInJlYWRvbmx5XCIpLm9iamVjdFN0b3JlKFwiYm9va3NcIikuZ2V0KGl0ZW0uaWQpO1xuICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZXhwZWN0KHJlcXVlc3QucmVzdWx0KS50b0VxdWFsKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJ0ZXN0IHJlc2V0XCIsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgICAgdmFyIGlkID0gXCI3YmFjZjJiMC0yZTJmLTExZTQtOGMyMS0wODAwMjAwYzlhNjZcIjtcbiAgICAgICAgdGhpcy5zdG9yZS5jb2xsZWN0aW9uKFwiYm9va3NcIikuaW5zZXJ0SW50b09iamVjdChpZCwgW10sIHsgYXV0aG9yOiBcIkNodWNrXCIgfSk7XG4gICAgICAgIHZhciBzdGF0dXMgPSB0aGlzLnN0b3JlLnN0YXR1cygpO1xuICAgICAgICBleHBlY3Qoc3RhdHVzLmluc2VydEludG9PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICB0aGlzLnN0b3JlLnJlc2V0TG9jYWwoKTtcbiAgICAgICAgc3RhdHVzID0gdGhpcy5zdG9yZS5zdGF0dXMoKTtcbiAgICAgICAgZXhwZWN0KHN0YXR1cy5pbnNlcnRJbnRvT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAgICAgLmNvbGxlY3Rpb24oXCJib29rc1wiKVxuICAgICAgICAgICAgLmluc2VydEludG9PYmplY3QoaWQsIFtdLCB7IGF1dGhvcjogXCJDaHVja1wiIH0pXG4gICAgICAgIDtcbiAgICAgICAgdGhpcy5zdG9yZS5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5zdG9yZS5kYi50cmFuc2FjdGlvbihcImJvb2tzXCIsIFwicmVhZG9ubHlcIikub2JqZWN0U3RvcmUoXCJib29rc1wiKS5nZXQoaWQpO1xuICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZXhwZWN0KHJlcXVlc3QucmVzdWx0LmF1dGhvcikudG9FcXVhbChcIkNodWNrXCIpO1xuICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9