diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-28 18:09:57 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-28 18:09:57 +0300 |
commit | 1d9f78b3a4ecd36806890e80e513242d0fdf7b6e (patch) | |
tree | 80ea387bd0d33a19d2213be6aa30c39d67ffb9e5 /spec/serializers | |
parent | b1e352740bd52771b419829abef0a0ad73141ac1 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/serializers')
-rw-r--r-- | spec/serializers/diff_file_entity_spec.rb | 4 | ||||
-rw-r--r-- | spec/serializers/diff_file_metadata_entity_spec.rb | 10 | ||||
-rw-r--r-- | spec/serializers/diffs_entity_spec.rb | 2 | ||||
-rw-r--r-- | spec/serializers/diffs_metadata_entity_spec.rb | 58 | ||||
-rw-r--r-- | spec/serializers/paginated_diff_entity_spec.rb | 2 |
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 } |