101 lines
3.0 KiB
JavaScript
101 lines
3.0 KiB
JavaScript
import {removeAtIndex, replaceAtIndex, insertAtIndex, pushToArray, swapElements} 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]);
|
|
});
|
|
|
|
it('swaps elements of array', () => {
|
|
const original = [1, 2, 3];
|
|
const copy = swapElements(original, 0, 2);
|
|
expect(original.length).toBe(3);
|
|
expect(original).toEqual([1, 2, 3]);
|
|
expect(copy.length).toBe(3);
|
|
expect(copy).toEqual([3, 2, 1]);
|
|
|
|
original.push(4);
|
|
expect(original.length).toBe(4);
|
|
expect(original).toEqual([1, 2, 3, 4]);
|
|
expect(copy.length).toBe(3);
|
|
expect(copy).toEqual([3, 2, 1]);
|
|
});
|
|
|
|
it('swaps neighbors', ()=>{
|
|
const original = [1, 2, 3, 4, 5];
|
|
const copy = swapElements(original, 3, 2);
|
|
|
|
expect(copy).toEqual([1, 2, 4, 3, 5]);
|
|
});
|
|
|
|
it('does nothing with wrong indices', ()=>{
|
|
const original = [1, 2, 3, 4, 5];
|
|
const copy1 = swapElements(original, -1, 2);
|
|
const copy2 = swapElements(original, 1, 99);
|
|
const copy3 = swapElements(original, 1, 5);
|
|
|
|
expect(copy1).toEqual([1, 2, 3, 4, 5]);
|
|
expect(copy2).toEqual([1, 2, 3, 4, 5]);
|
|
expect(copy3).toEqual([1, 2, 3, 4, 5]);
|
|
original.push(4);
|
|
expect(original.length).toBe(6);
|
|
expect(copy1.length).toBe(5);
|
|
expect(copy2.length).toBe(5);
|
|
expect(copy3.length).toBe(5);
|
|
});
|
|
});
|