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:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-07-28 18:09:57 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-07-28 18:09:57 +0300
commit1d9f78b3a4ecd36806890e80e513242d0fdf7b6e (patch)
tree80ea387bd0d33a19d2213be6aa30c39d67ffb9e5 /spec/serializers
parentb1e352740bd52771b419829abef0a0ad73141ac1 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/serializers')
-rw-r--r--spec/serializers/diff_file_entity_spec.rb4
-rw-r--r--spec/serializers/diff_file_metadata_entity_spec.rb10
-rw-r--r--spec/serializers/diffs_entity_spec.rb2
-rw-r--r--spec/serializers/diffs_metadata_entity_spec.rb58
-rw-r--r--spec/serializers/paginated_diff_entity_spec.rb2
5 files changed, 64 insertions, 12 deletions
diff --git a/spec/serializers/diff_file_entity_spec.rb b/spec/serializers/diff_file_entity_spec.rb
index c15c9324f94..ebfb21c4311 100644
--- a/spec/serializers/diff_file_entity_spec.rb
+++ b/spec/serializers/diff_file_entity_spec.rb
@@ -82,7 +82,7 @@ RSpec.describe DiffFileEntity do
describe '#is_fully_expanded' do
context 'file with a conflict' do
- let(:options) { { conflicts: { diff_file.new_path => double(diff_lines_for_serializer: []) } } }
+ let(:options) { { conflicts: { diff_file.new_path => double(diff_lines_for_serializer: [], conflict_type: :both_modified) } } }
it 'returns false' do
expect(diff_file).not_to receive(:fully_expanded?)
@@ -90,4 +90,6 @@ RSpec.describe DiffFileEntity do
end
end
end
+
+ it_behaves_like 'diff file with conflict_type'
end
diff --git a/spec/serializers/diff_file_metadata_entity_spec.rb b/spec/serializers/diff_file_metadata_entity_spec.rb
index 3ce1ea49677..6f76d812177 100644
--- a/spec/serializers/diff_file_metadata_entity_spec.rb
+++ b/spec/serializers/diff_file_metadata_entity_spec.rb
@@ -4,8 +4,9 @@ require 'spec_helper'
RSpec.describe DiffFileMetadataEntity do
let(:merge_request) { create(:merge_request_with_diffs) }
- let(:raw_diff_file) { merge_request.merge_request_diff.diffs.raw_diff_files.first }
- let(:entity) { described_class.new(raw_diff_file) }
+ let(:diff_file) { merge_request.merge_request_diff.diffs.raw_diff_files.first }
+ let(:options) { {} }
+ let(:entity) { described_class.new(diff_file, options) }
context 'as json' do
subject { entity.as_json }
@@ -20,8 +21,11 @@ RSpec.describe DiffFileMetadataEntity do
:deleted_file,
:submodule,
:file_identifier_hash,
- :file_hash
+ :file_hash,
+ :conflict_type
)
end
+
+ it_behaves_like 'diff file with conflict_type'
end
end
diff --git a/spec/serializers/diffs_entity_spec.rb b/spec/serializers/diffs_entity_spec.rb
index ea58fcb194e..aef7d3732f8 100644
--- a/spec/serializers/diffs_entity_spec.rb
+++ b/spec/serializers/diffs_entity_spec.rb
@@ -93,7 +93,7 @@ RSpec.describe DiffsEntity do
let(:diff_file_without_conflict) { diff_files.to_a[-2] }
let(:resolvable_conflicts) { true }
- let(:conflict_file) { double(path: diff_file_with_conflict.new_path) }
+ let(:conflict_file) { double(path: diff_file_with_conflict.new_path, conflict_type: :both_modified) }
let(:conflicts) { double(conflicts: double(files: [conflict_file]), can_be_resolved_in_ui?: resolvable_conflicts) }
let(:merge_ref_head_diff) { true }
diff --git a/spec/serializers/diffs_metadata_entity_spec.rb b/spec/serializers/diffs_metadata_entity_spec.rb
index b1cbe7e216e..3311b434ce5 100644
--- a/spec/serializers/diffs_metadata_entity_spec.rb
+++ b/spec/serializers/diffs_metadata_entity_spec.rb
@@ -9,12 +9,17 @@ RSpec.describe DiffsMetadataEntity do
let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) }
let(:merge_request_diffs) { merge_request.merge_request_diffs }
let(:merge_request_diff) { merge_request_diffs.last }
+ let(:options) { {} }
let(:entity) do
- described_class.new(merge_request_diff.diffs,
- request: request,
- merge_request: merge_request,
- merge_request_diffs: merge_request_diffs)
+ described_class.new(
+ merge_request_diff.diffs,
+ options.merge(
+ request: request,
+ merge_request: merge_request,
+ merge_request_diffs: merge_request_diffs
+ )
+ )
end
context 'as json' do
@@ -38,20 +43,61 @@ RSpec.describe DiffsMetadataEntity do
end
describe 'diff_files' do
- it 'returns diff files metadata' do
- raw_diff_files = merge_request_diff.diffs.raw_diff_files
+ let!(:raw_diff_files) { merge_request_diff.diffs.raw_diff_files }
+ before do
expect_next_instance_of(Gitlab::Diff::FileCollection::MergeRequestDiff) do |instance|
# Use lightweight version instead. Several methods delegate to it, so putting a 5
# calls limit.
expect(instance).to receive(:raw_diff_files).at_most(5).times.and_call_original
expect(instance).not_to receive(:diff_files)
end
+ end
+ it 'returns diff files metadata' do
payload = DiffFileMetadataEntity.represent(raw_diff_files).as_json
expect(subject[:diff_files]).to eq(payload)
end
+
+ context 'when merge_ref_head_diff and allow_tree_conflicts options are set' do
+ let(:conflict_file) { double(path: raw_diff_files.first.new_path, conflict_type: :both_modified) }
+ let(:conflicts) { double(conflicts: double(files: [conflict_file]), can_be_resolved_in_ui?: false) }
+
+ before do
+ allow(MergeRequests::Conflicts::ListService).to receive(:new).and_return(conflicts)
+ end
+
+ context 'when merge_ref_head_diff is true and allow_tree_conflicts is false' do
+ let(:options) { { merge_ref_head_diff: true, allow_tree_conflicts: false } }
+
+ it 'returns diff files metadata without conflicts' do
+ payload = DiffFileMetadataEntity.represent(raw_diff_files).as_json
+
+ expect(subject[:diff_files]).to eq(payload)
+ end
+ end
+
+ context 'when merge_ref_head_diff is false and allow_tree_conflicts is true' do
+ let(:options) { { merge_ref_head_diff: false, allow_tree_conflicts: true } }
+
+ it 'returns diff files metadata without conflicts' do
+ payload = DiffFileMetadataEntity.represent(raw_diff_files).as_json
+
+ expect(subject[:diff_files]).to eq(payload)
+ end
+ end
+
+ context 'when merge_ref_head_diff and allow_tree_conflicts are true' do
+ let(:options) { { merge_ref_head_diff: true, allow_tree_conflicts: true } }
+
+ it 'returns diff files metadata with conflicts' do
+ payload = DiffFileMetadataEntity.represent(raw_diff_files, conflicts: { conflict_file.path => conflict_file }).as_json
+
+ expect(subject[:diff_files]).to eq(payload)
+ end
+ end
+ end
end
end
end
diff --git a/spec/serializers/paginated_diff_entity_spec.rb b/spec/serializers/paginated_diff_entity_spec.rb
index 5667a96770f..db8bf92cbf5 100644
--- a/spec/serializers/paginated_diff_entity_spec.rb
+++ b/spec/serializers/paginated_diff_entity_spec.rb
@@ -36,7 +36,7 @@ RSpec.describe PaginatedDiffEntity do
let(:diff_file_without_conflict) { diff_files.first }
let(:resolvable_conflicts) { true }
- let(:conflict_file) { double(path: diff_file_with_conflict.new_path) }
+ let(:conflict_file) { double(path: diff_file_with_conflict.new_path, conflict_type: :both_modified) }
let(:conflicts) { double(conflicts: double(files: [conflict_file]), can_be_resolved_in_ui?: resolvable_conflicts) }
let(:merge_ref_head_diff) { true }