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/merge_conflicts/utils_spec.js')
-rw-r--r--spec/frontend/merge_conflicts/utils_spec.js106
1 files changed, 106 insertions, 0 deletions
diff --git a/spec/frontend/merge_conflicts/utils_spec.js b/spec/frontend/merge_conflicts/utils_spec.js
new file mode 100644
index 00000000000..5bf7ecf8cfe
--- /dev/null
+++ b/spec/frontend/merge_conflicts/utils_spec.js
@@ -0,0 +1,106 @@
+import * as utils from '~/merge_conflicts/utils';
+
+describe('merge conflicts utils', () => {
+ describe('getFilePath', () => {
+ it('returns new path if they are the same', () => {
+ expect(utils.getFilePath({ new_path: 'a', old_path: 'a' })).toBe('a');
+ });
+
+ it('returns concatenated paths if they are different', () => {
+ expect(utils.getFilePath({ new_path: 'b', old_path: 'a' })).toBe('a → b');
+ });
+ });
+
+ describe('checkLineLengths', () => {
+ it('add empty lines to the left when right has more lines', () => {
+ const result = utils.checkLineLengths({ left: [1], right: [1, 2] });
+
+ expect(result.left).toHaveLength(result.right.length);
+ expect(result.left).toStrictEqual([1, { lineType: 'emptyLine', richText: '' }]);
+ });
+
+ it('add empty lines to the right when left has more lines', () => {
+ const result = utils.checkLineLengths({ left: [1, 2], right: [1] });
+
+ expect(result.right).toHaveLength(result.left.length);
+ expect(result.right).toStrictEqual([1, { lineType: 'emptyLine', richText: '' }]);
+ });
+ });
+
+ describe('getHeadHeaderLine', () => {
+ it('decorates the id', () => {
+ expect(utils.getHeadHeaderLine(1)).toStrictEqual({
+ buttonTitle: 'Use ours',
+ id: 1,
+ isHead: true,
+ isHeader: true,
+ isSelected: false,
+ isUnselected: false,
+ richText: 'HEAD//our changes',
+ section: 'head',
+ type: 'new',
+ });
+ });
+ });
+
+ describe('decorateLineForInlineView', () => {
+ it.each`
+ type | truthyProp
+ ${'new'} | ${'isHead'}
+ ${'old'} | ${'isOrigin'}
+ ${'match'} | ${'hasMatch'}
+ `(
+ 'when the type is $type decorates the line with $truthyProp set as true',
+ ({ type, truthyProp }) => {
+ expect(utils.decorateLineForInlineView({ type, rich_text: 'rich' }, 1, true)).toStrictEqual(
+ {
+ id: 1,
+ hasConflict: true,
+ isHead: false,
+ isOrigin: false,
+ hasMatch: false,
+ richText: 'rich',
+ isSelected: false,
+ isUnselected: false,
+ [truthyProp]: true,
+ },
+ );
+ },
+ );
+ });
+
+ describe('getLineForParallelView', () => {
+ it.todo('should return a proper value');
+ });
+
+ describe('getOriginHeaderLine', () => {
+ it('decorates the id', () => {
+ expect(utils.getOriginHeaderLine(1)).toStrictEqual({
+ buttonTitle: 'Use theirs',
+ id: 1,
+ isHeader: true,
+ isOrigin: true,
+ isSelected: false,
+ isUnselected: false,
+ richText: 'origin//their changes',
+ section: 'origin',
+ type: 'old',
+ });
+ });
+ });
+ describe('setInlineLine', () => {
+ it.todo('should return a proper value');
+ });
+ describe('setParallelLine', () => {
+ it.todo('should return a proper value');
+ });
+ describe('decorateFiles', () => {
+ it.todo('should return a proper value');
+ });
+ describe('restoreFileLinesState', () => {
+ it.todo('should return a proper value');
+ });
+ describe('markLine', () => {
+ it.todo('should return a proper value');
+ });
+});