All files / json-patch/applyPatch/__tests__/ops in.ts

100% Statements 18/18
100% Branches 0/0
100% Functions 9/9
100% Lines 16/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57      3x 12x   4x 4x 4x 4x     4x                   4x     4x 4x     4x 4x               4x 4x           4x 4x                    
import type {ApplyPatch} from '../../types';
import type {Operation} from '../../../types';
 
export const testInOp = (applyPatch: ApplyPatch) => {
  const applyOperation = (doc: unknown, op: Operation) => applyPatch(doc, [op], {mutate: true});
 
  describe('in', () => {
    describe('positive', () => {
      test('should test against root (on a json document of type object) - and return true', () => {
        const obj = {
          hello: 'world',
        };
        const result = applyOperation(obj, {
          op: 'in',
          path: '',
          value: [
            1,
            {
              hello: 'world',
            },
          ],
        }).doc;
        expect(result).toEqual(obj);
      });
 
      test('should test against root (on a json document of type object) - and return false', () => {
        const obj = {
          hello: 'world',
        };
        expect(() =>
          applyOperation(obj, {
            op: 'in',
            path: '',
            value: [1],
          }),
        ).toThrow();
      });
 
      test('should test against root (on a json document of type array) - and return false', () => {
        const obj = [
          {
            hello: 'world',
          },
        ];
 
        expect(() =>
          applyOperation(obj, {
            op: 'in',
            path: '',
            value: [1],
          }),
        ).toThrow();
      });
    });
  });
};