Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/diffs/diff_file_spec.js')
-rw-r--r--spec/frontend/diffs/diff_file_spec.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/spec/frontend/diffs/diff_file_spec.js b/spec/frontend/diffs/diff_file_spec.js
new file mode 100644
index 00000000000..5d74760ef66
--- /dev/null
+++ b/spec/frontend/diffs/diff_file_spec.js
@@ -0,0 +1,60 @@
+import { prepareRawDiffFile } from '~/diffs/diff_file';
+
+const DIFF_FILES = [
+ {
+ file_hash: 'ABC', // This file is just a normal file
+ },
+ {
+ file_hash: 'DEF', // This file replaces a symlink
+ a_mode: '0',
+ b_mode: '0755',
+ },
+ {
+ file_hash: 'DEF', // This symlink is replaced by a file
+ a_mode: '120000',
+ b_mode: '0',
+ },
+ {
+ file_hash: 'GHI', // This symlink replaces a file
+ a_mode: '0',
+ b_mode: '120000',
+ },
+ {
+ file_hash: 'GHI', // This file is replaced by a symlink
+ 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', () => {
+ 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: DIFF_FILES[fileIndex],
+ allFiles: DIFF_FILES,
+ });
+
+ expect(preppedRaw.brokenSymlink).toStrictEqual(brokenSymlink);
+ },
+ );
+ });
+});