UNPKG

piral-core

Version:

The core library for creating a Piral instance.

274 lines (229 loc) • 8.08 kB
import { describe, it, expect } from 'vitest'; import { appendItem, excludeItem, excludeOn, prependItem, withKey, withoutKey, prependItems, appendItems, updateKey, replaceOrAddItem, includeItem, tryParseJson, removeNested, } from './helpers'; describe('Helpers Module', () => { it('removeNested removes keys values', () => { const obj = { d: 'test', z: ['test arr'] }; const result = removeNested(obj, () => true); const expectedResult = { d: {}, z: {} }; expect(result).toEqual(expectedResult); }); it('removeNested removes keys values with nested arrays', () => { const obj = { z: [['test arr'], ['test arr2']] }; const result = removeNested(obj, () => true); const expectedResult = { z: { '0': [], '1': [] } }; expect(result).toEqual(expectedResult); }); it('removeNested splits keys values', () => { const obj = { d: 'test', z: ['test arr'] }; const result = removeNested(obj, () => false); const expectedResult = { d: { '0': 't', '1': 'e', '2': 's', '3': 't' }, z: { '0': 'test arr' } }; expect(result).toEqual(expectedResult); }); it('tryParseJson parses a JSON string', () => { const content = '{"result":true, "count":42}'; const result = tryParseJson(content); expect(result).toEqual({ result: true, count: 42 }); }); it('tryParseJson return empty object if the content is not valid', () => { const content = '"result":true, "count":42'; const result = tryParseJson(content); expect(result).toEqual({}); }); it('includeItem adds an item to array', () => { const result = includeItem([1, 2, 3], 4); expect(result).toEqual([1, 2, 3, 4]); }); it('replaceOrAddItem replaces the first item', () => { const result = replaceOrAddItem([1, 2, 3], 4, () => true); expect(result).toEqual([4, 2, 3]); }); it('replaceOrAddItem adds the item the end', () => { const result = replaceOrAddItem([1, 2, 3], 4, () => false); expect(result).toEqual([1, 2, 3, 4]); }); it('prependItem works with an existing array', () => { const result = prependItem([1, 2, 3], 4); expect(result).toEqual([4, 1, 2, 3]); }); it('prependItem works without an existing array', () => { const result = prependItem(undefined as any, 4); expect(result).toEqual([4]); }); it('prependItem does not modify the original', () => { const original = [1, 2, 3]; const result = prependItem(original, 4); expect(result).not.toBe(original); }); it('appendItem works with an existing array', () => { const result = appendItem([1, 2, 3], 4); expect(result).toEqual([1, 2, 3, 4]); }); it('appendItem works without an existing array', () => { const result = appendItem(undefined as any, 4); expect(result).toEqual([4]); }); it('appendItem does not modify the original', () => { const original = [1, 2, 3]; const result = appendItem(original, 4); expect(result).not.toBe(original); }); it('prependItems works with an existing array', () => { const result = prependItems([1, 2, 3], [4]); expect(result).toEqual([4, 1, 2, 3]); }); it('prependItems prepends multiple', () => { const result = prependItems([1, 2, 3], [4, 5, 6]); expect(result).toEqual([4, 5, 6, 1, 2, 3]); }); it('prependItems prepends none', () => { const result = prependItems([1, 2, 3], []); expect(result).toEqual([1, 2, 3]); }); it('prependItems works without an existing array', () => { const result = prependItems(undefined as any, [4]); expect(result).toEqual([4]); }); it('prependItems does not modify the original', () => { const original = [1, 2, 3]; const result = prependItems(original, [4]); expect(result).not.toBe(original); }); it('appendItems works with an existing array', () => { const result = appendItems([1, 2, 3], [4]); expect(result).toEqual([1, 2, 3, 4]); }); it('appendItems works without an existing array', () => { const result = appendItems(undefined as any, [4]); expect(result).toEqual([4]); }); it('appendItems does not modify the original', () => { const original = [1, 2, 3]; const result = appendItems(original, [4]); expect(result).not.toBe(original); }); it('appendItems does not modify the original also with none', () => { const original = [1, 2, 3]; const result = appendItems(original, []); expect(result).not.toBe(original); }); it('appendItems appends multiple', () => { const original = [1, 2, 3]; const result = appendItems(original, [4, 5]); expect(result).toEqual([1, 2, 3, 4, 5]); }); it('excludeItem works with an existing array', () => { const result = excludeItem([1, 2, 3], 2); expect(result).toEqual([1, 3]); }); it('excludeItem works without an existing array', () => { const result = excludeItem(undefined as any, 2); expect(result).toEqual([]); }); it('excludeItem ignores non-existing item', () => { const result = excludeItem([1, 2, 3], 4); expect(result).toEqual([1, 2, 3]); }); it('excludeItem does not modify the original', () => { const original = [1, 2, 3]; const result = excludeItem(original, 2); expect(result).not.toBe(original); }); it('excludeOn works with an existing array', () => { const result = excludeOn([1, 2, 3], (x) => x === 2); expect(result).toEqual([1, 3]); }); it('excludeOn works without an existing array', () => { const result = excludeOn(undefined as any, (x) => x === 2); expect(result).toEqual([]); }); it('excludeOn ignores non-existing item', () => { const result = excludeOn([1, 2, 3], (x) => x === 4); expect(result).toEqual([1, 2, 3]); }); it('excludeOn does not modify the original', () => { const original = [1, 2, 3]; const result = excludeOn(original, (x) => x === 2); expect(result).not.toBe(original); }); it('withKey works with an existing object', () => { const original = { a: 5 }; const result = withKey(original, 'b' as any, 6); expect(result).toEqual({ a: 5, b: 6, }); }); it('withKey does not modify existing object', () => { const original = { a: 5 }; const result = withKey(original, 'b' as any, 6); expect(result).not.toBe(original); }); it('withKey works without an existing object', () => { const result = withKey(undefined, 'b' as never, 6 as never); expect(result).toEqual({ b: 6, }); }); it('withoutKey ignores non-existing key', () => { const original = { a: 5 }; const result = withoutKey(original, 'b' as any); expect(result).toEqual({ a: 5, }); }); it('withoutKey removes existing key leaving multiple keys behind', () => { const original = { a: 5, b: 6, c: 7 }; const result = withoutKey(original, 'b'); expect(result).toEqual({ a: 5, c: 7, }); }); it('withoutKey removes existing key to empty object', () => { const original = { a: 5 }; const result = withoutKey(original, 'a'); expect(result).toEqual({}); }); it('withoutKey removes existing key and leaves old ones', () => { const original = { a: 5, b: 6, c: 7 }; const result = withoutKey(original, 'a'); expect(result).toEqual({ b: 6, c: 7, }); }); it('withoutKey works without an existing object', () => { const result = withoutKey(undefined, 'a' as never); expect(result).toEqual({}); }); it('withoutKey works without a valid key', () => { const result = withoutKey({}, undefined as never); expect(result).toEqual({}); }); it('withoutKey works with a number', () => { const result = withoutKey({ 0: 'hello' }, 0 as any); expect(result).toEqual({}); }); it('updateKey with the removeIndicator', () => { const result = updateKey({ b: '1233' }, 'b', null as any); expect(result).toEqual({}); }); it('updateKey with a new value', () => { const result = updateKey({ b: '1233' }, 'b', '1244'); expect(result).toEqual({ b: '1244' }); }); });