test/get.test.ts
import { set, keys as getKeys, sadd, get, getAll, flush } from '../src';
describe('Lockr#get', () => {
beforeEach(function() {
set('test', 123);
sadd('array', 2);
sadd('array', 3);
set('hash', { test: 123, hey: 'whatsup' });
localStorage.nativemethod = 'NativeMethod';
set('valueFalse', false);
set('value0', 0);
});
afterEach(() => {
flush();
});
it('returns the value for the given key from the localStorage', function() {
var value = get('test');
expect(value).toEqual(123);
});
it('returns undefined for a non-existent key', function() {
var value = get('something');
expect(value).not.toBeNull();
expect(value).toBeUndefined();
});
it('returns the value for the given key from the localStorage which set by native method', function() {
var value = get('nativemethod');
expect(value).toEqual('NativeMethod');
});
it('returns the value for the given key from the localStorage which equals false', function() {
var value = get('valueFalse');
expect(value).toEqual(false);
});
it('returns the value for the given key from the localStorage which equals 0', function() {
var value = get('value0');
expect(value).toEqual(0);
});
it('gets Lockr keys', function() {
flush();
set('one', 1);
set('two', 2);
set('three', 3);
set('four', 4);
var keys = getKeys();
expect(keys.length).toBe(4);
});
it('gets all contents of the localStorage', function() {
var contents = getAll();
expect(contents.length).toBe(6);
expect(contents).toContainEqual({ test: 123, hey: 'whatsup' });
expect(contents).toContain(123);
expect(contents).toContainEqual([2, 3]);
});
it('gets all contents of the localStorage as Array of dictionaries (key/value)', function() {
var contents = getAll(true);
expect(contents.length).toBe(6);
expect(contents).toContainEqual({ hash: { test: 123, hey: 'whatsup' } });
expect(contents).toContainEqual({ test: 123 });
expect(contents).toContainEqual({ array: [2, 3] });
});
describe('with pre-existing data', function() {
beforeEach(function() {
localStorage.setItem('wrong', ',fluffy,truffly,commas,hell');
localStorage.setItem('unescaped', 'a " double-quote');
});
it("if it's not a json we get as-is", function() {
var wrongData = get('wrong');
expect(wrongData).toBe(',fluffy,truffly,commas,hell');
});
it('works with unescaped characters', function() {
var unescaped = get('unescaped');
expect(unescaped).toBe('a " double-quote');
});
});
});