Add ability to clear IndexedDB state object store

This commit is contained in:
Katrina Uychaco 2016-02-11 19:56:25 -08:00
parent 6f4936983e
commit 255b943d45
2 changed files with 49 additions and 7 deletions

View File

@ -21,7 +21,21 @@ describe("StateStore", () => {
return store.load('no-such-key').then((value) => {
expect(value).toBeNull()
})
});
})
it("can clear the state object store", () => {
const store = new StateStore(databaseName, version)
return store.save('key', {foo:'bar'})
.then(() => store.count())
.then((count) =>
expect(count).toBe(1)
)
.then(() => store.clear())
.then(() => store.count())
.then((count) => {
expect(count).toBe(0)
})
})
describe("when there is an error reading from the database", () => {
it("rejects the promise returned by load", () => {

View File

@ -25,9 +25,7 @@ class StateStore {
save (key, value) {
return this.dbPromise.then(db => {
if (!db) {
return
}
if (!db) return
return new Promise((resolve, reject) => {
var request = db.transaction(['states'], 'readwrite')
@ -42,9 +40,7 @@ class StateStore {
load (key) {
return this.dbPromise.then(db => {
if (!db) {
return null
}
if (!db) return
return new Promise((resolve, reject) => {
var request = db.transaction(['states'])
@ -60,4 +56,36 @@ class StateStore {
})
})
}
clear () {
return this.dbPromise.then(db => {
if (!db) return
return new Promise((resolve, reject) => {
var request = db.transaction(['states'], 'readwrite')
.objectStore('states')
.clear()
request.onsuccess = resolve
request.onerror = reject
})
})
}
count () {
return this.dbPromise.then(db => {
if (!db) return
return new Promise((resolve, reject) => {
var request = db.transaction(['states'])
.objectStore('states')
.count()
request.onsuccess = () => {
resolve(request.result)
}
request.onerror = reject
})
})
}
}