diff options
author | Felipe Artur <fcardozo@gitlab.com> | 2018-06-21 12:22:40 +0000 |
---|---|---|
committer | Tim Zallmann <tzallmann@gitlab.com> | 2018-06-21 12:22:40 +0000 |
commit | 3e66795ef1ff1228906239763910b051d8afcc37 (patch) | |
tree | df6424d9ec008f5d1da455f8465681b371c4a11e /spec/serializers | |
parent | 14e35ac9b19d358d84e0cfd167f74036937285b6 (diff) | |
download | gitlab-ce-3e66795ef1ff1228906239763910b051d8afcc37.tar.gz |
Changes tab VUE refactoring
Diffstat (limited to 'spec/serializers')
-rw-r--r-- | spec/serializers/blob_entity_spec.rb | 20 | ||||
-rw-r--r-- | spec/serializers/diff_file_entity_spec.rb | 48 | ||||
-rw-r--r-- | spec/serializers/diffs_entity_spec.rb | 28 | ||||
-rw-r--r-- | spec/serializers/discussion_entity_spec.rb | 34 | ||||
-rw-r--r-- | spec/serializers/merge_request_diff_entity_spec.rb | 24 | ||||
-rw-r--r-- | spec/serializers/merge_request_user_entity_spec.rb | 19 |
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 |