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>2019-10-10 03:06:44 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-10-10 03:06:44 +0300
commit308146dc398fd4c13453048105498018459e0985 (patch)
treed843eb63c1672e4b18c483907e2cd4aa7fca708e /spec/lib/gitlab/diff
parent4b28d5ae770c6bd332283a3f13ceae06329c409b (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/gitlab/diff')
-rw-r--r--spec/lib/gitlab/diff/position_collection_spec.rb77
1 files changed, 77 insertions, 0 deletions
diff --git a/spec/lib/gitlab/diff/position_collection_spec.rb b/spec/lib/gitlab/diff/position_collection_spec.rb
new file mode 100644
index 00000000000..de0e631ab03
--- /dev/null
+++ b/spec/lib/gitlab/diff/position_collection_spec.rb
@@ -0,0 +1,77 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Diff::PositionCollection do
+ let(:merge_request) { build(:merge_request) }
+
+ def build_text_position(attrs = {})
+ attributes = {
+ old_path: "files/ruby/popen.rb",
+ new_path: "files/ruby/popen.rb",
+ old_line: nil,
+ new_line: 14,
+ diff_refs: merge_request.diff_refs
+ }.merge(attrs)
+
+ Gitlab::Diff::Position.new(attributes)
+ end
+
+ def build_image_position(attrs = {})
+ attributes = {
+ old_path: "files/images/any_image.png",
+ new_path: "files/images/any_image.png",
+ width: 10,
+ height: 10,
+ x: 1,
+ y: 1,
+ diff_refs: merge_request.diff_refs,
+ position_type: "image"
+ }.merge(attrs)
+
+ Gitlab::Diff::Position.new(attributes)
+ end
+
+ let(:text_position) { build_text_position }
+ let(:folded_text_position) { build_text_position(old_line: 1, new_line: 1) }
+ let(:image_position) { build_image_position }
+ let(:head_sha) { merge_request.diff_head_sha }
+
+ let(:collection) do
+ described_class.new([text_position, folded_text_position, image_position], head_sha)
+ end
+
+ describe '#to_a' do
+ it 'returns all positions' do
+ expect(collection.to_a).to eq([text_position, folded_text_position, image_position])
+ end
+ end
+
+ describe '#unfoldable' do
+ it 'returns unfoldable diff positions' do
+ expect(collection.unfoldable).to eq([folded_text_position])
+ end
+
+ context 'when given head_sha does not match with positions head_sha' do
+ let(:head_sha) { 'unknown' }
+
+ it 'returns no position' do
+ expect(collection.unfoldable).to be_empty
+ end
+ end
+ end
+
+ describe '#concat' do
+ let(:new_text_position) { build_text_position(old_line: 1, new_line: 1) }
+
+ it 'returns a Gitlab::Diff::Position' do
+ expect(collection.concat([new_text_position])).to be_a(described_class)
+ end
+
+ it 'concatenates the new position to the collection' do
+ collection.concat([new_text_position])
+
+ expect(collection.to_a).to eq([text_position, folded_text_position, image_position, new_text_position])
+ end
+ end
+end