From 9dc93a4519d9d5d7be48ff274127136236a3adb3 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 20 Apr 2021 23:50:22 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-11-stable-ee --- spec/lib/gitlab/word_diff/chunk_collection_spec.rb | 23 +++++++++++++ spec/lib/gitlab/word_diff/parser_spec.rb | 40 +++++++++++++++++----- 2 files changed, 55 insertions(+), 8 deletions(-) (limited to 'spec/lib/gitlab/word_diff') diff --git a/spec/lib/gitlab/word_diff/chunk_collection_spec.rb b/spec/lib/gitlab/word_diff/chunk_collection_spec.rb index aa837f760c1..73e9ff3974a 100644 --- a/spec/lib/gitlab/word_diff/chunk_collection_spec.rb +++ b/spec/lib/gitlab/word_diff/chunk_collection_spec.rb @@ -41,4 +41,27 @@ RSpec.describe Gitlab::WordDiff::ChunkCollection do expect(collection.content).to eq('') end end + + describe '#marker_ranges' do + let(:chunks) do + [ + Gitlab::WordDiff::Segments::Chunk.new(' Hello '), + Gitlab::WordDiff::Segments::Chunk.new('-World'), + Gitlab::WordDiff::Segments::Chunk.new('+GitLab'), + Gitlab::WordDiff::Segments::Chunk.new('+!!!') + ] + end + + it 'returns marker ranges for every chunk with changes' do + chunks.each { |chunk| collection.add(chunk) } + + expect(collection.marker_ranges).to eq( + [ + Gitlab::MarkerRange.new(6, 10, mode: :deletion), + Gitlab::MarkerRange.new(11, 16, mode: :addition), + Gitlab::MarkerRange.new(17, 19, mode: :addition) + ] + ) + end + end end diff --git a/spec/lib/gitlab/word_diff/parser_spec.rb b/spec/lib/gitlab/word_diff/parser_spec.rb index 3aeefb57a02..e793e44fd45 100644 --- a/spec/lib/gitlab/word_diff/parser_spec.rb +++ b/spec/lib/gitlab/word_diff/parser_spec.rb @@ -36,15 +36,26 @@ RSpec.describe Gitlab::WordDiff::Parser do aggregate_failures do expect(diff_lines.count).to eq(7) - expect(diff_lines.map(&:to_hash)).to match_array( + expect(diff_lines.map { |line| diff_line_attributes(line) }).to eq( [ - a_hash_including(index: 0, old_pos: 1, new_pos: 1, text: '', type: nil), - a_hash_including(index: 1, old_pos: 2, new_pos: 2, text: 'Unchanged line', type: nil), - a_hash_including(index: 2, old_pos: 3, new_pos: 3, text: '', type: nil), - a_hash_including(index: 3, old_pos: 4, new_pos: 4, text: 'Old changeNew addition unchanged content', type: nil), - a_hash_including(index: 4, old_pos: 50, new_pos: 50, text: '@@ -50,14 +50,13 @@', type: 'match'), - a_hash_including(index: 5, old_pos: 50, new_pos: 50, text: 'First change same same same_removed_added_end of the line', type: nil), - a_hash_including(index: 6, old_pos: 51, new_pos: 51, text: '', type: nil) + { index: 0, old_pos: 1, new_pos: 1, text: '', type: nil, marker_ranges: [] }, + { index: 1, old_pos: 2, new_pos: 2, text: 'Unchanged line', type: nil, marker_ranges: [] }, + { index: 2, old_pos: 3, new_pos: 3, text: '', type: nil, marker_ranges: [] }, + { index: 3, old_pos: 4, new_pos: 4, text: 'Old changeNew addition unchanged content', type: nil, + marker_ranges: [ + Gitlab::MarkerRange.new(0, 9, mode: :deletion), + Gitlab::MarkerRange.new(10, 21, mode: :addition) + ] }, + + { index: 4, old_pos: 50, new_pos: 50, text: '@@ -50,14 +50,13 @@', type: 'match', marker_ranges: [] }, + { index: 5, old_pos: 50, new_pos: 50, text: 'First change same same same_removed_added_end of the line', type: nil, + marker_ranges: [ + Gitlab::MarkerRange.new(0, 11, mode: :addition), + Gitlab::MarkerRange.new(28, 35, mode: :deletion), + Gitlab::MarkerRange.new(36, 41, mode: :addition) + ] }, + + { index: 6, old_pos: 51, new_pos: 51, text: '', type: nil, marker_ranges: [] } ] ) end @@ -64,4 +75,17 @@ RSpec.describe Gitlab::WordDiff::Parser do it { is_expected.to eq([]) } end end + + private + + def diff_line_attributes(diff_line) + { + index: diff_line.index, + old_pos: diff_line.old_pos, + new_pos: diff_line.new_pos, + text: diff_line.text, + type: diff_line.type, + marker_ranges: diff_line.marker_ranges + } + end end -- cgit v1.2.3