I'm experimenting with Linq2IndexedDB (v. 1.0.21) via unit tests (via Mocha), but I can't even make a simple insert work. What happens (when running under Google Chrome) is an internal exception is thrown on line 1535 of Linq2IndexedDB.js:
Uncaught TypeError: Cannot read property 'version' of undefined
My unit test code looks as follows; there's basically one test, "it can add objects":
"use strict";
define(["db", "linq2indexeddb", "chai", "underscore", "stacktrace"], function (db, linq2indexeddb, chai, _,
printStacktrace) {
var should = chai.should();
describe("db", function () {
var _db;
function fail(done, reason, err) {
if (typeof reason === "string") {
reason = new Error(reason);
}
if (!reason) {
console.log(typeof done, typeof reason);
reason = new Error("There's been an error, but no reason was supplied!");
var st = printStacktrace({e: reason});
console.log(st);
}
if (typeof done !== "function") {
throw new Error("Was not supplied a function for 'done'!");
}
done(reason);
}
// Bind done as the first argument to the fail function
function bindFail(done, reason) {
if (typeof done !== "function") {
throw new Error("done must be a function");
}
return _.partial(fail, done, reason);
}
beforeEach(function (done) {
_db = linq2indexeddb("test", null, true);
_db.deleteDatabase()
.done(function () {
_db.initialize()
.done(done)
.fail(bindFail(done, "Initializing database failed"));
})
.fail(bindFail(done, "Deleting database failed"));
});
it("can add objects", function (done) {
console.log("Starting test");
var refObj = {"key": "value"};
_db.linq.from("store").insert(refObj, "Key")
.done(function () {
console.log("Added object successfully");
done();
})
.fail(bindFail(done, "Inserting object failed"));
});
});
});
Am I doing something wrong here, or is there a bug in Linq2IndexedDB (or both)?
I've put up a corresponding test project on Github, complete with a Karma configuration, so you can run the included tests easily. The Karma configuration assumes you have Chrome installed.