summaryrefslogtreecommitdiff
path: root/spec/frontend/snippets/utils/blob_spec.js
blob: 4c6cee32614a2fa5dd100e3acd2f9ccc182f6544 (plain)
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
import { cloneDeep } from 'lodash';
import { decorateBlob, createBlob, diffAll } from '~/snippets/utils/blob';
import { testEntries, createBlobsFromTestEntries } from '../test_utils';

jest.mock('lodash/uniqueId', () => (arg) => `${arg}fakeUniqueId`);

const TEST_RAW_BLOB = {
  rawPath: '/test/blob/7/raw',
};

describe('~/snippets/utils/blob', () => {
  describe('decorateBlob', () => {
    it('should decorate the given object with local blob properties', () => {
      const orig = cloneDeep(TEST_RAW_BLOB);

      expect(decorateBlob(orig)).toEqual({
        ...TEST_RAW_BLOB,
        id: 'blob_local_fakeUniqueId',
        isLoaded: false,
        content: '',
      });
    });
  });

  describe('createBlob', () => {
    it('should create an empty local blob', () => {
      expect(createBlob()).toEqual({
        id: 'blob_local_fakeUniqueId',
        isLoaded: true,
        content: '',
        path: '',
      });
    });
  });

  describe('diffAll', () => {
    it('should create diff from original files', () => {
      const origBlobs = createBlobsFromTestEntries(
        [
          testEntries.deleted,
          testEntries.updated,
          testEntries.renamed,
          testEntries.renamedAndUpdated,
        ],
        true,
      );
      const blobs = createBlobsFromTestEntries([
        testEntries.created,
        testEntries.updated,
        testEntries.renamed,
        testEntries.renamedAndUpdated,
      ]);

      expect(diffAll(blobs, origBlobs)).toEqual([
        testEntries.deleted.diff,
        testEntries.created.diff,
        testEntries.updated.diff,
        testEntries.renamed.diff,
        testEntries.renamedAndUpdated.diff,
      ]);
    });
  });
});