var-persist/tests/persist.spec.ts
2023-12-19 22:32:47 -05:00

94 lines
2.7 KiB
TypeScript

import {MemoryStorage, Persist, persist} from "../src";
const storage = new MemoryStorage();
(<any>global).localStorage = storage;
describe('Persistence Library', () => {
beforeEach(() => storage.clear());
describe('Proxy Object', () => {
test('Null Values', () => {
let persist = new Persist('test');
expect(persist.value).toBeUndefined();
persist.value = null;
persist = new Persist('test');
expect(persist.value).toBeNull();
persist.value = 0;
persist = new Persist('test');
expect(persist.value).toBe(0);
persist.value = false;
persist = new Persist('test');
expect(persist.value).toBeFalsy();
persist.value = undefined;
persist = new Persist('test');
expect(persist.value).toBeUndefined();
});
test('Number Value', () => {
const value = 0;
let persist = new Persist('test');
persist.value = value;
persist = new Persist('test');
expect(persist.value).toBe(value);
});
test('Boolean Value', () => {
const value = true;
let persist = new Persist('test');
persist.value = value;
persist = new Persist('test');
expect(persist.value).toStrictEqual(value);
});
test('String Value', () => {
const value = 'abc';
let persist = new Persist('test');
persist.value = value;
persist = new Persist('test');
expect(persist.value).toBe(value);
});
test('Array Value', () => {
const value = [9, 8, 7];
let persist = new Persist('test');
persist.value = value;
persist = new Persist('test');
expect(persist.value).toEqual(value);
});
test('Object Value', () => {
const value = {a: 0, b: 'c'};
let persist = new Persist<any>('test');
persist.value = value;
persist = new Persist('test');
expect(persist.value).toEqual(value);
persist.value.b = 'test';
persist = new Persist('test');
expect(persist.value).toEqual({...value, b: 'test'});
});
test('Default Value', () => {
let persist = new Persist('test');
persist.value = undefined;
persist = new Persist('test', {default: true});
expect(persist.value).toBeTruthy();
});
test('Type/Prototype', () => {
class TestObj {
constructor(public a: number, public b: number) { }
sum() { return this.a + this.b; }
}
const a = 1, b = 3;
const value = new TestObj(a, b);
let persist = new Persist<TestObj>('test');
persist.value = value;
persist = new Persist<TestObj>('test', {type: TestObj});
expect(persist.value).toEqual(value);
expect(persist.value.sum()).toEqual(a + b);
});
test('Impure Functions', () => {
let persist = new Persist<number[]>('test');
persist.value = [1];
persist.value.push(2);
persist = new Persist('test');
expect(persist.value).toEqual([1, 2]);
});
});
});