From 47a0276e53de4635df43124607ac1a101d6f1b70 Mon Sep 17 00:00:00 2001 From: "Z.J. van de Weg" Date: Tue, 23 May 2017 17:10:07 +0200 Subject: Initial implementation for real time job view Added the needed keys and paths to a new entity, BuildDetailsEntity. Not renaming BuildEntity to BuildBasicEntity on explicit request. Most code now has test coverage, but not all. This will be added on later commits on this branch. Resolves gitlab-org/gitlab-ce#31397 --- spec/serializers/build_details_entity_spec.rb | 39 +++++++++++++++++++++++++++ spec/serializers/runner_entity_spec.rb | 14 ++++++++++ 2 files changed, 53 insertions(+) create mode 100644 spec/serializers/build_details_entity_spec.rb create mode 100644 spec/serializers/runner_entity_spec.rb (limited to 'spec/serializers') diff --git a/spec/serializers/build_details_entity_spec.rb b/spec/serializers/build_details_entity_spec.rb new file mode 100644 index 00000000000..4b827a0994c --- /dev/null +++ b/spec/serializers/build_details_entity_spec.rb @@ -0,0 +1,39 @@ +require 'spec_helper' + +describe BuildDetailsEntity do + it 'inherits from BuildEntity' do + expect(described_class).to be < BuildEntity + end + + describe '#as_json' do + let(:project) { create(:project, :repository) } + let(:user) { create(:user) } + let!(:build) { create(:ci_build, :failed, project: project) } + let(:request) { double('request') } + let(:entity) { described_class.new(build, request: request, current_user: user, project: project) } + subject { entity.as_json } + + before do + allow(request).to receive(:current_user).and_return(user) + + project.add_master(user) + end + + context 'when the user has access to issues and merge requests' do + let!(:merge_request) { create(:merge_request, source_project: project) } + + it 'contains the needed key value pairs' do + expect(subject).to include(:coverage, :erased_at, :duration) + expect(subject).to include(:artifacts, :runner, :pipeline) + expect(subject).to include(:raw_path, :merge_request_path, :new_issue_path) + end + end + + context 'when the user can only read the build' do + it "won't display the paths to issues and merge requests" do + expect(subject['new_issue_path']).to be_nil + expect(subject['merge_request_path']).to be_nil + end + end + end +end diff --git a/spec/serializers/runner_entity_spec.rb b/spec/serializers/runner_entity_spec.rb new file mode 100644 index 00000000000..eb662a10b7e --- /dev/null +++ b/spec/serializers/runner_entity_spec.rb @@ -0,0 +1,14 @@ +require 'spec_helper' + +describe RunnerEntity do + let(:runner) { build(:ci_runner) } + let(:entity) { described_class.represent(runner) } + + describe '#as_json' do + subject { entity.as_json } + + it 'contains required fields' do + expect(subject).to include(:id, :name, :description) + end + end +end -- cgit v1.2.1