diff options
Diffstat (limited to 'spec/serializers')
-rw-r--r-- | spec/serializers/build_details_entity_spec.rb | 39 | ||||
-rw-r--r-- | spec/serializers/runner_entity_spec.rb | 14 |
2 files changed, 53 insertions, 0 deletions
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 |