summaryrefslogtreecommitdiff
path: root/spec/serializers
diff options
context:
space:
mode:
authorFelipe Artur <fcardozo@gitlab.com>2018-06-21 12:22:40 +0000
committerTim Zallmann <tzallmann@gitlab.com>2018-06-21 12:22:40 +0000
commit3e66795ef1ff1228906239763910b051d8afcc37 (patch)
treedf6424d9ec008f5d1da455f8465681b371c4a11e /spec/serializers
parent14e35ac9b19d358d84e0cfd167f74036937285b6 (diff)
downloadgitlab-ce-3e66795ef1ff1228906239763910b051d8afcc37.tar.gz
Changes tab VUE refactoring
Diffstat (limited to 'spec/serializers')
-rw-r--r--spec/serializers/blob_entity_spec.rb20
-rw-r--r--spec/serializers/diff_file_entity_spec.rb48
-rw-r--r--spec/serializers/diffs_entity_spec.rb28
-rw-r--r--spec/serializers/discussion_entity_spec.rb34
-rw-r--r--spec/serializers/merge_request_diff_entity_spec.rb24
-rw-r--r--spec/serializers/merge_request_user_entity_spec.rb19
6 files changed, 160 insertions, 13 deletions
diff --git a/spec/serializers/blob_entity_spec.rb b/spec/serializers/blob_entity_spec.rb
new file mode 100644
index 00000000000..dde59ff72df
--- /dev/null
+++ b/spec/serializers/blob_entity_spec.rb
@@ -0,0 +1,20 @@
+require 'spec_helper'
+
+describe BlobEntity do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :repository) }
+ let(:blob) { project.commit('master').diffs.diff_files.first.blob }
+ let(:request) { EntityRequest.new(project: project, ref: 'master') }
+
+ let(:entity) do
+ described_class.new(blob, request: request)
+ end
+
+ context 'as json' do
+ subject { entity.as_json }
+
+ it 'exposes needed attributes' do
+ expect(subject).to include(:readable_text, :url)
+ end
+ end
+end
diff --git a/spec/serializers/diff_file_entity_spec.rb b/spec/serializers/diff_file_entity_spec.rb
index 45d7c703df3..c4a6c117b76 100644
--- a/spec/serializers/diff_file_entity_spec.rb
+++ b/spec/serializers/diff_file_entity_spec.rb
@@ -9,16 +9,48 @@ describe DiffFileEntity do
let(:diff_refs) { commit.diff_refs }
let(:diff) { commit.raw_diffs.first }
let(:diff_file) { Gitlab::Diff::File.new(diff, diff_refs: diff_refs, repository: repository) }
- let(:entity) { described_class.new(diff_file) }
+ let(:entity) { described_class.new(diff_file, request: {}) }
subject { entity.as_json }
- it 'exposes correct attributes' do
- expect(subject).to include(
- :submodule, :submodule_link, :file_path,
- :deleted_file, :old_path, :new_path, :mode_changed,
- :a_mode, :b_mode, :text, :old_path_html,
- :new_path_html
- )
+ shared_examples 'diff file entity' do
+ it 'exposes correct attributes' do
+ expect(subject).to include(
+ :submodule, :submodule_link, :submodule_tree_url, :file_path,
+ :deleted_file, :old_path, :new_path, :mode_changed,
+ :a_mode, :b_mode, :text, :old_path_html,
+ :new_path_html, :highlighted_diff_lines, :parallel_diff_lines,
+ :blob, :file_hash, :added_lines, :removed_lines, :diff_refs, :content_sha,
+ :stored_externally, :external_storage, :too_large, :collapsed, :new_file,
+ :context_lines_path
+ )
+ end
+ end
+
+ context 'when there is no merge request' do
+ it_behaves_like 'diff file entity'
+ end
+
+ context 'when there is a merge request' do
+ let(:user) { create(:user) }
+ let(:request) { EntityRequest.new(project: project, current_user: user) }
+ let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
+ let(:entity) { described_class.new(diff_file, request: request, merge_request: merge_request) }
+ let(:exposed_urls) { %i(load_collapsed_diff_url edit_path view_path context_lines_path) }
+
+ it_behaves_like 'diff file entity'
+
+ it 'exposes additional attributes' do
+ expect(subject).to include(*exposed_urls)
+ expect(subject).to include(:replaced_view_path)
+ end
+
+ it 'points all urls to merge request target project' do
+ response = subject
+
+ exposed_urls.each do |attribute|
+ expect(response[attribute]).to include(merge_request.target_project.to_param)
+ end
+ end
end
end
diff --git a/spec/serializers/diffs_entity_spec.rb b/spec/serializers/diffs_entity_spec.rb
new file mode 100644
index 00000000000..19a843b0cb7
--- /dev/null
+++ b/spec/serializers/diffs_entity_spec.rb
@@ -0,0 +1,28 @@
+require 'spec_helper'
+
+describe DiffsEntity do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :repository) }
+ let(:request) { EntityRequest.new(project: project, current_user: user) }
+ let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) }
+ let(:merge_request_diffs) { merge_request.merge_request_diffs }
+
+ let(:entity) do
+ described_class.new(merge_request_diffs.first.diffs, request: request, merge_request: merge_request, merge_request_diffs: merge_request_diffs)
+ end
+
+ context 'as json' do
+ subject { entity.as_json }
+
+ it 'contains needed attributes' do
+ expect(subject).to include(
+ :real_size, :size, :branch_name,
+ :target_branch_name, :commit, :merge_request_diff,
+ :start_version, :latest_diff, :latest_version_path,
+ :added_lines, :removed_lines, :render_overflow_warning,
+ :email_patch_path, :plain_diff_path, :diff_files,
+ :merge_request_diffs
+ )
+ end
+ end
+end
diff --git a/spec/serializers/discussion_entity_spec.rb b/spec/serializers/discussion_entity_spec.rb
index 7e19e74ca00..44d8cc69d9b 100644
--- a/spec/serializers/discussion_entity_spec.rb
+++ b/spec/serializers/discussion_entity_spec.rb
@@ -19,10 +19,20 @@ describe DiscussionEntity do
end
it 'exposes correct attributes' do
- expect(subject).to include(
- :id, :expanded, :notes, :individual_note,
- :resolvable, :resolved, :resolve_path,
- :resolve_with_issue_path, :diff_discussion
+ expect(subject.keys.sort).to include(
+ :diff_discussion,
+ :expanded,
+ :id,
+ :individual_note,
+ :notes,
+ :resolvable,
+ :resolve_path,
+ :resolve_with_issue_path,
+ :resolved,
+ :discussion_path,
+ :resolved_at,
+ :for_commit,
+ :commit_id
)
end
@@ -30,7 +40,21 @@ describe DiscussionEntity do
let(:note) { create(:diff_note_on_merge_request) }
it 'exposes diff file attributes' do
- expect(subject).to include(:diff_file, :truncated_diff_lines, :image_diff_html)
+ expect(subject.keys.sort).to include(
+ :diff_file,
+ :truncated_diff_lines,
+ :position,
+ :line_code,
+ :active
+ )
+ end
+
+ context 'when diff file is a image' do
+ it 'exposes image attributes' do
+ allow(discussion).to receive(:on_image?).and_return(true)
+
+ expect(subject.keys).to include(:image_diff_html)
+ end
end
end
end
diff --git a/spec/serializers/merge_request_diff_entity_spec.rb b/spec/serializers/merge_request_diff_entity_spec.rb
new file mode 100644
index 00000000000..84f6833d88a
--- /dev/null
+++ b/spec/serializers/merge_request_diff_entity_spec.rb
@@ -0,0 +1,24 @@
+require 'spec_helper'
+
+describe MergeRequestDiffEntity do
+ let(:project) { create(:project, :repository) }
+ let(:request) { EntityRequest.new(project: project) }
+ let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) }
+ let(:merge_request_diffs) { merge_request.merge_request_diffs }
+
+ let(:entity) do
+ described_class.new(merge_request_diffs.first, request: request, merge_request: merge_request, merge_request_diffs: merge_request_diffs)
+ end
+
+ context 'as json' do
+ subject { entity.as_json }
+
+ it 'exposes needed attributes' do
+ expect(subject).to include(
+ :version_index, :created_at, :commits_count,
+ :latest, :short_commit_sha, :version_path,
+ :compare_path
+ )
+ end
+ end
+end
diff --git a/spec/serializers/merge_request_user_entity_spec.rb b/spec/serializers/merge_request_user_entity_spec.rb
new file mode 100644
index 00000000000..c91ea4aa681
--- /dev/null
+++ b/spec/serializers/merge_request_user_entity_spec.rb
@@ -0,0 +1,19 @@
+require 'spec_helper'
+
+describe MergeRequestUserEntity do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :repository) }
+ let(:request) { EntityRequest.new(project: project, current_user: user) }
+
+ let(:entity) do
+ described_class.new(user, request: request)
+ end
+
+ context 'as json' do
+ subject { entity.as_json }
+
+ it 'exposes needed attributes' do
+ expect(subject).to include(:can_fork, :can_create_merge_request, :fork_path)
+ end
+ end
+end