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

100% Statements 24/24
100% Branches 0/0
100% Functions 15/15
100% Lines 22/22

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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93      3x 28x   4x 4x 4x 4x               4x 4x 4x             4x                 4x 4x 4x                     4x 4x 4x                         4x 4x 4x                     4x 4x 4x                            
import type {Operation} from '../../..';
import type {ApplyPatch} from '../../types';
 
export const testTestString = (applyPatch: ApplyPatch) => {
  const applyOperation = (doc: unknown, op: Operation) => applyPatch(doc, [op], {mutate: true});
 
  describe('test_string', () => {
    describe('root', () => {
      test('succeeds when matches correctly a substring', () => {
        applyOperation('foo bar', {
          op: 'test_string',
          path: '',
          pos: 1,
          str: 'oo b',
        });
      });
 
      test('throws when matches substring incorrectly', () => {
        expect(() =>
          applyOperation('foo bar', {
            op: 'test_string',
            path: '',
            pos: 3,
            str: 'oo',
          }),
        ).toThrow();
        applyOperation('foo bar', {
          op: 'test_string',
          path: '',
          pos: 4,
          str: 'bar',
        });
      });
    });
 
    describe('object', () => {
      test('succeeds when matches correctly a substring', () => {
        applyOperation(
          {a: 'b', test: 'foo bar'},
          {
            op: 'test_string',
            path: '/test',
            pos: 1,
            str: 'oo b',
          },
        );
      });
 
      test('throws when matches substring incorrectly', () => {
        expect(() =>
          applyOperation(
            {test: 'foo bar'},
            {
              op: 'test_string',
              path: '/test',
              pos: 3,
              str: 'oo',
            },
          ),
        ).toThrow();
      });
    });
 
    describe('array', () => {
      test('succeeds when matches correctly a substring', () => {
        applyOperation(
          {a: 'b', test: ['foo bar']},
          {
            op: 'test_string',
            path: '/test/0',
            pos: 1,
            str: 'oo b',
          },
        );
      });
 
      test('throws when matches substring incorrectly', () => {
        expect(() =>
          applyOperation(
            {test: ['foo bar']},
            {
              op: 'test_string',
              path: '/test/0',
              pos: 3,
              str: 'oo',
            },
          ),
        ).toThrow();
      });
    });
  });
};