Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@microsoft/objectstoreprovider",
"version": "0.8.7",
"version": "0.9.0",
"description": "A cross-browser object store library",
"author": "DataStack Team eleretzk@microsoft.com",
"scripts": {
Expand Down
3 changes: 3 additions & 0 deletions src/ObjectStoreProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,10 @@ export abstract class DbProvider {

clearAllData(): Promise<void> {
var storeNames = this._schema!!!.stores.map((store) => store.name);
return this.clearStores(storeNames);
}

clearStores(storeNames: string[]): Promise<void> {
return this.openTransaction(storeNames, true).then((trans) => {
const clearers = storeNames.map((storeName) => {
const store = attempt(() => {
Expand Down
59 changes: 59 additions & 0 deletions src/tests/ObjectStoreProvider.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,65 @@ describe("ObjectStoreProvider", function () {
}
});

describe("clearStores and clearAllData", () => {
const schema = {
version: 1,
stores: [
{
name: "store1",
primaryKeyPath: "id",
},
{
name: "store2",
primaryKeyPath: "id",
},
],
};
it("should delete the specific store", async () => {
if (provName.includes("memory")) return;
Comment thread
bhargeym marked this conversation as resolved.

const prov = await openProvider(provName, schema, true);
await prov.put("store1", { id: "a", val: "val-store-1" });
await prov.put("store2", { id: "a", val: "val-store-2" });
await prov.clearStores(["store1"]);

const data = await prov.get("store1", "a");
assert(!data, "store1 should be cleared");

const data2 = await prov.get("store2", "a");
assert.equal(
(data2 as TestObj)?.val,
"val-store-2",
"store2 should remain intact"
);

await prov.close();
});

it("should delete all stores", async () => {
if (provName.includes("memory")) return;

const prov = await openProvider(provName, schema, true);
await prov.put("store1", { id: "a", val: "val-store-1" });
await prov.put("store2", { id: "a", val: "val-store-2" });

const beforeDeletion = await prov.get("store1", "a");
assert.equal(
(beforeDeletion as TestObj)?.val,
"val-store-1",
"store1 should contain data put before clearAllData"
);

await prov.clearAllData();

const data = await prov.get("store1", "a");
assert(!data, "store1 should be cleared");
const data2 = await prov.get("store2", "a");
assert(!data2, "store2 should be cleared");
await prov.close();
});
});

describe("Expected database closure", () => {
if (provName.indexOf("indexeddbonclose") === -1) {
xit("Skip expected DB closure for in-memory provider", () => {
Expand Down
Loading