@yoroi/common
Version:
The Common package of Yoroi SDK
96 lines (95 loc) • 3.05 kB
JavaScript
;
import { storageKeyMaker } from './storage-key-maker';
describe('storageKeyMaker', () => {
const mockStorage = {
setItem: jest.fn(),
getItem: jest.fn(),
removeItem: jest.fn(),
clear: jest.fn(),
multiSet: jest.fn(),
multiGet: jest.fn(),
multiRemove: jest.fn(),
getAllKeys: jest.fn(),
join: jest.fn(),
removeFolder: jest.fn(),
onChange: jest.fn(),
observable: {
source: undefined,
operator: undefined,
subscribe: jest.fn(),
lift: jest.fn(),
forEach: jest.fn(),
pipe: jest.fn(),
toPromise: jest.fn()
}
};
beforeEach(() => {
jest.clearAllMocks();
});
it('should create a storage key maker with identity parser', () => {
const key = 'test-key';
const value = {
data: 'test'
};
const identityParser = data => data;
const storage = storageKeyMaker(mockStorage)({
key,
parser: identityParser
});
storage.save(value);
expect(mockStorage.setItem).toHaveBeenCalledWith(key, value);
mockStorage.getItem.mockImplementation((_k, parse) => parse?.(value) ?? value);
const result = storage.read();
expect(mockStorage.getItem).toHaveBeenCalledWith(key, expect.any(Function));
expect(result).toBe(value);
storage.remove();
expect(mockStorage.removeItem).toHaveBeenCalledWith(key);
expect(storage.key).toBe(key);
});
it('should create a storage key maker with custom parser', () => {
const key = 'test-key';
const value = {
data: 'test'
};
const parsedValue = {
data: 'parsed'
};
const customParser = jest.fn().mockReturnValue(parsedValue);
const storage = storageKeyMaker(mockStorage)({
key,
parser: customParser
});
storage.save(value);
expect(mockStorage.setItem).toHaveBeenCalledWith(key, value);
mockStorage.getItem.mockImplementation((_k, parse) => parse?.(value) ?? value);
const result = storage.read();
expect(mockStorage.getItem).toHaveBeenCalledWith(key, expect.any(Function));
expect(customParser).toHaveBeenCalledWith(value);
expect(result).toBe(parsedValue);
storage.remove();
expect(mockStorage.removeItem).toHaveBeenCalledWith(key);
expect(storage.key).toBe(key);
});
it('should handle null values from storage', () => {
const key = 'test-key';
const identityParser = data => data;
const storage = storageKeyMaker(mockStorage)({
key,
parser: identityParser
});
mockStorage.getItem.mockImplementation((_k, parse) => parse?.(null) ?? null);
const result = storage.read();
expect(mockStorage.getItem).toHaveBeenCalledWith(key, expect.any(Function));
expect(result).toBe(null);
});
it('should return frozen object', () => {
const key = 'test-key';
const identityParser = data => data;
const storage = storageKeyMaker(mockStorage)({
key,
parser: identityParser
});
expect(Object.isFrozen(storage)).toBe(true);
});
});
//# sourceMappingURL=storage-key-maker.test.js.map