diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 14:59:07 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 14:59:07 +0300 |
commit | 8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca (patch) | |
tree | 544930fb309b30317ae9797a9683768705d664c4 /spec/frontend/diffs/utils/diff_file_spec.js | |
parent | 4b1de649d0168371549608993deac953eb692019 (diff) |
Add latest changes from gitlab-org/gitlab@13-7-stable-eev13.7.0-rc42
Diffstat (limited to 'spec/frontend/diffs/utils/diff_file_spec.js')
-rw-r--r-- | spec/frontend/diffs/utils/diff_file_spec.js | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/spec/frontend/diffs/utils/diff_file_spec.js b/spec/frontend/diffs/utils/diff_file_spec.js new file mode 100644 index 00000000000..2e6247b8c07 --- /dev/null +++ b/spec/frontend/diffs/utils/diff_file_spec.js @@ -0,0 +1,126 @@ +import { prepareRawDiffFile } from '~/diffs/utils/diff_file'; + +function getDiffFiles() { + return [ + { + blob: { + id: 'C0473471', + }, + file_hash: 'ABC', // This file is just a normal file + file_identifier_hash: 'ABC1', + }, + { + blob: { + id: 'C0473472', + }, + file_hash: 'DEF', // This file replaces a symlink + file_identifier_hash: 'DEF1', + a_mode: '0', + b_mode: '0755', + }, + { + blob: { + id: 'C0473473', + }, + file_hash: 'DEF', // This symlink is replaced by a file + file_identifier_hash: 'DEF2', + a_mode: '120000', + b_mode: '0', + }, + { + blob: { + id: 'C0473474', + }, + file_hash: 'GHI', // This symlink replaces a file + file_identifier_hash: 'GHI1', + a_mode: '0', + b_mode: '120000', + }, + { + blob: { + id: 'C0473475', + }, + file_hash: 'GHI', // This file is replaced by a symlink + file_identifier_hash: 'GHI2', + a_mode: '0755', + b_mode: '0', + }, + ]; +} +function makeBrokenSymlinkObject(replaced, wasSymbolic, isSymbolic, wasReal, isReal) { + return { + replaced, + wasSymbolic, + isSymbolic, + wasReal, + isReal, + }; +} + +describe('diff_file utilities', () => { + describe('prepareRawDiffFile', () => { + let files; + + beforeEach(() => { + files = getDiffFiles(); + }); + + it.each` + fileIndex | description | brokenSymlink + ${0} | ${'a file that is not symlink-adjacent'} | ${false} + ${1} | ${'a file that replaces a symlink'} | ${makeBrokenSymlinkObject(false, false, false, false, true)} + ${2} | ${'a symlink that is replaced by a file'} | ${makeBrokenSymlinkObject(true, true, false, false, false)} + ${3} | ${'a symlink that replaces a file'} | ${makeBrokenSymlinkObject(false, false, true, false, false)} + ${4} | ${'a file that is replaced by a symlink'} | ${makeBrokenSymlinkObject(true, false, false, true, false)} + `( + 'properly marks $description with the correct .brokenSymlink value', + ({ fileIndex, brokenSymlink }) => { + const preppedRaw = prepareRawDiffFile({ + file: files[fileIndex], + allFiles: files, + }); + + expect(preppedRaw.brokenSymlink).toStrictEqual(brokenSymlink); + }, + ); + + it.each` + fileIndex | id + ${0} | ${'8dcd585e-a421-4dab-a04e-6f88c81b7b4c'} + ${1} | ${'3f178b78-392b-44a4-bd7d-5d6192208a97'} + ${2} | ${'3d9e1354-cddf-4a11-8234-f0413521b2e5'} + ${3} | ${'460f005b-d29d-43c1-9a08-099a7c7f08de'} + ${4} | ${'d8c89733-6ce1-4455-ae3d-f8aad6ee99f9'} + `('sets the file id properly { id: $id } on normal diff files', ({ fileIndex, id }) => { + const preppedFile = prepareRawDiffFile({ + file: files[fileIndex], + allFiles: files, + }); + + expect(preppedFile.id).toBe(id); + }); + + it('does not set the `id` property for metadata diff files', () => { + const preppedFile = prepareRawDiffFile({ + file: files[0], + allFiles: files, + meta: true, + }); + + expect(preppedFile).not.toHaveProp('id'); + }); + + it('does not set the id property if the file is missing a `blob.id`', () => { + const fileMissingContentSha = { ...files[0] }; + + delete fileMissingContentSha.blob.id; + + const preppedFile = prepareRawDiffFile({ + file: fileMissingContentSha, + allFiles: files, + }); + + expect(preppedFile).not.toHaveProp('id'); + }); + }); +}); |