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

100% Statements 30/30
100% Branches 0/0
100% Functions 19/19
100% Lines 28/28

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 94 95 96 97 98 99 100 101 102 103      3x 36x   4x 4x 4x 4x             4x 4x               4x 4x               4x 4x 4x               4x 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 testEndsOp = (applyPatch: ApplyPatch) => {
  const applyOperation = (doc: unknown, op: Operation) => applyPatch(doc, [op], {mutate: true});
 
  describe('ends', () => {
    describe('root', () => {
      test('succeeds when matches correctly a substring', () => {
        applyOperation('foo bar', {
          op: 'ends',
          path: '',
          value: 'bar',
        });
      });
 
      test('can ignore case', () => {
        applyOperation('foo bar', {
          op: 'ends',
          path: '',
          value: 'BaR',
          ignore_case: true,
        });
      });
 
      test('can ignore case', () => {
        applyOperation('foo bAr', {
          op: 'ends',
          path: '',
          value: 'BaR',
          ignore_case: true,
        });
      });
 
      test('throws when case does not match', () => {
        expect(() =>
          applyOperation('foo bar', {
            op: 'ends',
            path: '',
            value: 'BaR',
          }),
        ).toThrow();
      });
 
      test('throws when matches substring incorrectly', () => {
        expect(() =>
          applyOperation('foo bar', {
            op: 'ends',
            path: '',
            value: 'bar!',
          }),
        ).toThrow();
      });
    });
 
    describe('object', () => {
      test('succeeds when matches correctly a substring', () => {
        applyOperation(
          {foo: 'foo bar'},
          {
            op: 'ends',
            path: '/foo',
            value: 'bar',
          },
        );
      });
 
      test('throws when matches substring incorrectly', () => {
        expect(() =>
          applyOperation(
            {foo: 'foo bar'},
            {
              op: 'ends',
              path: '/foo',
              value: 'foo',
            },
          ),
        ).toThrow();
      });
    });
 
    describe('array', () => {
      test('succeeds when matches correctly a substring', () => {
        applyOperation(['foo bar'], {
          op: 'ends',
          path: '/0',
          value: 'bar',
        });
      });
 
      test('throws when matches substring incorrectly', () => {
        expect(() =>
          applyOperation(['foo bar'], {
            op: 'ends',
            path: '/0',
            value: 'foo',
          }),
        ).toThrow();
      });
    });
  });
};