97 lines
2.6 KiB
JavaScript
97 lines
2.6 KiB
JavaScript
/* @flow */
|
|
/*eslint-env browser,jasmine */
|
|
|
|
if(typeof window !== "undefined"){
|
|
describe("IndexedDB", function() {
|
|
var ob = new IndexedDB("Test");
|
|
|
|
it("can create transactions", function(done) {
|
|
ob.requestTransaction(function*(){
|
|
var op = yield* this.setOperation({
|
|
"uid": ["1", 0],
|
|
"stuff": true
|
|
});
|
|
expect(yield* this.getOperation(["1", 0]))
|
|
.toEqual(op);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("getOperation(op) returns undefined if op does not exist", function(done){
|
|
ob.requestTransaction(function*(){
|
|
var op = yield* this.getOperation("plzDon'tBeThere");
|
|
expect(op).toBeUndefined();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("yield throws if request is unknown", function(done){
|
|
ob.requestTransaction(function*(){
|
|
try {
|
|
yield this.getOperations(["u1", 0]);
|
|
} catch (e) {
|
|
expect(true).toEqual(true);
|
|
done();
|
|
return;
|
|
}
|
|
expect("Expected an Error!").toEqual(true);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("sets and gets stateVector", function(done){
|
|
ob.requestTransaction(function*(){
|
|
var s1 = {user: "1", clock: 1};
|
|
var s2 = {user: "2", clock: 3};
|
|
yield* this.setState(s1);
|
|
yield* this.setState(s2);
|
|
var sv = yield* this.getStateVector();
|
|
expect(sv).not.toBeUndefined();
|
|
expect(sv).toEqual([s1, s2]);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("gets stateSet", function(done){
|
|
ob.requestTransaction(function*(){
|
|
var s1 = {user: "1", clock: 1};
|
|
var s2 = {user: "2", clock: 3};
|
|
yield* this.setState(s1);
|
|
yield* this.setState(s2);
|
|
var sv = yield* this.getStateSet();
|
|
expect(sv).not.toBeUndefined();
|
|
expect(sv).toEqual({
|
|
"1": 1,
|
|
"2": 3
|
|
});
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("getOperations returns operations (no parameters)", function(done){
|
|
ob.requestTransaction(function*(){
|
|
var s1 = {user: "1", clock: 55};
|
|
yield* this.setState(s1);
|
|
var op1 = yield* this.setOperation({
|
|
"uid": ["1", 0],
|
|
"stuff": true
|
|
});
|
|
var op2 = yield* this.setOperation({
|
|
"uid": ["1", 3],
|
|
"stuff": true
|
|
});
|
|
var ops = yield* this.getOperations();
|
|
expect(ops.length).toBeGreaterThan(1);
|
|
expect(ops[0]).toEqual(op1);
|
|
expect(ops[1]).toEqual(op2);
|
|
done();
|
|
});
|
|
});
|
|
afterAll(function(){
|
|
ob.requestTransaction(function*(){
|
|
yield* ob.removeDatabase();
|
|
});
|
|
});
|
|
});
|
|
}
|