skillbox/client/tests/unit/immutable-operations.spec.js

64 lines
1.9 KiB
JavaScript

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]);
});
});