@bsv/wallet-toolbox
Version:
BRC100 conforming wallet, wallet storage and wallet signer components
91 lines • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const TestUtilsWalletStorage_1 = require("../utils/TestUtilsWalletStorage");
const sdk_1 = require("@bsv/sdk");
describe('LocalKVStore tests', () => {
jest.setTimeout(99999999);
const testName = () => expect.getState().currentTestName || 'test';
let ctxs = [];
const context = 'test kv store';
const key1 = 'key1';
const key2 = 'key2';
beforeEach(async () => {
ctxs = [await TestUtilsWalletStorage_1._tu.createLegacyWalletSQLiteCopy(`${testName()}`)];
});
afterEach(async () => {
for (const ctx of ctxs) {
await ctx.storage.destroy();
}
});
test('0 get non-existent', async () => {
for (const { storage, wallet } of ctxs) {
const kvStore = new sdk_1.LocalKVStore(wallet, context, false, undefined, true);
const value = await kvStore.get(key1);
expect(value).toBeUndefined();
}
});
test('1 set get', async () => {
for (const { storage, wallet } of ctxs) {
const kvStore = new sdk_1.LocalKVStore(wallet, context, false, undefined, true);
await kvStore.set(key1, 'value1');
const value = await kvStore.get(key1);
expect(value).toBe('value1');
}
});
test('3 set x 4 get', async () => {
for (const { storage, wallet } of ctxs) {
const kvStore = new sdk_1.LocalKVStore(wallet, context, false, undefined, true);
const promises = [
kvStore.set(key1, 'value1'),
kvStore.set(key1, 'value2'),
kvStore.set(key1, 'value3'),
kvStore.set(key1, 'value4')
];
await Promise.all(promises);
const value = await kvStore.get(key1);
expect(value).toBe('value4');
}
});
test('4 promise test', async () => {
jest.useFakeTimers();
let resolveNewLock = () => { };
const newLock = new Promise(resolve => {
resolveNewLock = resolve;
});
const t = Date.now();
setTimeout(() => {
resolveNewLock();
}, 1000);
jest.advanceTimersByTime(1000);
await newLock;
const elapsed = Date.now() - t;
(0, TestUtilsWalletStorage_1.logger)(`Elapsed time: ${elapsed} ms`);
expect(elapsed).toBeGreaterThanOrEqual(1000);
jest.useRealTimers();
});
test('5 set x 4 get set x 4 get', async () => {
for (const { storage, wallet } of ctxs) {
const kvStore = new sdk_1.LocalKVStore(wallet, context, false, undefined, true);
let v4;
async function captureValue() {
v4 = await kvStore.get(key1);
}
const promises = [
kvStore.set(key1, 'value1'),
kvStore.set(key1, 'value2'),
kvStore.set(key1, 'value3'),
kvStore.set(key1, 'value4'),
captureValue(),
kvStore.set(key1, 'value5'),
kvStore.set(key1, 'value6'),
kvStore.set(key1, 'value7'),
kvStore.set(key1, 'value8')
];
await Promise.all(promises);
const v8 = await kvStore.get(key1);
expect(v4).toBe('value4');
expect(v8).toBe('value8');
}
});
});
//# sourceMappingURL=LocalKVStore.test.js.map