import {removeAtIndex, replaceAtIndex, insertAtIndex, pushToArray } from '@/graphql/immutable-operations'; describe('Cache operations', () => { it('removes at index', () => { const original = [1, 2, 3]; const copy = removeAtIndex(original, 1); expect(original.length).toBe(3); expect(original).toEqual([1, 2, 3]); expect(copy.length).toBe(2); expect(copy).toEqual([1, 3]); original.push(4); expect(original.length).toBe(4); expect(original).toEqual([1, 2, 3, 4]); expect(copy.length).toBe(2); expect(copy).toEqual([1, 3]); }); it('replaces at index', () => { const original = [1, 2, 3]; const copy = replaceAtIndex(original, 1, 234); expect(original.length).toBe(3); expect(original).toEqual([1, 2, 3]); expect(copy.length).toBe(3); expect(copy).toEqual([1, 234, 3]); original.push(4); expect(original.length).toBe(4); expect(original).toEqual([1, 2, 3, 4]); expect(copy.length).toBe(3); expect(copy).toEqual([1, 234, 3]); }); it('inserts at index', () => { const original = [1, 2, 3]; const copy = insertAtIndex(original, 1, 234); expect(original.length).toBe(3); expect(original).toEqual([1, 2, 3]); expect(copy.length).toBe(4); expect(copy).toEqual([1, 234, 2, 3]); original.push(4); expect(original.length).toBe(4); expect(original).toEqual([1, 2, 3, 4]); expect(copy.length).toBe(4); expect(copy).toEqual([1, 234, 2, 3]); }); it('pushed to array', () => { const original = [1, 2, 3]; const copy = pushToArray(original, 5); expect(original.length).toBe(3); expect(original).toEqual([1, 2, 3]); expect(copy.length).toBe(4); expect(copy).toEqual([1, 2, 3, 5]); original.push(4); expect(original.length).toBe(4); expect(original).toEqual([1, 2, 3, 4]); expect(copy.length).toBe(4); expect(copy).toEqual([1, 2, 3, 5]); }); });