UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

67 lines (65 loc) 10.8 kB
/// <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